ఏకరూపత అనేది మీరు చేరుకునే లక్ష్యం కాదు. అది మీరు చెల్లించే ఒక సబ్‌స్క్రిప్షన్. ప్రతి ఇంజనీరింగ్ సంస్థ చివరికి దీనిని గుర్తిస్తుంది, సాధారణంగా రెండవ లేదా మూడవ టీమ్ ఒకే రిపోజిటరీకి కమిట్ చేయడం ప్రారంభించినప్పుడు ఇది జరుగుతుంది. మీరు ఒకే React monolithని నడపినా లేదా స్వతంత్రంగా డిప్లాయ్ చేయగల ఫ్రంటెండ్స్ సమూహాన్ని నడపినా, మీరు ఖర్చు సున్నా కోసం ప్రయత్నించడం లేదు. మీరు కేవలం ప్రతి త్రైమాసికంలో ఏ ఇన్వాయిస్ వస్తుందో ఎంచుకుంటున్నారు.

మోనోలిత్స్ యొక్క కోఆర్డినేషన్ టాక్స్

మోనోలిథిక్ ఆర్కిటెక్చర్‌లో, ఇన్వాయిస్ అనేది మానవ పని గంటల రూపంలో ఉంటుంది. టీమ్స్ షేర్డ్ కోడ్, స్టైల్స్ మరియు రిలీజ్ షెడ్యూల్స్ విషయంలో సమన్వయం చేసుకోవడానికి తమ రోజులను గడుపుతారు. ఒక చిన్న చెక్అవుట్ ఫిక్స్ చేయాలనుకునే డెవలపర్, ఇతర ఆరు టీమ్స్ ఉపయోగిస్తున్న ఒక షేర్డ్ డిపెండెన్సీని అప్‌డేట్ చేయాల్సి రావచ్చు, ఆపై పూర్తి రిగ్రెషన్ సూట్ పూర్తయ్యే వరకు వేచి ఉండాల్సి రావచ్చు. ఈ ఖర్చు నిశ్శబ్దంగా పెరుగుతూనే ఉంటుంది. ఇది క్లౌడ్ బిల్లులో ఒక లైన్ ఐటెమ్‌గా ఎప్పుడూ కనిపించదు. ఇది తగ్గుతున్న వెలాసిటీలో, కోడ్ స్టైల్ గురించి Slack థ్రెడ్ల మధ్య ఇంజనీర్లు చేసే కాంటెక్స్ట్-స్విచ్చింగ్‌లో, మరియు ఎవరికీ సొంతం కాని, కానీ అందరూ తాకే CSS ఆర్కిటెక్చర్ యొక్క నెమ్మదైన ఘర్షణలో దాగి ఉంటుంది.

మీ టీమ్ పెరిగే కొద్దీ, ఈ టాక్స్ కూడా పెరుగుతుంది. కోడ్ రివ్యూ అడ్డంకులు సాంకేతిక అంశాల నుండి సామాజిక అంశాలకు మారుతాయి. రెండు వందల మంది కంట్రిబ్యూటర్లు ఉన్న ఒకే రిపోజిటరీ లీనియర్‌గా స్కేల్ అవ్వదు; అది కాంబినేటోరియల్‌గా స్కేల్ అవుతుంది. మెర్జ్ క్యూలు పేరుకుపోతాయి. రిలీజ్ ట్రైన్స్ రోజుల తరబడి సాగుతాయి. డిజైన్ సిస్టమ్ అనేది ఒక రాజకీయ అంశంగా మారి, కొత్త బటన్ వేరియంట్‌ను ఆమోదించడానికి ఒక గవర్నింగ్ కౌన్సిల్ అవసరమవుతుంది. మోనోలిత్ మార్పును ద్వేషంతో వ్యతిరేకించదు. ప్రతి ఉపరితలం షేర్ చేయబడి ఉండటం వల్ల మరియు ప్రతి మార్పుకు అందరి ఏకాభిప్రాయం అవసరం కావడం వల్ల అది మార్పును వ్యతిరేకిస్తుంది.

సరిహద్దులను నిర్ణయించడం

మైక్రోఫ్రంటెండ్స్ కోఆర్డినేషన్ ఖర్చులను నిర్దిష్ట సరిహద్దులలోకి మారుస్తాయి. షేర్డ్ స్టేట్ మేనేజ్‌మెంట్ గురించి ప్రతి వారం మీటింగ్ నిర్వహించడానికి బదులుగా, మీరు ఒక గీత గీస్తారు. టీమ్ A ప్రొడక్ట్ క్యాటలాగ్‌ను నిర్వహిస్తుంది. టీమ్ B కార్ట్‌ను నిర్వహిస్తుంది. వారు ఒక కాంట్రాక్ట్‌పై (సాధారణంగా రూటింగ్ బౌండరీ లేదా ఒక ఇరుకైన ఈవెంట్ స్కీమా) అంగీకరిస్తారు, ఆ తర్వాత వారు మాట్లాడుకోవడం ఆపేస్తారు. ఇది ప్రధానమైన లావాదేవీ: ఒక రకమైన క్రమశిక్షణకు బదులుగా స్వయంప్రతిపత్తిని పొందడం.

ఈ సిద్ధాంతం స్పష్టంగా ఉంటుంది. ఒకవేళ షిప్పింగ్ టీమ్ తన రూటింగ్ లేయర్‌ను రిఫ్యాక్టర్ చేస్తే, బిల్లింగ్ టీమ్‌కు దానితో సంబంధం ఉండకూడదు. సెర్చ్ ఇంటర్‌ఫేస్ రోజుకు ఐదుసార్లు డిప్లాయ్ చేయాల్సి వస్తే, అది అకౌంట్ సెట్టింగ్స్ పేజీ తన ఎండ్-టు-ఎండ్ టెస్టులను పూర్తి చేసే వరకు వేచి ఉండకూడదు. సరిహద్దులు సంస్థాగత ఘర్షణను సాంకేతిక ఇంటర్‌ఫేస్‌లుగా మారుస్తాయి. కానీ ఆ గీతను గీయడం ఎప్పుడూ ఉచితం కాదు.

ఇన్‌ఫ్రాస్ట్రక్చర్ బిల్లు

మైక్రోఫ్రంటెండ్స్ ప్లాట్‌ఫామ్ ఖర్చులను సృష్టిస్తాయి. రన్‌టైమ్‌లో ఫ్రాగ్మెంట్లను సమకూర్చగలిగే ఒక షెల్ అప్లికేషన్ మీకు అవసరం. బహుళ బిల్డ్ జాబ్స్ నుండి ఆర్టిఫాక్ట్‌లను ఒకే సమగ్ర పేజీగా ఎలా అసెంబుల్ చేయాలో అర్థం చేసుకునే డిప్లాయ్‌మెంట్ పైప్‌లైన్ మీకు అవసరం. మీరు Webpack Module Federation ఉపయోగిస్తుంటే, మీరు ఇప్పుడు స్వతంత్రంగా నిర్మించిన బండిల్స్ అంతటా షేర్డ్ డిపెండెన్సీ వెర్షన్లను నిర్వహిస్తున్నారు. మీరు iframes ఉపయోగిస్తుంటే, మీరు క్రాస్-ఓరిజిన్ మెసేజింగ్‌ను డీబగ్ చేస్తూ, లేఅవుట్ షిఫ్ట్స్‌తో పోరాడుతున్నారు. మీరు web components ఉపయోగిస్తుంటే, ఒక టీమ్ చేసే అప్‌గ్రేడ్ మరొక టీమ్‌పై ప్రభావం చూపేలా ఒక డిస్ట్రిబ్యూటెడ్ గ్రాఫ్‌లో కస్టమ్ ఎలిమెంట్స్‌ను వెర్షనింగ్ చేస్తున్నారు.

ఈ ఖర్చులు స్పష్టమైనవి మరియు పునరావృతమయ్యేవి. ఏడవ ఫ్రంటెండ్‌ను పాడు చేయకుండా ఆరు ఫ్రంటెండ్‌లను విడుదల చేయగల బిల్డ్ ఆర్కెస్ట్రేషన్ కోసం మీరు చెల్లిస్తారు. మూడు వేర్వేరు టీమ్స్ యాజమాన్యంలోని మూడు వేర్వేరు జావాస్క్రిప్ట్ బండిల్స్ ద్వారా యూజర్ చర్యను ట్రాస్ చేయగల అబ్జర్వబిలిటీ కోసం మీరు చెల్లిస్తారు. పెర్ఫార్మెన్స్ గవర్నెన్స్ కోసం మీరు చెల్లిస్తారు, ఎందుకంటే ఆరు టీమ్స్ తమ సొంత యూటిలిటీ లైబ్రరీ కాపీలను బండిల్ చేస్తే, ఎవరైనా డిడూప్లికేషన్ స్ట్రాటజీని నిర్మించి నిర్వహించనంత వరకు మీ పేజీ చాలా భారంగా మారుతుంది. ఆ సమయంలో, మీరు తప్పించుకోవాలని ప్రయత్నిస్తున్న మోనోలిత్ యొక్క ఒక భాగాన్ని మళ్ళీ సృష్టించినట్లు అవుతుంది, అయితే ఇప్పుడు దానిని నిర్వహించడానికి ఒక ప్లాట్‌ఫామ్ టీమ్ అవసరమవుతుంది.

ఖర్చులు మారినప్పుడు

ఒకే Next.js అప్లికేషన్‌ను పంచుకుంటున్న నాలుగు ఫ్రంటెండ్ టీమ్స్ ఉన్న మధ్యస్థ స్థాయి SaaS కంపెనీని పరిగణించండి. మూడు గంటల CI రన్ తర్వాత రోజుకు రెండుసార్లు డిప్లాయ్‌లు జరుగుతాయి. షిప్పింగ్ టీమ్ నావిగేషన్‌ను రిఫ్యాక్టర్ చేయాలనుకున్నప్పుడు, వారు కామెంట్స్ కోసం రిక్వెస్ట్ చేస్తారు, ట్రీ అంతటా ఇంపోర్ట్ పాత్‌లను అప్‌డేట్ చేస్తారు మరియు బిల్లింగ్ టీమ్ తన ఇంటిగ్రేషన్ టెస్టులను సర్దుబాటు చేయడానికి రెండు వారాల పాటు వేచి ఉండాలి. ఈ ఖర్చు కేవలం కోఆర్డినేషన్ మాత్రమే.

వారు మైక్రోఫ్రంటెండ్స్‌గా విడిపోతారు. ఇప్పుడు ప్రతి టీమ్ ఒక వర్టికల్‌ను నిర్వహిస్తుంది మరియు దాని స్వంత షెడ్యూల్‌లో ప్రొడక్షన్‌కు పుష్ చేస్తుంది. మొదటి నెల స్వేచ్ఛగా అనిపిస్తుంది. అప్పుడు ఒక బగ్ కనిపిస్తుంది. షిప్పింగ్ టీమ్ సెర్చ్ టీమ్ ఇంజెక్ట్ చేసిన బేస్ స్టైల్స్‌తో విభేదించే CSS-in-JS లైబ్రరీని అప్‌గ్రేడ్ చేయడం వల్ల Safariలో గ్లోబల్ హెడర్ రెండర్ కాదు. దీనిని డీబగ్ చేయడానికి ముగ్గురు ఆన్-కాల్ ఇంజనీర్లు, ఒక షేర్డ్ వార్ రూమ్ మరియు షెల్ యాప్ మాడ్యూల్ మేనిఫెస్ట్‌లను క్యాష్ చేయడం వల్ల రెండు సర్వీసుల బాధాకరమైన రోల్‌బ్యాక్ అవసరమవుతుంది. ఖర్చు మారింది కానీ అది మాయం కాలేదు.

స్కేలింగ్ ఆరిథ్మెటిక్

ఏ మోడల్ కూడా ఉచితం కాదు. పదిహేను మంది సభ్యులున్న స్టార్టప్‌కు ప్లాట్‌ఫామ్ టీమ్ అవసరం లేదు. మాడ్యూల్ ఫెడరేషన్, స్వతంత్ర డిప్లాయ్‌మెంట్ పైప్‌లైన్‌లు మరియు డిస్ట్రిబ్యూటెడ్ కాంట్రాక్ట్ టెస్టింగ్ యొక్క ఓవర్‌హెడ్ వారి మొత్తం వేగాన్ని (velocity) దెబ్బతీస్తుంది. వారు సమన్వయం (coordination) ద్వారా చెల్లించాలి, ఎందుకంటే ఆ సమన్వయం తక్కువ ఖర్చుతో కూడుకున్నది. వారు పది నిమిషాల సంభాషణలో స్టేట్ మేనేజ్‌మెంట్ ప్యాటర్న్‌పై ఏకీభవించి, అదే మధ్యాహ్నంలో దానిని షిప్ చేయగలరు.

వేర్వేరు త్రైమాసిక చక్రాలలో పనిచేసే డజన్ల కొద్దీ బిజినెస్ యూనిట్లు కలిగిన ఐదు వందల మంది సభ్యుల ఎంటర్‌ప్రైజ్ దీనికి విరుద్ధమైన సమస్యను ఎదుర్కొంటుంది. అక్కడ సమన్వయ ఖర్చు (coordination tax) ఎక్స్‌పోనెన్షియల్‌గా పెరిగిపోయింది. రిలీజ్ ట్రైన్స్ కోసం వారాలు పడుతుంది. ప్లాట్‌ఫామ్ ఇంజనీరింగ్ హెడ్‌కౌంట్ ఇప్పటికే బడ్జెట్‌లో భాగంగా ఉంది, కాబట్టి మైక్రోఫ్రంటెండ్ ఇన్‌ఫ్రాస్ట్రక్చర్‌ను జోడించడం అనేది ఒక అదనపు ఖర్చు మాత్రమే, కొత్త లైన్ ఐటమ్ కాదు. వారికి, అలైన్‌మెంట్ మీటింగ్‌ల బదులు డిప్లాయ్‌మెంట్ గ్రాఫ్‌లను ఉపయోగించడం అనేది ఒక హేతుబద్ధమైన నిర్ణయం.

అసలు ప్రశ్న ఏమిటంటే, మీ టీమ్‌కు ఏ బిల్లు బాగా స్కేల్ అవుతుంది. మోనోలిత్‌లు మానవ సమన్వయం యొక్క పరిమితుల వద్ద మీకు ఖర్చును పెంచుతాయి. మైక్రోఫ్రంటెండ్లు ప్లాట్‌ఫామ్ ఇంజనీరింగ్ పునాది వద్ద మీకు ఖర్చును పెంచుతాయి.

మీ కరెన్సీని ఎంచుకోవడం

మీరు మైక్రోఫ్రంటెండ్స్‌ను ఎంచుకుంటే, మీరు దేనిని కొనుగోలు చేస్తున్నారో స్పష్టంగా ఉండండి. మీరు టీమ్ స్వయంప్రతిపత్తిని మరియు స్వతంత్ర డిప్లాయబిలిటీని కొనుగోలు చేస్తున్నారు. ఈ క్రింది వాటి కోసం సిద్ధంగా ఉండండి:

  • ఫ్రాగ్మెంట్ల మధ్య కంపోజిషన్, రూటింగ్ మరియు ఎర్రర్ బౌండరీలను నిర్వహించే ఒక రన్‌టైమ్ షెల్.
  • షేర్డ్ ఇంప్లిమెంటేషన్ లాజిక్ మీద కాకుండా, డూప్లికేషన్ తగ్గించే వ్యూహంపై దృష్టి సారించిన షేర్డ్ డిపెండెన్సీ పాలసీ.
  • ప్రతి ఇంటిగ్రేషన్ సర్ఫేస్ కోసం క్రాస్-టీమ్ కాంట్రాక్ట్ టెస్టింగ్.
  • డిస్ట్రిబ్యూటెడ్ బండిల్స్ అంతటా యూజర్ క్లిక్‌ను అనుసంధానించగల యూనిఫైడ్ అబ్జర్వబిలిటీ.
  • ఒక పెర్ఫార్మెన్స్ గవర్నెన్స్ మోడల్, ఎందుకంటే బ్రౌజర్ డౌన్‌లోడ్ చేసే ఫైనల్ పేలోడ్‌పై ఏ ఒక్క టీమ్‌కు పూర్తి అధికారం ఉండదు.

మీరు మోనోలిత్‌ను ఎంచుకుంటే, బిల్లు గురించి నిజాయితీగా ఉండండి. మీరు సింక్రొనైజేషన్ కోసం సరళతను కొనుగోలు చేస్తున్నారు. వీటి కోసం చెల్లించాల్సి ఉంటుందని ఆశించండి:

  • షేర్డ్ కోడ్ ఓనర్‌షిప్ మరియు దానిని సమగ్రంగా ఉంచడానికి అవసరమైన గవర్నెన్స్ రిచ్యువల్స్.
  • పైప్‌లైన్‌లోని అత్యంత నెమ్మదైన ఇంటిగ్రేషన్ టెస్ట్ ద్వారా నిర్ణయించబడే రిలీజ్ కేడెన్స్.
  • లైబ్రరీ అప్‌గ్రేడ్‌ల వల్ల కలిగే విస్తృత ప్రభావం (wide blast radius).
  • మీ అత్యంత వేగవంతమైన ఇంజనీర్లు మీ అత్యంత జాగ్రత్తగా ఉండే ఇంజనీర్ల వేగంతోనే పనిచేయాల్సి వస్తుందనే వాస్తవం.

అసలైన సారాంశం

ఖర్చును తొలగించే ఆర్కిటెక్చర్ ఏదీ లేదు. కేవలం కరెన్సీని ఎంచుకునే అవకాశం మాత్రమే ఉంది. తెలివైన సంస్థలు ఉచిత మార్గం కోసం వెతకడం మానేసి, ఏ ఖర్చును తాము భరించగలమో ఆడిట్ చేయడం ప్రారంభిస్తాయి. మీరు మానవ సమన్వయం ద్వారా చెల్లించాలనుకుంటున్నారా లేదా ప్లాట్‌ఫామ్ ఓవర్‌హెడ్ ద్వారా చెల్లించాలనుకుంటున్నారా అనేది మీరు నిర్ణయించుకోవాలి. ఏ సందర్భంలోనైనా ఏకరూపత (Uniformity) అనేది ఒక సబ్‌స్క్రిప్షన్ లాంటిదే. అసలు ప్రశ్న ఏమిటంటే, ఆ చెక్కును ఎవరు కట్ చేస్తారు అనేది మాత్రమే.