목록 보기
이젠 보내줄 때가 되었다. 대규모 트래픽의 C++ 시스템 Java로 전환하기
백엔드

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

우아한 형제들
우아한 형제들
2025년 1월 7일

두줄요약

C++로 운영하던 대규모 트래픽 서버를 Java와 Spring Boot로 전환한 과정을 정리했습니다. 성능 검증, Canary 배포, GC 개선까지 거쳐 안정적으로 이관했습니다.

문제 상황

  • 배달 주소 기반 행정동·법정동 조회용 C++ 웹 서버의 운영 부담 증가
  • 낮은 유지보수성, 사내 배포·모니터링 체계와의 비호환성, 메모리 오남용 위험
  • 전사 핵심 API 특성상 전환 시 성능 저하와 장애 확산 우려

원인 분석

  • 이벤트 루프 기반 싱글스레드 구조로 인한 확장성 한계와 유지보수 난이도
  • Java 전환 후 힙 메모리에 대량 S2 데이터를 올릴 때 GC, 특히 major GC 부담 예상
  • 램프업 중심 성능테스트로는 중간 트래픽 구간의 CPU spike를 놓칠 가능성

해결 방법

  • Java 및 Spring Boot로 이관하고 멀티스레드 처리로 성능 확보
  • 메모리 조회 구조는 유지하되 fastutil로 primitive 컬렉션 최적화
  • Canary 배포와 ALB 트래픽 조절로 장애 범위를 줄이며 롤백 대비

다음 읽기

비슷한 주제의 백엔드 글

배포 직후 발생하는 응답 지연을 해결하기 위한 여정 (feat. JVM 웜업)

배포 직후 발생하던 DB Connection Timeout과 응답 지연의 원인을 분석했습니다. JVM 웜업과 startupProbe 적용으로 초기 지연 문제를 해결했습니다.

카카오페이
카카오페이
백엔드

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...