마법소녀 이세계 아이돌 웹툰 런칭! BFF 장애 대응기
백엔드
마법소녀 이세계 아이돌 웹툰 런칭! BFF 장애 대응기
두줄요약
카카오페이지 BFF 장애 원인을 추적한 결과, node.js http agent의 keepAlive 기본값이 문제였습니다. keepAlive를 true로 바꾸고 미들웨어 중복 처리도 줄여 TPS와 CPU 상태를 개선했습니다.
문제 상황
- 카카오페이지 BFF에서 웹툰 런칭 시 트래픽 급증으로 CPU 100%와 응답 지연 발생
- 백엔드 API, 인프라, 미들웨어, apollo-server-express를 순차 점검했지만 원인이 바로 드러나지 않음
원인 분석
- 서버 응답 자체보다 BFF의 요청 처리 경로에서 병목 가능성 집중
- node.js http agent의 keepAlive 기본값 false로 인해 요청마다 TCP 연결 재생성
- 연결 수립 비용 누적으로 BFF TPS 급감
해결 방법
- https.Agent에 keepAlive: true 적용
- 쿠키 파싱, 로그 객체 문자열화 같은 미들웨어 중복 처리도 res.locals 활용 및 depth 조정으로 개선
- 부하 테스트 재실행 후 프록시와 graphql TPS가 유의미하게 향상
