BSS/OSS Academy
πŸ›οΈ
Section 10.3

BFF & Channel Patterns

Backend for Frontend patterns and digital channel architecture for telco.

Modern telcos serve customers through multiple channels: self-service portals, mobile apps, retail stores, contact centres, partner APIs, and chatbots. Each channel has different data requirements, performance profiles, and user experiences. The Backend for Frontend (BFF) pattern is the architectural response to this reality.

Backend for Frontend (BFF)
A BFF is a server-side component that sits between a specific frontend channel and the backend APIs. It aggregates, transforms, and optimises data from multiple backend systems into a shape tailored for that specific channel. Each channel (web, mobile, retail, partner) may have its own BFF.

What BFFs Solve

Without vs With BFF

ProblemWithout BFFWith BFF
Over/under-fetchingMobile app receives 50 fields when it needs 5, or makes 4 calls for one screenBFF returns exactly what the channel needs in a single optimised call
Backend couplingEvery backend API change requires updates to all frontendsBFF absorbs backend changes β€” frontends only change when their BFF contract changes
Channel-specific logic"Show upgrade options" logic duplicated across web, mobile, and retailBFF encapsulates channel-specific logic in one place
SecurityFrontend directly calls domain APIs, requiring complex token exchangeBFF acts as a trusted intermediary with service credentials

BFF Architecture Patterns

BFF Pattern Options

PatternHow It WorksBest ForWatch Out
One BFF per channelEach channel (web, mobile, retail) has its own dedicated BFF serviceLarge telcos with dedicated channel teamsCode duplication across BFFs β€” mitigate with shared internal libraries
Shared BFF + adaptersSingle BFF with channel-specific adapter layersSmall operators with limited teamsCoupling risk β€” a mobile change can accidentally break web
GraphQL as universal BFFSingle GraphQL API where each frontend queries exactly what it needsComplex interactive UIs, teams with GraphQL expertiseCaching complexity, N+1 query problems, resolver orchestration overhead
Recommended Approach
For Tier-1/2 operators: one BFF per channel, owned by the channel team. For smaller operators: shared BFF or GraphQL. Many telcos use REST between backend services (TMF APIs) and GraphQL between BFF and frontend.

API Gateway vs BFF vs Experience API

Three Distinct Layers

LayerPurposeOwnerBusiness Logic?
API GatewayRoute, secure, and rate-limit API trafficPlatform / infrastructure teamNone β€” pure infrastructure
BFFAggregate and transform data for a specific channelChannel team (web, mobile, etc.)Channel-specific aggregation and caching
Experience APIShared cross-channel business logic (e.g., "Customer 360")Integration / product teamCross-channel logic shared by multiple BFFs

Common Mistakes

Four Mistakes to Avoid
1. Frontend calls domain APIs directly β€” TMF APIs are designed for system-to-system integration, not frontend consumption. Always use a BFF. 2. Single BFF for all channels β€” becomes a "god service" and deployment bottleneck. 3. Business logic in the BFF β€” "Can this customer upgrade?" belongs in the catalog or eligibility engine, not the BFF. BFFs aggregate and transform, they do not make business decisions. 4. Ignoring offline/degraded modes β€” mobile BFFs must support cached responses, optimistic updates, and retry queues.

Section 10.3 Key Takeaways

  • BFFs sit between frontends and backend domain APIs, aggregating and transforming data for each channel
  • API Gateway handles infrastructure (routing, auth); BFF handles channel aggregation; Experience API handles shared cross-channel logic
  • For large telcos: one BFF per channel. For small telcos: shared BFF or GraphQL.
  • Never expose TMF domain APIs directly to frontends
  • BFFs should aggregate and transform, not implement core business logic