이젠 보내줄 때가 되었다. 대규모 트래픽의 C++ 시스템 Java로 전환하기
22
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

대규모 트래픽 C++ 시스템의 Java 전환 경험

이 게시물은 배달 주소 기반 행정동/법정동 판단 웹 서버를 C++에서 Java 및 Spring Boot로 전환한 경험을 공유합니다.

전환 배경 및 검토

  • C++ 서버는 2000TPS 이상 고성능을 제공했으나 유지보수와 안정성에 단점이 존재함
  • Java 전환 시 성능과 장애 최소화를 최우선 과제로 설정
  • 기존 싱글스레드 이벤트 루프 구조를 분석하여 Java 멀티스레드 활용 가능성 탐색

구현 및 성능 테스트

  • Java용 S2 라이브러리 사용과 메모리 적재 구조 유지로 성능 확보
  • 최대 3500TPS 부하 테스트에서 목표 성능 달성

배포 및 운영

  • Canary 배포와 AWS ALB 트래픽 세밀 조절로 장애 최소화
  • 배포 후 GC 문제 발견 및 primitive 컬렉션 사용 등으로 메모리 최적화 진행
  • GC 튜닝과 메모리 구조 개선을 통해 major GC 발생과 CPU 스파이크 감소

결과 및 향후 계획

  • Java 전환 후 유지보수 용이성 향상과 서버 비용 절감 달성
  • 필요시 Redis 등 추가 캐시 레이어 도입 검토