피드로 돌아가기
올리브영 테크블로그Backend
원문 읽기
Monstache로 DocumentDB와 OpenSearch 동기화하기
올리브영이 DocumentDB 변경 스트림을 감지하는 Monstache 도입으로 OpenSearch 실시간 동기화를 구현해 대량 상품 데이터 조회 부하 해결
AI 요약
Context
올리브영의 상품 데이터는 오프라인 매장과 온라인몰에서 분산 관리되고 있었으며, 통합된 데이터를 제공하는 시스템이 필요했다. AWS DocumentDB에 역정규화된 상품 데이터를 적재했으나 부하테스트 결과 필요한 TPS에 미치지 못해 대안이 필요했다.
Technical Solution
- MongoDB oplog 변경 감지를 통한 실시간 동기화: Monstache의 change-stream-namespaces 옵션으로 DocumentDB의 oplog 감시해 변경된 데이터를 OpenSearch로 자동 반영
- 정규식 기반 필터링 적용: 특정 데이터베이스 및 컬렉션만 동기화하도록 설정
- AWS 인증 방식 변경: POC 단계 strategy=0(access/secret key)에서 운영 환경 strategy=4(IAM Role)로 전환하여 보안 강화
- DocumentDB 연결 설정 최적화: readPreference=primary 옵션을 포함하고 변경 스트림 기능 사전 활성화
- 타임아웃 설정 조정: elasticsearch-healthcheck-timeout 기본값 5초에서 200초로 변경해 OpenSearch 응답 지연 문제 해결
- 웹서버 기능 활용: --enable-http-server 옵션으로 /stats 엔드포인트를 통해 동기화 상태 실시간 확인
Key Takeaway
단일 개발자가 MongoDB-Elasticsearch 동기화를 구현해야 할 때 오픈소스 솔루션을 선택하면 복잡한 자체 개발 없이 안정적인 시스템을 구축할 수 있다. 특히 DocumentDB의 변경 스트림 활성화와 IAM Role 기반 인증으로 보안과 안정성을 동시에 확보할 수 있다.
실천 포인트
AWS DocumentDB와 OpenSearch를 함께 사용하는 팀에서 Monstache를 도입할 때, DocumentDB 변경 스트림을 사전 활성화하고 readPreference=primary로 연결한 후 elasticsearch-healthcheck-timeout을 네트워크 상황에 맞게 조정(권장값 200초)하면 안정적인 실시간 동기화를 구현할 수 있다. 또한 운영 환경에서는 IAM Role(strategy=4)을 사용해 access/secret key 관리 부담을 제거할 수 있다.