Java

BFF(Backend for Frontend) 아키텍처란?

봉주니 2025. 9. 5. 09:52

1. BFF란 무엇인가요?

**BFF(Backend for Frontend)**는 프론트엔드 애플리케이션에 특화된 백엔드 레이어를 의미합니다. 즉, 각 프론트엔드(웹, 모바일 등)에 맞는 전용 백엔드를 따로 구성하여, 클라이언트의 요구사항에 최적화된 API를 제공하는 방식입니다.

기존에는 하나의 공통 백엔드가 모든 클라이언트에 데이터를 제공했지만, BFF는 클라이언트별로 맞춤형 백엔드를 두어 UI/UX의 복잡성과 성능 문제를 해결합니다.


2. 왜 BFF가 필요한가요?

✅ 다양한 클라이언트 대응

  • 웹, 모바일, 스마트워치 등 다양한 디바이스가 존재
  • 각 디바이스의 화면 크기, 기능, 사용자 경험이 다름

✅ API 응답 최적화

  • 모바일은 네트워크가 느릴 수 있으므로, 최소한의 데이터만 필요
  • 웹은 더 많은 데이터를 한 번에 받아도 괜찮음

✅ 프론트엔드 개발자 중심의 API 설계

  • 프론트엔드 개발자가 직접 BFF를 개발하면, 필요한 데이터만 정확히 받을 수 있음
  • 백엔드와 프론트엔드 간의 의사소통 비용 감소

3. BFF의 구조 예시

[Web Frontend] ─┐
                ├─> [Web BFF] ──┐
[Mobile App] ───┘               │
                                ├─> [Microservices]
[Admin Dashboard] ──> [Admin BFF] ─┘

각 BFF는 공통 마이크로서비스를 호출하지만, 클라이언트에 맞게 데이터를 가공하여 전달합니다.


4. 장점과 단점

🌟 장점

  • 클라이언트 맞춤형 API 제공
  • 프론트엔드 개발 속도 향상
  • 유지보수 용이 (클라이언트별로 분리된 로직)

⚠️ 단점

  • BFF가 많아지면 관리 복잡도 증가
  • 중복 로직 발생 가능성
  • 인프라 비용 증가

5. 언제 BFF를 도입해야 할까?

  • 다양한 클라이언트를 운영 중일 때
  • 프론트엔드 개발자가 API 설계에 적극 참여할 수 있을 때
  • 기존 백엔드가 프론트엔드 요구사항을 만족시키지 못할 때
반응형