이번에는 Document DB에 대해 한번 알아보겠다. Document DB는 MongoDB 를 완벽하게 호환가능하며 NoSQL DB 이다. NoSQL 답게 스키마의 구조가 정해져 있지 않으며 JSON 형태로 데이터를 저장한다.
등등 많은 기능들을 지원한다.
Document DB는 서버리스 형태가 아닌 클러스터로 움직인다.

클러스터로 움직인다는 것은 스토리지와 컴퓨팅 자원을 분리하여 동작한다는것이다.
클러스터의 구성요소는 다음과 같다.
인스턴스(컴퓨팅)과 스토리지 계층을 분리하여 운영한다면 무슨 장점이 있을까?
인스턴스와 스토리지 리소스를 독립적으로 확장할 수 있는 장점이 제일 크게 와 닫는거같다. 인스턴스+스토리지 형식으로 되어있다면 용량을 늘리고 싶어도 인스턴스도 같이 늘려야 하는 장점이 있다. 이는 곧 비용상승으로 좋은 경험을 주지 못하는거 같다.

평소의 Document DB는 Primary 인스턴스와 Replica 인스턴스가 서로 비동기 복제를 하여 데이터를 관리한다.

하지만 Primary 인스턴스에 장애가 발생하여 사용하지 못하는 상황이 발생한다면...

다음과 같이 N개의 Replica 인스턴스중 하나를 Primary로 승격시켜 자동으로 Faliover가 된다. (각 읽기 복제본에 우선 순위를 정해 우선순위가 가장 낮은 복제본이 Primary 로 승격된다.)
Document DB 와 MongoDB 는 어떤 차이점이 있는가..?
| 기능 | AWS DocumentDB | MongoDB |
|---|---|---|
| 트랜잭션 | ❌ 미지원 | ✅ 지원 (MongoDB 4.0+에서 multi-document ACID 트랜잭션) |
| Change Streams | ❌ 미지원 | ✅ 지원 |
| Oplog (운영 로그) | ❌ 미지원 | ✅ 지원 |
| Sharding (샤딩) | ❌ 미지원 | ✅ 지원 |
| 스토리지 자동 확장 | ✅ 지원 | ❌ 직접 관리 필요 |
| 읽기 확장성 | ✅ Replica 지원 (최대 15개) | ✅ Replica Set 지원 |
| 백업 및 복구 | ✅ 자동 백업, PITR 지원 | ❌ 직접 설정 필요 |
| IAM 인증 | ✅ 지원 | ❌ 미지원 |
| AWS 네이티브 서비스 통합 | ✅ (CloudWatch, CloudTrail, IAM 등) | ❌ 없음 |
저도 프로젝트 할때 MongoDB 와 DocumentDB 둘다 사용해본 입장으로서..MongoDB는 말그대로 물리서버에 돌아가고 Replica set 등 많은 옵션들을 일일이 설정해야한다. 반대로 DocumentDB는 딸깍 한번이면 만들어지고 자동으로 다 해준다. 물론 돈을 내야한다는 점이 있다.