AI Briefing

Amazon DocumentDB로 미리캔버스 성능 50%, 비용 30% 개선

·2026.04.22 16:28

핵심 내용

미리캔버스가 MongoDB Atlas를 버리고 DocumentDB로 p50 지연시간을 절반으로 줄이고 비용도 30% 낮췄다.

1 / 2

자세히 보기

미리캔버스는 실시간 협업 디자인 플랫폼의 DB 병목을 해결하기 위해 MongoDB Atlas에서 Amazon DocumentDB 8.0으로 전환했다.

기존 Atlas 환경은 약 3,000 IOPS 상한에 자주 걸렸고, WiredTiger의 checkpoint와 dirty cache flush가 겹칠 때 쓰기 스파이크와 복제 지연이 발생했다. 평균적인 쓰기 워크로드에서는 provisioned IOPS를 쓰기엔 비용 부담이 커서, IOPS 병목 해소, AWS 네이티브 통합, 비용 최적화를 목표로 전환을 추진했다.

전환 전에는 DocumentDB의 아키텍처와 MongoDB와의 차이를 먼저 검증했다. DocumentDB는 MongoDB를 그대로 호스팅하는 서비스가 아니라 Aurora 기반의 MongoDB 호환 엔진이며, 스토리지는 3개 AZ에 걸친 6개 복사본 쿼럼 구조로 동작한다. Replica도 Primary를 네트워크로 복제받는 대신 공유 스토리지를 직접 읽기 때문에, 복제 지연이 Atlas 37ms vs DocumentDB 2.5ms 수준으로 크게 줄었다.

호환성 검증에서는 프로덕션 쿼리를 직접 분석하고 mongodump / mongorestore로 개발 데이터를 적재한 뒤 explain으로 하나씩 확인했다. 이 과정에서 mongotools 100.9.5로 다운그레이드, $set aggregate를 $addFields로 대체, $lookup 내부 파이프라인을 분리하는 등 비호환 구간을 정리했고, Spring에서는 Custom @Conditional Annotation으로 MongoDB와 DocumentDB 환경을 분기했다.

성능과 저장 효율도 함께 확인했다. DocumentDB 8.0 + zstd의 평균 문서 크기는 700B, Atlas zstd는 550B였고, 11억 건 기준으로 약 165GB의 스토리지 차이가 났다. 대신 IO-Optimized 구성에서는 IO 비용이 인스턴스에 포함돼 대형 워크로드의 운영 단순성이 높았다.

POC 성능 테스트에서는 db.r6g.2xlarge 3대 구성으로 k6 stress test를 수행했다.

  • Stress QPS: 1,479/s vs Atlas 1,432/s
  • avg query latency: 1.7ms vs 1.8ms
  • p95 query latency: 4.6ms vs 8.9ms
  • Max Replica lag: 25ms vs 300ms

처리량과 평균 지연은 비슷했고, tail latency와 replication lag은 DocumentDB가 더 좋았다. 쓰기 성능은 Atlas가 약간 우세했지만, 실시간 편집 서비스에서는 안정성과 일관성이 더 중요했고 전환을 결정했다.

마이그레이션은 AWS DMS로 진행했다. 전체 데이터는 Full Load로 적재하고, Task와 Thread 단위로 parallel loading을 적용했으며, 다운타임 전까지는 CDC로 MongoDB와 DocumentDB를 동기화했다. 처음에는 partitions-auto를 썼지만 충분한 처리량이 나오지 않아, 결국 range 타입으로 균일한 경곗값을 수동 설정해 11억 건 적재를 처리량 저하 없이 마쳤다.

가장 큰 변수는 CDC 손실이었다. changeStream 처리가 느려져 oplog window를 넘기면서 일부 변경분이 유실됐고, 일정상 Full Load를 처음부터 다시 돌릴 수 없었다. 결국 대용량 컬렉션은 직접 구현한 CDC 파이프라인으로 replay하고, 나머지는 ObjectId 타임스탬프, updatedDate, 백업 컬렉션을 활용해 유형별로 수동 복구했다.

전환 시점에는 DB 연결 문자열을 AWS Secrets Manager로 관리해 애플리케이션 재배포 없이 엔드포인트를 바꿨고, 서버 재기동 후 전체 QA로 마무리했다. 운영 환경은 db.r6g.2xlarge 3대와 IO-Optimized(iopt1) 스토리지로 구성했으며, failover는 약 30초 이내로 복구됐다.

최종 성과는 다음과 같다.

  • p50 응답속도: 4.2ms → 2.1ms, 50% 개선
  • Replication lag: 37ms → 2.5ms, 93% 감소
  • 인프라 비용: 약 30% 절감
  • IOPS 상한: 3,000 제한 해소

핵심 교훈은 분명하다. DocumentDB는 managed MongoDB가 아니므로 인덱스와 쿼리 전략을 다시 설계해야 하고, 단일 Writer의 write ceiling을 반드시 검증해야 하며, DMS CDC는 프로덕션 쓰기 부하에서 미리 시험해야 한다. 데이터 감사 컬럼과 백업 체계는 마이그레이션 실패 시 마지막 안전망이 된다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.