데이터베이스 가용성을 진지하게 들여다보면 결국 같은 질문 하나로 돌아온다. "방금 커밋한 데이터를, 서버 한 대가 죽어도 잃지 않으려면 누군가는 그 데이터의 사본(copy)을 들고 있어야 한다. 그 사본을 언제, 얼마나 많이, 어디에 둘 것인가." 이 질문에 대한 답이 갈라지는 지점이 바로 동기 복제냐 비동기 복제냐, 단일 AZ냐 다중 AZ냐, 2-copy냐 6-copy 쿼럼이냐다. AWS의 RDS Multi-AZ, Aurora, ElastiCache는 겉보기엔 그냥 "체크박스 하나로 켜는 고가용성 옵션"처럼 보이지만, 그 밑에는 1970년대부터 쌓여 온 분산 시스템 이론 — 복제, 합의(consensus), 쿼럼, CAP — 이 그대로 깔려 있다. 오늘은 이 체크박스들이 어떤 트레이드오프를 내부에서 결정하고 있는지, 왜 Aurora가 전통적 복제와 근본적으로 다른 스토리지 설계를 택했는지, 페일오버 시간(RTO)이 어디서 결정되는지를 판다.
DOP 시험에서 Multi-AZ는 "운영 우수성·복원력"의 토대로, "이 DB의 RTO를 60초에서 30초로 줄이려면", "읽기 부하를 분산하면서 동시에 HA를 보장하려면", "페일오버 시 애플리케이션 커넥션이 끊기지 않게 하려면" 같은 시나리오로 반복 등장한다. 각 선택지가 동기/비동기·쿼럼·엔드포인트 중 무엇을 건드리는지 읽어내면 답이 보인다.
복제(replication)의 본질은 단순하다