목표 설정 및 달성
목표의 적절성
- 목표의 구체성과 적절성: 쿼리 성능 최적화 및 서버 확장성 강화를 주요 목표로 설정했습니다. MySQL 서버의 부하 분산을 위해 로드 밸런서를 도입하고, API 서버를 Stateless하게 리팩토링하여 성능을 개선하려는 접근이 적절합니다.
- 구체적인 개선 항목:
- 쿼리 성능 개선: 쿼리 실행 속도 단축 및 병목 해소를 위해 MySQL 샤딩 및 로드 밸런싱 적용.
- 서버 확장성 확보: Kubernetes를 도입하여 API 서버의 수평 확장 및 스테이트리스 구조로 변경.
- 비용 절감 고려: 최소한의 서버 비용 증가로 성능을 극대화하려는 전략이 포함됨.
- 성능 목표(예: 쿼리 응답 시간 감소, 서버 확장 처리량 증가)가 명확히 제시된 점이 긍정적이지만, 사용자 경험 측면에서의 목표(예: 응답 성공률, UX 영향)가 추가될 필요가 있습니다.
과정의 체계성
- 쿼리 성능 최적화 적용: 기존의 단일 DB 서버 구조를 분석하고, 쿼리 실행 시간이 24초까지 증가하는 문제를 해결하기 위해 MySQL 샤딩 및 부하 분산을 적용한 과정이 논리적으로 정리됨.
- SELECT BENCHMARK를 활용한 부하 테스트를 진행하여 성능 병목을 확인하고, 실행 주기 및 쿼리 패턴 분석을 통해 문제를 해결함.
- 서버 인프라 개선: 기존 서버의 상태 의존성을 제거하고, API 서버를 스테이트리스하게 리팩토링한 점이 체계적임. Redis를 도입하여 세션 관리를 중앙화하고, API 서버의 부하를 줄이는 방식을 적용한 점이 효과적임.
- 비용 효율성 분석: 기존 서버와 리팩토링 후의 비용을 비교 분석하고, 월 유지 비용 증가 대비 성능 향상 효과를 수치화한 점이 인상적임.
성과 및 결과
수치적 성과
보고서에서는 다음과 같은 성능 개선 결과가 제시되었습니다:
- 쿼리 응답 시간: 평균
17.6초 → 1.6초
로 90% 단축. 최악의 쿼리 실행 시간 25초 → 7초
로 72% 감소.
- 1초 이내 응답 비율:
6% → 45%
로 650% 향상.
- 서버 확장성: API 서버를 스케일아웃하여 동시 사용자 처리 능력 100명 → 400명으로 300% 증가.
- 비용 증가: 유지 비용
218% 증가
했지만, 성능 대비 효율성을 확보함.