
백엔드
당근 피드시스템 안정성 향상기: 프로파일링부터 서킷 브레이커까지
두줄요약
피드시스템의 반복 장애를 줄이기 위해 프로파일링과 메모리 최적화, 서킷 브레이커를 적용했습니다. 또한 PGO와 SLA/SLO/SLI 기반 모니터링으로 안정성과 성능을 함께 개선했습니다.
문제 상황
- 당근 피드시스템에서 크고 작은 장애가 반복되며 피드 지연, 오표시, 서비스 중단이 발생
- 여러 마이크로서비스 의존성으로 인해 하나의 장애가 연쇄 전파되는 구조
- 필수 기능과 실패 허용 기능이 섞여 있어 의존성별 안정성 관리 필요
해결 방법
- 프로파일링으로 CPU 병목, 메모리 할당, GC 부담을 식별하고 문자열 연산·슬라이스·변환 비용 최적화
- strings.Builder, 초기 용량 할당, sync.Pool, 읽기 전용 제로 얼로케이션 등으로 메모리 오버헤드 완화
- API별 서킷 브레이커와 PGO 빌드 파이프라인, SLA/SLO/SLI 기반 모니터링 체계로 장애 전파 억제와 성능 개선