BFF

담당
김영웅
완료
완료
유형
SW Engineering
비고

BFF (Backend For Frontend)

notion image
간단히 말해, 프론트엔드를 위한 백엔드 서버를 구현하는 것입니다.
기술의 발전으로 프론트엔드 개발자는 PC, 모바일, 태블릿 등의 다양한 환경을 고려하게 되었습니다.
각각의 환경에 맞는 디자인과 데이터가 필요하게 되어서 나오게 된 것이 BFF입니다.
 

BFF를 사용하면 좋은 경우

  • 마이크로서비스에 의존하고 많은 외부 API나 다른 서비스를 사용해야 할 때
  • 어플리케이션이 특정 프론트엔드 인터페이스에 대해 최적화된 백엔드를 개발해야 하거나 클라이언트가 굉장히 많은 양의 집합 연산을 요구하는 데이터를 사용해야 할 때
 

장점

  • 관심사 분리 
    • 프론트엔드 요구사항은 백엔드 관심사로부터 분리합니다. 유지보수하기가 쉽습니다.
  • API 유지보수와 변경에 용이 
    • 클라이언트 어플리케이션은 API 구조에 대해 알아야 하는 것을 줄이므로 이는 API 변경사항에 대해 더 탄력성을 가집니다.
  • 프론트엔드에서 더 나은 에러 핸들링 가능 
    • 대부분의 시간에서 서버 에러는 프론트엔드 유저에게 의미가 없습니다. 서버가 보내는 에러를 바로 반환하는 것보다는 BFF가 사용자에게 보여주어야 하는 에러와 매핑하는 것이 가능합니다. 이는 UX를 개선합니다.
  • 병렬적으로 여러 디바이스 타입에서 백엔드 호출 
    • 브라우저가 브라우저 BFF에 요청을 보내는 동안 모바일 디바이스들은 동일한 것을 수행할 수 있습니다. 이는 서비스로부터 더 빨리 응답값을 얻도록 합니다.
  • 더 나은 보안성 
    • 특정 민감한 정보는 숨기면서 동시에 프론트엔드에 응답값을 보낼 때 불필요한 정보는 생략됩니다. 이러한 추상화는 공격자들이 어플리케이션을 타겟팅하는 것을 어렵게 합니다.
  • 컴포넌트의 소유권 공유 
    • 어플리케이션의 다양한 파트들이 쉽게 서로 다른 팀들에 의해 다뤄질 수 있습니다. 프론트엔드 팀은 클라이언트 어플리케이션과 이를 기반으로 하는 리소스 소비층에 대해 소유권을 가집니다. 이는 더 빠른 개발속도를 만듭니다.
 
 

참고