Backend-for-Frontend (BFF) ప్రతిটి క్లায়েంట్ రకానికి (వెబ్, మొబైల్, భాగస్వామి) ఎంపిక చేయబడిన గేట్వే. అన్ని క్లైంట్లకు సేవ చేసే ఒక సాధారణ గేట్వే కనుబట్టడానికి బదులుగా, ప్రతిটి frontend దాని అవసరాలకు సరిపోయిన backend కిందికి ఆటగా ఉంటుంది.
ఇది పరిష్కరించే సమస్య
మొబైల్ అ్యాప్ మరియు వెబ్ అ్యాప్ విభిన్న డేటా, payload-సైజ్, మరియు చాటీనెస్ అవసరాలను కలిగి ఉన్నాయి. ఒకే సాధారణ API యితో రెడ్డింగ్లను జోక్యం చేస్తుంది మరియు over-fetching జరుగుతుంది.
Without BFF: With BFF:
All clients Web ─▶ Web BFF ─┐
│ Mobile ─▶ Mobile BFF ─┼─▶ microservices
one generic API Partner ─▶ Partner BFF ─┘
BFF ఏమి చేస్తుంది
- సమ్మతుచేస్తుంది అనేక సేవ కాలుల్ను ఒక క్లైంట్-సంబంధిత ప్రతిస్పందనకు.
- ట్రిమ్లు నిర్బంధితమైన క్లయింట్ల (మొబైల్) కోసం payloadsలను.
- క్లయింట్-నిర్దిష్ట తర్కం విధిస్తుంది తద్వారా సేవలు సాధారణంగా ఉండటానికి.
// Mobile BFF: one call → compose a lean screen payload
app.get('/home', async (req) => {
const [user, orders] = await Promise.all([
usersApi.get(req.userId),
ordersApi.recent(req.userId, { limit: 3 }) // small for mobile
]);
return { name: user.name, recentOrders: orders }; // tailored shape
});
BFF వర్సెస్ గేట్వే
| API గేట్వే | BFF | |
|---|---|---|
| స్కోప్ | అన్ని క్లయింట్ల కోసం ఒకటి | ప్రతిटି క్లయింट్ రకానికి ఒకటి |
| తర్కం | సాధారణ క్రాస్-కటింగ్ | క్లయింట్-నిర్దిష్ట సరిసార్ |
విషం
ఎక్కువ BFF లు తర్కాన్ని నకిలీ చేస్తాయి; వాటిని సన్నగా ఉంచండి మరియు సేవలకు సంబంధించిన వ్యాపార నియమాలను లీక్ చేయకుండా నివారించండి.
ఇది ఎందుకు ముఖ్యమైనది
BFF లు ప్రతిটి frontend ను దానికదైన వేగంలో అభివృద్ధి చేయడానికి అనుమతిస్తాయి, సాధారణ ఒప్పందానికి ప్రతిটి క్లయింట్ను వంచడానికి బదులుగా.
వారు గేట్వేను పూరక చేస్తారు (భర్తీ చేయకుండా): గేట్వే auth మరియు రూటింగ్ వంటి సరిహద్దు సమస్యలను నిర్వహిస్తుంది, అయితే BFF క్లయింట్-నిర్దిష్ట సమ్మతీకరణను నిర్వహిస్తుంది.
