핵심 인사이트 (3줄 요약)

  1. 본질: BFF는 각 클라이언트(Web·Mobile·IoT)에 최적화된 별도의 API 레이어를 두는 패턴이며, 하나의 범용 API Gateway 대신 클라이언트별 맞춤 Gateway를 구성한다.
  2. 가치: Mobile은 작은 화면·제한된 대역폭으로 최소한의 데이터만 필요하고, Web은 풍부한 데이터가 필요한데, 범용 API는 양쪽 모두 만족시키기 어렵다. BFF가 각 클라이언트에 딱 맞는 응답을 제공한다.
  3. 판단 포인트: BFF 개수가 늘면 코드 중복·관리 비용이 증가하므로, GraphQL을 대안으로 고려할 수 있다(클라이언트가 필요한 필드만 쿼리).

Ⅰ. 개요 및 필요성

┌───────────────────────────────────────────────────────┐
│    BFF 패턴                                           │
├───────────────────────────────────────────────────────┤
│  [Web Client] → Web BFF → Microservices              │
│  [Mobile App] → Mobile BFF → Microservices           │
│  [IoT Device] → IoT BFF → Microservices             │
│                                                       │
│  각 BFF: 해당 클라이언트에 최적화된 API 제공         │
│  Web BFF: 풍부한 데이터, 다중 서비스 조합            │
│  Mobile BFF: 최소 데이터, 압축 응답                  │
└───────────────────────────────────────────────────────┘
  • 📢 섹션 요약 비유: 범용 API는 원사이즈 티셔츠(모두에게 맞추려다 아무도 만족 못함)이고, BFF는 **맞춤 양복(클라이언트별 최적화)**이다.

Ⅱ. 아키텍처 및 핵심 원리

BFF vs 범용 API vs GraphQL

비교범용 APIBFFGraphQL
맞춤없음클라이언트별쿼리별
개수1개N개1개
복잡도낮음중간스키마 관리
  • 📢 섹션 요약 비유: 범용은 뷔페, BFF는 코스 요리(손님별 맞춤), GraphQL은 주문형 뷔페(원하는 것만 골라 담기)이다.

Ⅲ. 비교 및 연결

비교범용 GatewayBFF
응답모든 클라이언트 동일클라이언트별 최적화
유지보수1곳N곳
성능Over-fetching최적

Ⅳ. 실무 적용 및 기술사 판단

BFF 도입 기준

  • ✅ Web/Mobile/IoT 클라이언트 3개+ → BFF 유효.
  • ❌ 클라이언트 1개 → 불필요 (범용 API 충분).

Ⅴ. 기대효과 및 결론

BFF는 클라이언트 다양성이 높은 MSA에서 최적의 사용자 경험을 제공하며, GraphQL과 상황에 맞게 선택한다.


📌 관련 개념 맵

개념연결 포인트
BFF클라이언트별 맞춤 API
API GatewayBFF의 상위 인프라
GraphQLBFF의 대안 (쿼리형)
Over-fetching범용 API의 문제 (BFF 해결)
Sam NewmanBFF 패턴 창시자

📈 관련 키워드 및 발전 흐름도

[범용 API (REST, 2010s)]
    │
    ▼
[BFF Pattern (Sam Newman, 2015)]
    │
    ▼
[GraphQL (Facebook, 2015) — 쿼리형 대안]
    │
    ▼
[BFF + GraphQL 조합 (2018~)]
    │
    ▼
[현재: Server Components — 서버에서 클라이언트 맞춤 렌더링]

👶 어린이를 위한 3줄 비유 설명

  1. 범용 API는 원사이즈 티셔츠예요. 모두에게 맞추려다 아무도 편하지 않아요.
  2. BFF는 맞춤 양복이에요. 웹용·모바일용·IoT용 각각 딱 맞게 만들어요.
  3. 덕분에 스마트폰에서는 가볍게, PC에서는 풍성하게 볼 수 있답니다!