
클라이언트는 화면만 그리세요, 복잡한 로직은 BFF가 모두 흡수합니다
MSA의 고질적인 문제인 '화면 단위 복잡성'을 해결하기 위해 여기어때가 도입한 BFF 레이어의 실제 구축 사례를 공유합니다. 클라이언트에 산재해 있던 비즈니스 로직과 데이터 조합 책임을 서버로 옮겨 서비스의 안정성과 개발 생산성을 높인 핵심 노하우를 담고 있습니다.
마이크로서비스 환경에서 프론트엔드 개발 속도가 저하되거나 API 호출 오버헤드가 큰 경우 이 아티클을 필독하십시오. 특히 주문이나 결제와 같이 복잡한 상태 분기가 필요한 도메인에서 BFF는 강력한 힘을 발휘합니다.
MSA 구조로 인해 도메인이 세분화되면서 클라이언트가 하나의 화면을 구성하기 위해 수많은 API를 직접 호출하고 데이터를 조합해야 하는 네트워크 오버헤드 및 로직 복잡성 문제가 발생했습니다.
클라이언트의 화면(UI) 요구사항에 맞춘 전용 서버 계층인 BFF를 도입하여 여러 도메인 API를 서버 측에서 통합(Aggregate)하고 ViewModel 형태로 가공하여 내려주도록 구조를 개선했습니다.
클라이언트 로직이 단순화되어 단일 API 호출만으로 화면 구성이 가능해졌으며 상태 분기 로직의 중앙화를 통해 플랫폼 간 중복 개발 방지 및 변경 대응 속도가 향상되었습니다.
Trade-off
중간 계층 추가에 따른 장애 전파 및 메모리 과부하 위험이 존재하며 이를 방지하기 위해 지수 백오프 재시도 전략과 로컬 캐시 도입 등 추가적인 운영 및 설계 공수가 요구됩니다.
프론트엔드 특정 화면의 요구사항에 맞춰 데이터를 가공하고 제공하는 전용 백엔드 계층입니다.
연쇄적인 장애 발생을 막기 위해 외부 서비스 호출의 실패율이 높을 경우 통신을 차단하는 설계 패턴입니다.
재시도 간격을 지수적으로 늘려가며 시스템의 부하를 줄이고 성공 확률을 높이는 전략입니다.




