웹소켓을 통한 채팅 기능 사용시, 메모리가 급증하는 문제가 발생하여 모니터링 서버를 구축
⇒ 확인 결과, 프론트 코드에 채팅을 입력할 때마다 WebSocket을 Connect하는 코드 발견
⇒ 코드 수정 후, 서버 메모리 급증 문제 해결
단, 해당 문제 이외에도 서버 메모리 및 CPU 사용량이 늘어날 경우, AutoScaling 설정이 올바르게 적용되는지 확인 필요
현재, 쿼리 성능 개선을 위해 기존에 사용하던 MySQL에서 PostgreSQL로 DB를 교체하였으며, 새로 작성된 쿼리의 성능과 API 병목 지점 파악 필요
추가로, 인원수가 제한된 모임에 여러 명이 신청하는 시나리오를 가정했을 때, 데이터 정합성 및 동시성이 보장되는지 확인 필요
시나리오 상황을 인위적으로 발생시키기 위해, 부하 테스트 툴 도입 결정
⇒ 정리 : Moit 서비스는 불규칙한 위도와 경도 쿼리가 계속해서 발생하는 서비스로, Read 비율이 지배적이다. 뿐만 아니라, 제한된 자원(모임 제한 수)에 대한 경합이 높아 동시에 많은 사용자가 모임에 참여할 때 성능 문제가 발생할 수 있다.
계획
성능 모니터링: API의 성능을 모니터링하여 병목 현상이 발생하는 시기와 원인을 파악
⇒ 로그, 지표 및 모니터링 도구인
Prometheus
와Grafana
도입로깅 및 추적: API 호출에 대한 로그를 기록하고, 각 요청의 경로를 추적하여 병목 현상이 발생하는 부분을 식별
⇒ 어떤 요청이 병목 현상을 일으키는지 파악
[현재 진행해야 할 과제]
성능 테스트: API에 대한 부하 테스트를 수행하여 병목 현상이 발생하는 지점을 확인
⇒ API가 어느 정도의 부하를 견딜 수 있는지 확인
[현재 진행해야 할 과제]
코드 리뷰 및 최적화: API 코드를 검토하고 성능을 최적화
⇒ 비효율적인 쿼리, 느린 알고리즘 또는 메모리 누수와 같은 문제 식별 및 수정
캐싱: 빈번히 요청되는 데이터나 연산 결과를 캐싱하여 서버 부하 줄이기
⇒ API의 응답 시간을 개선 + 병목 현상을 완화
수집 및 분석: API 호출에 대한 데이터 수집 및 분석
⇒ 병목 현상의 근본적인 원인 파악
⇒ 장기적인 성능 개선을 위한 방향성 제시