목차
개요
- 서비스 전반에 걸친 최적화 작업의 기록입니다.
배경
- 저는 회사에서 ‘코크플레이‘라는 이커머스 서비스 운영에 참여하고 있습니다. (링크)
- 위 서비스는 각종 기술부채로 인해 상품목록 조회, 결제 등 핵심적인 기능의 속도가 느렸으며 이벤트로 트래픽이 몰리는 날에는 서비스 전체에 장애가 발생했습니다.
- 이에 대응하여 안정적인 서비스 운영을 위해 서비스 최적화 작업을 진행했습니다.
장애 분석
-
분석 결과 주요 장애 원인은 RDB였습니다.
- 이벤트로 대량의 트래픽이 유입될 때 WAS, Redis 등의 서버는 정상적으로 작동했지만 RDB만 CPU 사용량이 100%를 찍으면서 장애가 발생했습니다.
- 특히 이커머스 서비스 ‘코크플레이’는 현재 1대의 MySQL 서버만 사용하고 있어 장애가 서비스 전체로 전파되는 문제가 있었습니다.
- INSERT, UPDATE의 비중은 상대적으로 매우 적었고 SELECT가 부하의 대부분을 차지했습니다.
-
cf) 코크플레이의 주요 트래픽 패턴
- ‘코크플레이’는 평소에는 초당 500 미만인 낮은 빈도의 request가 발생합니다.
- 그러나 특정 이벤트의 경우 광고를 통해 트래픽이 유입되므로 많게는 초당 1만건이 넘는 request가 발생합니다.
개선 목표
위 분석에 따라 2개의 개선 목표를 설정했습니다.
- 1)read-only DB , 캐싱 등의 방법을 이용하여 가능한 RDB의 사용량을 줄이기
- 2)쿼리 최적화를 통해 RDB를 효과적으로 사용하기