목록 보기
카카오페이지는 BFF(Backend For Frontend)를 어떻게 적용했을까?
아키텍처

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

두줄요약

카카오페이지 Web은 GraphQL 기반 BFF로 다중 API 응답을 화면 모델에 맞게 통합했습니다. Apollo 캐시 문제를 피해 Urql과 Redux로 데이터 조회·상태 관리를 분리했습니다.

문제 상황

  • 다중 플랫폼 공통 API의 불필요한 데이터와 화면별 복수 API 호출
  • 프론트엔드의 응답 가공·비즈니스 로직 집중에 따른 코드 복잡도와 렌더링 경합
  • MSA 엔드포인트 분리, CORS, 인증 방식, 플랫폼별 스펙 조율 부담

구조와 흐름

  • Web 전용 BFF에서 백엔드 API 응답을 화면 모델로 통합·변환
  • Next.js·Apollo Server 기반 GraphQL Resolver에서 프로필·캐시 데이터 병합
  • Urql의 데이터 fetch와 Redux store의 비동기 UI 상태 관리 분리

선택 이유

  • 필요한 필드만 제공하는 partial response와 프론트엔드·백엔드 관심사 분리
  • BFF 단의 camelCase 변환, 날짜 포맷 변경, 커스텀 에러 래핑
  • Apollo Client 대신 document 방식 캐싱 Urql 선택

트레이드오프

  • 다중 플랫폼 지원이 없으면 플랫폼별 BFF의 효용 감소
  • Apollo Client의 id 기반 정규화 캐시에서 필터별 하위 데이터 참조가 덮어써지는 문제
  • keyFields·별도 식별자로 해결 가능하지만 Urql 전환 선택

카카오 계열사 채용30건

채용 사이트에서 전체 보기

다음 읽기

#GraphQL 주제를 다룬 다른 회사 글

핀테크그룹의 GraphQL 기반 BFF와 프론트엔드 활용기

MSA 환경의 복잡도를 줄이기 위한 GraphQL 기반 BFF 구조와 프론트엔드 활용 방식을 소개했습니다.\nApollo 캐시 키 충돌 해결과 BFF 도입에 따른 운영 복잡도도 함께 짚었습니다.

마켓컬리
마켓컬리
프론트엔드

댓글 0개

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

댓글을 불러오는 중...