개요
구매하기 API가 느려지는 현상이 발생, 최대 8초까지 지연현상이 발생하여 구매하는 고객 입장에서는 굉장히 불편하여 구매의사가 있었으나 서비스 불만족으로 이탈 할 수 있는 상황
원인분석
1.
인프라팀에서 선조치로 스케일아웃 진행했으나 개선되지 않음
2.
RDS나 ECS 컨테이너 내의 인스턴스들의 CPU 로드률이 30% 미만으로 높지 않음
3.
로직 자체에 문제가 있다고 판단하여 분석 시 TypeORM의 save를 사용하고 있는 로직이 확인됨
4.
Join된 Table 중 최근 신규기능 개발로 인해 로우량이 급격하게 증가된 부분 확인
해결방안
(원인분석) 3, 4번 항목이 중첩되어 발생하고 있는 문제로 확인되어 아래와 같이 조치함
1.
save(insert+update)를 insert로 변경하여 불필요한 select를 줄임
2.
사용되지 않는 join 삭제
조치 후 pending-orders API는 1000ms 내로 응답이 오도록 개선됨
후속조치
문제는 구매를 위해 반드시 거쳐야하는 API가 지연되는 현상이 발생하여
소비자가 서비스에 대한 불편함을 직간접적으로 느꼈을 것이다.
본격적인 성능 개편을 하기 위해서는 먼저 물리적으로 스케일업을 해야할 필요성을 느꼈다.
오토스케일링 정책을 더 적극적으로 잡았고, ecs 내의 태스크의 cpu 및 memory를 즉시 증량 설정하였다.
당연하게도 CPU 사용률 및 메모리 사용률은 눈에 띄게 줄었다.