컬리, MySQL 병목 해결 위해 AWS OpenSearch 도입… 레이턴시 17초에서 200ms로 개선
핵심 내용
컬리가 MySQL 분산 마이그레이션 중 발생한 병목을 해결하기 위해 5일 만에 AWS OpenSearch를 도입해 레이턴시를 17초에서 200ms로 개선했다.
자세히 보기
컬리 후기 서비스 팀은 MySQL 5.6에서 5.7로의 분산 마이그레이션 과정에서 과도한 in 절로 인한 filesort 오버헤드가 발생해 레이턴시가 2~3배 증가하는 위기를 겪었다. Amazon Aurora의 수명 종료(EOL) 임박으로 기존 대안들이 불가능해지자, 팀은 예정된 AWS OpenSearch 도입을 5일 만에 긴급 진행하기로 결정했다.
아키텍처 변화와 도입 전략
성능 문제 해결을 위해 CQRS 패턴과 Materialized View 패턴을 적용해 역정규화된 데이터를 OpenSearch에 저장하는 구조로 변경했다. 원천 데이터 저장과 검색 인덱싱을 분리하기 위해 EventDriven Architecture를 채택했으며, 이를 통해 사용자 경험 저하와 시스템 통합 문제를 방지했다. 성능 테스트 결과, AWS OpenSearch 4xlarge 인스턴스에서 1200 RPS, CPU 70~80% 구간이면 상용 환경에 충분하다고 판단했다.
운영 배포 및 성과
Canary 배포를 거쳐 5일 만에 모든 운영 인스턴스에 적용을 완료했다. 배포 후 Latency 지표가 기존 최대 17초에서 200ms로 대폭 감소했으며, MySQL 지표도 안정화되었다. 또한 은전한닢 형태소 분석기의 오프셋 역전 현상을 해결하기 위해 decompound: true, deinflect: false 등의 옵션을 조정해 검색 정확도를 확보했다.
데이터 기반 서비스 개선
OpenSearch 대시보드를 활용해 상품별 후기 분포도, 이미지 포함 후기 비율, 회원 등급별 데이터 등을 시각화했다. 이를 통해 기획자와 개발자가 데이터 기반으로 소통하며 서비스 방향성을 설정할 수 있게 되었으며, 후기 적립금 자동화 지급 과정에서의 불량 후기 선별 및 절감 효과도 모니터링하고 있다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.