BFF(Backend for Frontend)란? 클라이언트별 백엔드가 필요한 이유

BFF란 무엇인가

BFF(Backend for Frontend)는 말 그대로 ‘프론트엔드를 위한 백엔드’를 의미하는 아키텍처 패턴입니다. 하나의 범용 API 서버가 웹, 모바일 앱, 태블릿 등 모든 클라이언트의 요청을 처리하는 대신, 각 클라이언트 유형에 맞춘 전용 백엔드를 별도로 두는 방식입니다. 예를 들어 웹 전용 BFF, iOS 전용 BFF, 안드로이드 전용 BFF를 각각 만들어서 해당 클라이언트가 필요로 하는 데이터 형태와 API 호출 흐름에 최적화된 응답을 내려주는 것이죠.

왜 클라이언트마다 다른 백엔드가 필요할까

웹과 모바일 앱은 화면 구성, 네트워크 환경, 필요한 데이터의 양이 서로 다릅니다. 하나의 API로 모든 클라이언트를 지원하려면 결국 모든 조건을 만족시키는 범용 응답을 만들어야 하는데, 이는 특정 클라이언트에는 불필요한 데이터가 섞이거나 여러 번의 API 호출이 필요해지는 비효율을 낳습니다.

레스토랑에 비유하면, 하나의 메뉴판으로 모든 손님(어른, 아이, 채식주의자)을 만족시키려는 것과 비슷합니다. 결국 각 손님 유형에 맞춘 메뉴판을 따로 만드는 것이 훨씬 효율적이겠죠. BFF도 마찬가지로 각 클라이언트라는 ‘손님’에게 딱 맞는 API ‘메뉴’를 제공하는 셈입니다.

  • 웹 BFF: 여러 마이크로서비스의 데이터를 조합해 한 번에 큰 응답을 내려줌
  • 모바일 BFF: 데이터 사용량과 배터리를 고려해 최소한의 필드만 응답
  • 클라이언트별 인증 방식이나 캐싱 전략도 다르게 적용 가능

실무에서 BFF를 쓰는 이유

마이크로서비스 아키텍처가 확산되면서 하나의 화면을 그리기 위해 여러 서비스의 API를 호출해야 하는 경우가 많아졌습니다. 이때 클라이언트가 직접 여러 서비스를 호출하면 프론트엔드 코드가 복잡해지고, 서비스 구조가 바뀔 때마다 클라이언트 코드도 함께 수정해야 하는 문제가 생깁니다.

BFF는 이런 조합 로직을 서버 쪽으로 가져와서, 클라이언트는 단순히 BFF에 한 번만 요청하면 됩니다. 예를 들어 상품 상세 화면에 필요한 상품 정보, 리뷰, 재고 데이터를 BFF가 내부적으로 조합해 하나의 응답으로 만들어주는 식입니다. 이렇게 하면 프론트엔드 개발자는 화면에 필요한 데이터 구조만 신경 쓰면 되고, 백엔드 서비스 구조 변경도 BFF 레이어에서 흡수할 수 있어 전체 시스템의 유연성과 유지보수성이 크게 향상됩니다.

관련 글

댓글 남기기