Moait
홈인기 피드모든 블로그모든 태그
홈인기 피드모든 블로그모든 태그
마법소녀 이세계 아이돌 웹툰 런칭! BFF 장애 대응기 섬네일

마법소녀 이세계 아이돌 웹툰 런칭! BFF 장애 대응기

카카오엔터테인먼트 favicon카카오엔터테인먼트·Backend·
KubernetesNode.jsGraphQLExpressApollo
2023년 09월 25일0

AI 요약

이 글은 AI가 요약했어요. 정확한 내용은 꼭 원문을 확인해 주세요!

핵심 요약

카카오엔터테인먼트의 BFF 장애 대응 사례를 분석하고 프록시 경로와 GraphQL 처리의 성능 저하 원인을 파악해 KeepAlive 기반의 연결 재사용으로 안정성과 TPS를 향상시켰다.

구현 방법

  • 구성 및 기술 스택: 쿠버네티스에서 Next.js SSR pod과 BFF(pod, Node.js Express + Apollo Server) 운영, GraphQL 엔드포인트와 REST 프록시 경로를 병행 확인
  • 문제 원인 분석 절차: Ingress/서비스/포드 구성, 미들웨어 처리, 백엔드 API 응답 지연 여부, 워커 노드 CPU 부하 및 pod 수 적정성 점검
  • 성능 테스트 및 비교: nGrinder로 백엔드 API 직접 호출, Express 프록시 경로, GraphQL 경로의 TPS 비교
  • 인프라/미들웨어 최적화: 미들웨어에서 쿠키 파싱 및 로그용 객체 문자열화 로직 최적화, res.locals 캐시 활용으로 재처리 최소화
  • GraphQL/프록시 이슈의 근본 원인 탐색: RESTDataSource의 HTTP 에이전트(https.Agent) 설정 확인
  • TCP 연결 재활용 문제 해결: http(s) 에이전트의 keepAlive를 true로 설정, Node.js 기본 에이전트의 기본값 이슈 확인
  • 최적 포드 수 시험: 8코어 서버 6대 환경에서 포드 수를 코어당 1개 근접 시 최적 TPS 도달, 코어 2배는 오히려 감소

주요 결과

  • 프록시 경로 최대 TPS: 약 720에서 3600으로 증가
  • GraphQL 경로 TPS: 약 560에서 1800으로 증가
  • 운영 중 CPU와 응답 안정성 크게 개선, keepAlive 설정으로 부하 분산 및 재사용 효과 확인
  • Mac 환경의 로컬 포트 고갈 이슈는 서버 측 설정 개선으로 완화되었으며, Node 19 이상에서 keepAlive 기본값이 개선되는 점도 확인

연관 피드

%가 높을수록 이 글과 비슷할 가능성이 높아요!
카카오페이지는 BFF(Backend For Frontend)를 어떻게 적용했을까? 섬네일
74%

카카오페이지는 BFF(Backend For Frontend)를 어떻게 적용했을까?

카카오엔터테인먼트 favicon카카오엔터테인먼트·2022년 03월 10일
Next.js 캐싱으로 웹 서버 성능 최적화 섬네일
73%

Next.js 캐싱으로 웹 서버 성능 최적화

카카오엔터테인먼트 favicon카카오엔터테인먼트·2024년 05월 03일
사용자 경험과 성능 개선 방법 in 카카오웹툰 섬네일
71%

사용자 경험과 성능 개선 방법 in 카카오웹툰

카카오엔터테인먼트 favicon카카오엔터테인먼트·2022년 01월 20일