NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

మీరు మీ మోనోలిత్‌ను మైక్రోసర్వీస్‌లుగా రీడిజైన్ చేయడానికి నెలల తరబడి గడిపారు, చివరకు అందరూ కలిసి స్విచ్‌ని తిప్పారు. మీరు మొదటి వెబ్ పేజీకి వెళ్ళండి... మరియు ఏమీ జరగదు. మీరు దీన్ని మళ్లీ లోడ్ చేయండి - మరియు మళ్లీ ఏమీ మంచిది కాదు, సైట్ చాలా నెమ్మదిగా ఉంది, అది చాలా నిమిషాలు స్పందించదు. ఏం జరిగింది?

అతని ప్రసంగంలో, జిమ్మీ బోగార్డ్ నిజ జీవిత మైక్రోసర్వీస్ విపత్తుపై "పోస్ట్-మార్టం" నిర్వహిస్తారు. అతను కనుగొన్న మోడలింగ్, డెవలప్‌మెంట్ మరియు ప్రొడక్షన్ సమస్యలను మరియు అతని బృందం నెమ్మదిగా పంపిణీ చేయబడిన కొత్త ఏకశిలాను తెలివి యొక్క చివరి చిత్రంగా ఎలా మార్చింది అని అతను చూపిస్తాడు. డిజైన్ లోపాలను పూర్తిగా నిరోధించడం అసాధ్యం అయితే, తుది ఉత్పత్తి నమ్మకమైన పంపిణీ వ్యవస్థగా మారుతుందని నిర్ధారించడానికి మీరు డిజైన్ ప్రక్రియ ప్రారంభంలోనే కనీసం సమస్యలను గుర్తించవచ్చు.

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

అందరికీ హలో, నేను జిమ్మీని మరియు మైక్రోసర్వీస్‌లను నిర్మించేటప్పుడు మీరు మెగా విపత్తులను ఎలా నివారించవచ్చో ఈ రోజు మీరు వినబోతున్నారు. మంచుకొండను తమ నౌక ఢీకొనకుండా నిరోధించడానికి నేను సుమారు ఏడాదిన్నర పాటు పనిచేసిన కంపెనీ కథ ఇది. ఈ కథనాన్ని సరిగ్గా చెప్పాలంటే, మనం గతంలోకి వెళ్లి, ఈ కంపెనీ ఎక్కడ ప్రారంభించబడింది మరియు కాలక్రమేణా దాని IT మౌలిక సదుపాయాలు ఎలా అభివృద్ధి చెందాయి అనే దాని గురించి మాట్లాడాలి. ఈ విపత్తులో ఉన్న అమాయకుల పేర్లను రక్షించడానికి, నేను ఈ కంపెనీ పేరును బెల్ కంప్యూటర్స్‌గా మార్చాను. 90వ దశకం మధ్యలో అటువంటి కంపెనీల ఐటి మౌలిక సదుపాయాలు ఎలా ఉండేవో తదుపరి స్లైడ్ చూపిస్తుంది. ఇది కంప్యూటర్ హార్డ్‌వేర్ స్టోర్‌ను నిర్వహించడం కోసం పెద్ద యూనివర్సల్ ఫాల్ట్-టాలరెంట్ HP టాండమ్ మెయిన్‌ఫ్రేమ్ సర్వర్ యొక్క సాధారణ నిర్మాణం.

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

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

కాలక్రమేణా, వ్యవస్థ పెద్దదిగా మరియు పెద్దదిగా మారింది మరియు దానిలో పెద్ద మొత్తంలో చెత్త పేరుకుపోయింది. అలాగే, COBOL అనేది ప్రపంచంలో అత్యంత వ్యక్తీకరణ భాష కాదు, కాబట్టి సిస్టమ్ పెద్ద, ఏకశిలా వ్యర్థ ముక్కగా ముగిసింది. 2000 నాటికి, చాలా కంపెనీలు వెబ్‌సైట్‌లను కలిగి ఉన్నాయని వారు చూశారు, దాని ద్వారా వారు తమ వ్యాపారాన్ని పూర్తిగా నిర్వహించారు మరియు వారి మొదటి వాణిజ్య డాట్-కామ్ వెబ్‌సైట్‌ను రూపొందించాలని నిర్ణయించుకున్నారు.

ప్రారంభ డిజైన్ చాలా బాగుంది మరియు అత్యున్నత స్థాయి సైట్ bell.com మరియు వ్యక్తిగత అప్లికేషన్‌ల కోసం అనేక సబ్‌డొమైన్‌లను కలిగి ఉంది: catalog.bell.com, accounts.bell.com, orders.bell.com, ఉత్పత్తి శోధన search.bell. com. ప్రతి సబ్‌డొమైన్ ASP.Net 1.0 ఫ్రేమ్‌వర్క్ మరియు దాని స్వంత డేటాబేస్‌లను ఉపయోగించింది మరియు అవన్నీ సిస్టమ్ బ్యాకెండ్‌తో మాట్లాడాయి. ఏదేమైనప్పటికీ, అన్ని ఆర్డర్‌లు ఒకే భారీ మెయిన్‌ఫ్రేమ్‌లో ప్రాసెస్ చేయబడటం మరియు అమలు చేయడం కొనసాగించబడ్డాయి, దీనిలో చెత్త మొత్తం మిగిలిపోయింది, అయితే ముందు భాగంలో వ్యక్తిగత అప్లికేషన్‌లు మరియు ప్రత్యేక డేటాబేస్‌లతో ప్రత్యేక వెబ్‌సైట్‌లు ఉన్నాయి.

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

కాబట్టి సిస్టమ్ రూపకల్పన క్రమబద్ధంగా మరియు తార్కికంగా కనిపించింది, అయితే అసలు సిస్టమ్ తదుపరి స్లయిడ్‌లో చూపిన విధంగా ఉంది.

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

అన్ని ఎలిమెంట్‌లు ఒకదానికొకటి కాల్‌లు, యాక్సెస్ చేయబడిన APIలు, పొందుపరిచిన థర్డ్-పార్టీ dllలు మరియు ఇలాంటివి. సంస్కరణ నియంత్రణ వ్యవస్థలు వేరొకరి కోడ్‌ను పట్టుకుని, ప్రాజెక్ట్‌లోకి నెట్టడం, ఆపై ప్రతిదీ విచ్ఛిన్నం కావడం తరచుగా జరిగేది. MS SQL సర్వర్ 2005 లింక్ సర్వర్ల భావనను ఉపయోగించింది మరియు నేను స్లయిడ్‌లో బాణాలను చూపించనప్పటికీ, ప్రతి డేటాబేస్ కూడా ఒకదానితో ఒకటి మాట్లాడుకుంది, ఎందుకంటే అనేక డేటాబేస్‌ల నుండి పొందిన డేటా ఆధారంగా పట్టికలను రూపొందించడంలో తప్పు లేదు.

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

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

తమాషా ఏమిటంటే, ఈ మెయిన్‌ఫ్రేమ్‌ను బెల్ కంప్యూటర్స్ యొక్క పోటీదారులు నిర్మించారు మరియు ఇప్పటికీ వారి సాంకేతిక సలహాదారులచే నిర్వహించబడుతోంది. దాని అప్లికేషన్ల పనితీరు సంతృప్తికరంగా లేకపోవడంతో, కంపెనీ వాటిని వదిలించుకోవాలని మరియు సిస్టమ్‌ను పునఃరూపకల్పన చేయాలని నిర్ణయించుకుంది.

ఇప్పటికే ఉన్న అప్లికేషన్ 15 సంవత్సరాలుగా ఉత్పత్తిలో ఉంది, ఇది ASP.Net-ఆధారిత అప్లికేషన్‌లకు రికార్డు. ఈ సేవ ప్రపంచం నలుమూలల నుండి ఆర్డర్‌లను ఆమోదించింది మరియు ఈ ఒక్క అప్లికేషన్ నుండి వార్షిక ఆదాయం బిలియన్ డాలర్లకు చేరుకుంది. లాభంలో గణనీయమైన భాగం bell.com వెబ్‌సైట్ ద్వారా ఉత్పత్తి చేయబడింది. బ్లాక్ ఫ్రైడేలలో, సైట్ ద్వారా ఆర్డర్‌ల సంఖ్య అనేక మిలియన్లకు చేరుకుంది. అయినప్పటికీ, సిస్టమ్ మూలకాల యొక్క దృఢమైన ఇంటర్‌కనెక్షన్‌లు ఆచరణాత్మకంగా సేవలో ఎటువంటి మార్పులను అనుమతించనందున, ప్రస్తుత నిర్మాణం ఎటువంటి అభివృద్ధిని అనుమతించలేదు.

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

వారు ఇలాంటి సమస్యను ఎలా పరిష్కరించారో చూడడానికి ఇతర కంపెనీలను చూడటం ద్వారా వారు తెలివైన పని చేసారు. ఈ పరిష్కారాలలో ఒకటి నెట్‌ఫ్లిక్స్ సర్వీస్ ఆర్కిటెక్చర్, ఇది API మరియు బాహ్య డేటాబేస్ ద్వారా కనెక్ట్ చేయబడిన మైక్రోసర్వీస్‌లను కలిగి ఉంటుంది.

బెల్ కంప్యూటర్స్ నిర్వహణ కొన్ని ప్రాథమిక సూత్రాలకు కట్టుబడి, అటువంటి నిర్మాణాన్ని నిర్మించాలని నిర్ణయించుకుంది. ముందుగా, వారు భాగస్వామ్య డేటాబేస్ విధానాన్ని ఉపయోగించడం ద్వారా డేటా డూప్లికేషన్‌ను తొలగించారు. డేటా ఏదీ పంపబడలేదు; దీనికి విరుద్ధంగా, అవసరమైన ప్రతి ఒక్కరూ కేంద్రీకృత మూలానికి వెళ్లవలసి ఉంటుంది. ఇది ఒంటరిగా మరియు స్వయంప్రతిపత్తిని అనుసరించింది - ప్రతి సేవ ఇతరులతో సంబంధం లేకుండా ఉంటుంది. వారు ఖచ్చితంగా అన్నింటికీ వెబ్ APIని ఉపయోగించాలని నిర్ణయించుకున్నారు - మీరు డేటాను పొందాలనుకుంటే లేదా మరొక సిస్టమ్‌లో మార్పులు చేయాలనుకుంటే, అదంతా వెబ్ API ద్వారా చేయబడుతుంది. పోటీదారుల హార్డ్‌వేర్ ఆధారంగా "బెల్" మెయిన్‌ఫ్రేమ్‌కు విరుద్ధంగా "బెల్ ఆన్ బెల్" అనే కొత్త మెయిన్‌ఫ్రేమ్ చివరి పెద్ద విషయం.

కాబట్టి, 18 నెలల వ్యవధిలో, వారు ఈ ప్రధాన సూత్రాల చుట్టూ వ్యవస్థను నిర్మించారు మరియు దానిని ప్రీ-ప్రొడక్షన్‌కి తీసుకువచ్చారు. వారాంతం తర్వాత పనికి తిరిగి వచ్చినప్పుడు, డెవలపర్‌లు కలిసి కొత్త సిస్టమ్ కనెక్ట్ చేయబడిన అన్ని సర్వర్‌లను ఆన్ చేసారు. 18 నెలల పని, వందలాది మంది డెవలపర్‌లు, అత్యంత ఆధునిక బెల్ హార్డ్‌వేర్ - మరియు సానుకూల ఫలితం లేదు! ఇది చాలా మందిని నిరాశపరిచింది ఎందుకంటే వారు ఈ సిస్టమ్‌ను వారి ల్యాప్‌టాప్‌లలో చాలాసార్లు అమలు చేసారు మరియు అంతా బాగానే ఉంది.

ఈ సమస్యను పరిష్కరించడానికి వారు తమ డబ్బు మొత్తాన్ని విసరడానికి తెలివిగా ఉన్నారు. వారు స్విచ్‌లతో అత్యంత ఆధునిక సర్వర్ రాక్‌లను ఇన్‌స్టాల్ చేసారు, గిగాబిట్ ఆప్టికల్ ఫైబర్‌ను ఉపయోగించారు, పిచ్చి మొత్తంలో ర్యామ్‌తో అత్యంత శక్తివంతమైన సర్వర్ హార్డ్‌వేర్, అన్నింటినీ కనెక్ట్ చేసారు, కాన్ఫిగర్ చేసారు - మరియు మళ్ళీ, ఏమీ లేదు! అప్పుడు వారు కారణం సమయం ముగిసింది అని అనుమానించడం ప్రారంభించారు, కాబట్టి వారు అన్ని వెబ్ సెట్టింగ్‌లు, అన్ని API సెట్టింగ్‌లలోకి వెళ్లి, మొత్తం టైమ్‌అవుట్ కాన్ఫిగరేషన్‌ను గరిష్ట విలువలకు అప్‌డేట్ చేసారు, తద్వారా వారు చేయగలిగేది ఏదైనా జరిగే వరకు కూర్చుని వేచి ఉండటమే. సైట్కు. వెబ్‌సైట్ లోడ్ అయ్యే వరకు 9న్నర నిమిషాలు వేచి ఉండి, వేచి ఉన్నారు.

ఆ తర్వాత, ప్రస్తుత పరిస్థితిని క్షుణ్ణంగా విశ్లేషించాల్సిన అవసరం ఉందని, వారు మమ్మల్ని ఆహ్వానించారు. మేము కనుగొన్న మొదటి విషయం ఏమిటంటే, మొత్తం 18 నెలల అభివృద్ధిలో, ఒక్క నిజమైన “మైక్రో” కూడా సృష్టించబడలేదు - ప్రతిదీ పెద్దదైంది. దీని తర్వాత, విపత్తుకు కారణాన్ని అర్థం చేసుకోవడానికి మేము పోస్ట్‌మార్టం రాయడం ప్రారంభించాము, దీనిని "రిగ్రెట్రోస్పెక్టివ్" లేదా "సాడ్ రెట్రోస్పెక్టివ్" అని కూడా పిలుస్తారు, దీనిని "మెదడు తుఫాను" లాగా "బ్లేమ్ తుఫాను" అని కూడా పిలుస్తారు.

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

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

ఈ రేఖాచిత్రంలోని ఆకుపచ్చ రంగు సెమిసర్కిల్‌ను చూపుతుంది, దీనిలో సేవలు ఒకదానికొకటి కాల్ చేస్తాయి - సర్వీస్ A కాల్స్ సర్వీస్ B, సర్వీస్ B కాల్స్ సర్వీస్ C, మరియు అది సర్వీస్ Aని మళ్లీ కాల్ చేస్తుంది. ఫలితంగా, మనకు “పంపిణీ చేయబడిన డెడ్‌లాక్” వస్తుంది. ఒక్క అభ్యర్థన వెయ్యి నెట్‌వర్క్ API కాల్‌లను సృష్టించింది మరియు సిస్టమ్‌లో అంతర్నిర్మిత తప్పు సహనం మరియు లూప్ రక్షణ లేనందున, ఈ API కాల్‌లలో ఒకటి కూడా విఫలమైతే అభ్యర్థన విఫలమవుతుంది.

మేము కొంత గణితం చేసాము. ప్రతి API కాల్‌కు 150 ms కంటే ఎక్కువ SLA మరియు 99,9% సమయ వ్యవధి ఉంటుంది. ఒక అభ్యర్థన 200 వేర్వేరు కాల్‌లకు కారణమైంది మరియు ఉత్తమ సందర్భంలో, పేజీ 200 x 150 ms = 30 సెకన్లలో చూపబడుతుంది. సహజంగానే, ఇది మంచిది కాదు. 99,9% అప్‌టైమ్‌ని 200తో గుణిస్తే, మాకు 0% లభ్యత వచ్చింది. ఈ వాస్తుశిల్పం మొదటి నుండి వైఫల్యానికి విచారకరంగా ఉందని తేలింది.

18 నెలల పని తర్వాత ఈ సమస్యను గుర్తించడంలో వారు ఎలా విఫలమయ్యారని మేము డెవలపర్‌లను అడిగాము? వారు అమలు చేసిన కోడ్‌కు మాత్రమే వారు SLAని లెక్కించారని తేలింది, కానీ వారి సేవ మరొక సేవకు కాల్ చేస్తే, వారు తమ SLAలో ఆ సమయాన్ని లెక్కించలేదు. ఒక ప్రక్రియలో ప్రారంభించబడిన ప్రతిదీ 150 ms విలువకు కట్టుబడి ఉంది, కానీ ఇతర సేవా ప్రక్రియలకు ప్రాప్యత మొత్తం ఆలస్యాన్ని అనేక రెట్లు పెంచింది. నేర్చుకున్న మొదటి పాఠం: "మీరు మీ SLA నియంత్రణలో ఉన్నారా లేదా SLA మీపై నియంత్రణలో ఉన్నారా?" మా విషయంలో, ఇది తరువాతిది.

మేము కనుగొన్న తదుపరి విషయం ఏమిటంటే, పీటర్ డీచ్ మరియు జేమ్స్ గోస్లింగ్ రూపొందించిన పంపిణీ చేయబడిన కంప్యూటింగ్ అపోహల భావన గురించి వారికి తెలుసు, కానీ వారు దాని మొదటి భాగాన్ని విస్మరించారు. “నెట్‌వర్క్ నమ్మదగినది,” “జీరో జాప్యం,” మరియు “అనంతమైన నిర్గమాంశం” అనే ప్రకటనలు అపోహలు అని ఇది పేర్కొంది. ఇతర అపోహలలో “నెట్‌వర్క్ సురక్షితమైనది,” “టోపోలాజీ ఎప్పటికీ మారదు,” “ఎల్లప్పుడూ ఒకే ఒక నిర్వాహకుడు ఉంటాడు,” “డేటా బదిలీ ఖర్చు సున్నా,” మరియు “నెట్‌వర్క్ సజాతీయంగా ఉంటుంది” అనే ప్రకటనలు ఉన్నాయి.
వారు తమ సేవను స్థానిక మెషీన్‌లలో పరీక్షించారు మరియు బాహ్య సేవలతో ఎప్పుడూ హుక్ అప్ చేయనందున వారు పొరపాటు చేసారు. స్థానికంగా అభివృద్ధి చెందుతున్నప్పుడు మరియు స్థానిక కాష్‌ని ఉపయోగిస్తున్నప్పుడు, వారు ఎప్పుడూ నెట్‌వర్క్ హాప్‌లను ఎదుర్కోలేదు. మొత్తం 18 నెలల అభివృద్ధిలో, బాహ్య సేవలు ప్రభావితం అయితే ఏమి జరుగుతుందో వారు ఎప్పుడూ ఆలోచించలేదు.

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

మీరు మునుపటి చిత్రంలో సేవా సరిహద్దులను పరిశీలిస్తే, అవన్నీ తప్పుగా ఉన్నాయని మీరు చూడవచ్చు. సేవా సరిహద్దులను ఎలా నిర్వచించాలో సలహా ఇచ్చే మూలాధారాలు పుష్కలంగా ఉన్నాయి మరియు తదుపరి స్లయిడ్‌లో Microsoft లాగా చాలా వరకు తప్పు చేస్తాయి.

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

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

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

ఇక్కడ రెండు వెబ్ సర్వర్‌ల మధ్య ట్రాఫిక్‌ని పంపిణీ చేయడానికి లోడ్ బ్యాలెన్సర్ వస్తుంది, వెబ్ సర్వీస్ మరియు బిజినెస్ లాజిక్ మధ్య ఉన్న కాష్ మరియు బిజినెస్ లాజిక్ మరియు డేటాబేస్ మధ్య మరొక కాష్. 2000ల మధ్యలో బెల్ తన లోడ్ బ్యాలెన్సింగ్ మరియు బ్లూ/గ్రీన్ డిప్లాయ్‌మెంట్ అప్లికేషన్ కోసం ఉపయోగించిన ఆర్కిటెక్చర్ ఇదే. కొంత సమయం వరకు ప్రతిదీ బాగా పనిచేసింది, ఎందుకంటే ఈ పథకం ఏకశిలా నిర్మాణం కోసం ఉద్దేశించబడింది.

మోనోలిత్ నుండి మైక్రోసర్వీస్‌లకు వెళ్లాలని MS ఎలా సిఫార్సు చేస్తుందో క్రింది చిత్రం చూపిస్తుంది - కేవలం ప్రతి ప్రధాన సేవలను ప్రత్యేక మైక్రోసర్వీస్‌లుగా విభజించడం. ఈ పథకం అమలు సమయంలోనే బెల్ పొరపాటు చేసింది.

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

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

అయితే, ఈ చిత్రం పూర్తిగా తప్పు ఎందుకంటే ఇది కంపెనీ IT క్లస్టర్ వెలుపల ఏ వ్యాపార యూనిట్లను మ్యాప్ చేయలేదు. ఈ పథకం బయటి ప్రపంచంతో ఎలాంటి సంబంధాన్ని పరిగణనలోకి తీసుకోలేదు, కాబట్టి ఉదాహరణకు, మూడవ పక్షం వ్యాపార విశ్లేషణలను ఎలా పొందాలో స్పష్టంగా తెలియలేదు. వ్యక్తిగత ఉద్యోగుల కెరీర్‌ను అభివృద్ధి చేయడం కోసం వారు అనేక సేవలను కనుగొన్నారని నేను గమనించాను, వారు దాని కోసం ఎక్కువ డబ్బు పొందడానికి వీలైనంత ఎక్కువ మంది వ్యక్తులను నిర్వహించడానికి ప్రయత్నించారు.

మైక్రోసర్వీస్‌లకు వెళ్లడం అనేది తమ అంతర్గత N-టైర్ ఫిజికల్ లేయర్ ఇన్‌ఫ్రాస్ట్రక్చర్‌ని తీసుకోవడం మరియు దానిపై డాకర్‌ను అతికించడం అంత సులభం అని వారు విశ్వసించారు. సాంప్రదాయ N-టైర్ ఆర్కిటెక్చర్ ఎలా ఉంటుందో చూద్దాం.

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

ఇది 4 స్థాయిలను కలిగి ఉంటుంది: UI వినియోగదారు ఇంటర్‌ఫేస్ స్థాయి, వ్యాపార లాజిక్ స్థాయి, డేటా యాక్సెస్ స్థాయి మరియు డేటాబేస్. మరింత ప్రగతిశీలమైనది DDD (డొమైన్-డ్రైవెన్ డిజైన్), లేదా సాఫ్ట్‌వేర్-ఆధారిత ఆర్కిటెక్చర్, ఇక్కడ రెండు మధ్య స్థాయిలు డొమైన్ వస్తువులు మరియు రిపోజిటరీ.

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

నేను ఈ నిర్మాణంలో మార్పు యొక్క విభిన్న ప్రాంతాలను, బాధ్యత యొక్క విభిన్న రంగాలను చూడటానికి ప్రయత్నించాను. సాధారణ N-టైర్ అప్లికేషన్‌లో, మార్పు యొక్క వివిధ ప్రాంతాలు వర్గీకరించబడ్డాయి, ఇవి నిర్మాణాన్ని నిలువుగా పై నుండి క్రిందికి విస్తరించాయి. ఇవి కేటలాగ్, వ్యక్తిగత కంప్యూటర్‌లలో ప్రదర్శించబడే కాన్ఫిగర్ సెట్టింగ్‌లు మరియు నా బృందం ద్వారా నిర్వహించబడే చెక్‌అవుట్ తనిఖీలు.

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

ఈ పథకం యొక్క ప్రత్యేకత ఏమిటంటే, ఈ మార్పుల యొక్క సరిహద్దులు వ్యాపార తర్కం స్థాయిని మాత్రమే కాకుండా, డేటాబేస్‌కు కూడా విస్తరిస్తాయి.

సేవ అంటే ఏమిటో చూద్దాం. సేవా నిర్వచనం యొక్క 6 లక్షణ లక్షణాలు ఉన్నాయి - ఇది సాఫ్ట్‌వేర్:

  • నిర్దిష్ట సంస్థచే సృష్టించబడింది మరియు ఉపయోగించబడుతుంది;
  • సిస్టమ్‌లోని నిర్దిష్ట రకం సమాచారం యొక్క కంటెంట్, ప్రాసెసింగ్ మరియు/లేదా అందించడానికి బాధ్యత వహిస్తుంది;
  • నిర్దిష్ట కార్యాచరణ అవసరాలను తీర్చడానికి స్వతంత్రంగా నిర్మించవచ్చు, అమలు చేయవచ్చు మరియు అమలు చేయవచ్చు;
  • వినియోగదారులు మరియు ఇతర సేవలతో కమ్యూనికేట్ చేయడం, ఒప్పందాలు లేదా ఒప్పంద హామీల ఆధారంగా సమాచారాన్ని అందించడం;
  • అనధికారిక యాక్సెస్ నుండి మరియు దాని సమాచారాన్ని నష్టం నుండి రక్షిస్తుంది;
  • సమాచార నష్టానికి దారితీయని విధంగా వైఫల్యాలను నిర్వహిస్తుంది.

ఈ లక్షణాలన్నీ "స్వయంప్రతిపత్తి" అనే ఒక పదంలో వ్యక్తీకరించబడతాయి. సేవలు ఒకదానికొకటి స్వతంత్రంగా పనిచేస్తాయి, నిర్దిష్ట పరిమితులను సంతృప్తిపరుస్తాయి మరియు వ్యక్తులు తమకు అవసరమైన సమాచారాన్ని స్వీకరించే ప్రాతిపదికన ఒప్పందాలను నిర్వచించాయి. నేను నిర్దిష్ట సాంకేతికతలను ప్రస్తావించలేదు, వాటి ఉపయోగం స్వయంగా స్పష్టంగా కనిపిస్తుంది.

ఇప్పుడు మైక్రోసర్వీస్ యొక్క నిర్వచనాన్ని చూద్దాం:

  • మైక్రోసర్వీస్ పరిమాణంలో చిన్నది మరియు ఒక నిర్దిష్ట సమస్యను పరిష్కరించడానికి రూపొందించబడింది;
  • మైక్రోసర్వీస్ స్వయంప్రతిపత్తి కలిగి ఉంటుంది;
  • మైక్రోసర్వీస్ ఆర్కిటెక్చర్‌ను రూపొందించేటప్పుడు, పట్టణ ప్రణాళిక రూపకం ఉపయోగించబడుతుంది. ఇది సామ్ న్యూమాన్ యొక్క పుస్తకం, బిల్డింగ్ మైక్రోసర్వీసెస్ నుండి నిర్వచనం.

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

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

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

కాబట్టి, బౌండెడ్ కాంటెక్స్ట్ ప్రకారం, మా సేవల వినియోగదారు అంటే ఏమిటో మనం స్పష్టమైన నిర్వచనం ఇవ్వలేకపోతే, ఈ పదం యొక్క అర్థం గురించి మాట్లాడగలిగే సరిహద్దులను నిర్వచిద్దాం, ఆపై ఈ విభిన్న నిర్వచనాల మధ్య పరివర్తన పాయింట్లను నిర్వచించండి. అంటే, మేము ఆర్డర్‌లను ఉంచే కోణం నుండి క్లయింట్ గురించి మాట్లాడుతుంటే, దీని అర్థం ఇది మరియు అది, మరియు అమ్మకాల కోణం నుండి అయితే, దీని అర్థం ఇది మరియు అది.

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

NDC లండన్ సమావేశం. మైక్రోసర్వీస్ విపత్తును నివారించడం. 1 వ భాగము

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

22:30 నిమి

అతి త్వరలో కొనసాగుతుంది...

ఒక చిన్న ప్రకటన

మాతో ఉన్నందుకు ధన్యవాదాలు. మీరు మా కథనాలను ఇష్టపడుతున్నారా? మరింత ఆసక్తికరమైన కంటెంట్‌ని చూడాలనుకుంటున్నారా? ఆర్డర్ చేయడం ద్వారా లేదా స్నేహితులకు సిఫార్సు చేయడం ద్వారా మాకు మద్దతు ఇవ్వండి, $4.99 నుండి డెవలపర్‌ల కోసం క్లౌడ్ VPS, ఎంట్రీ-లెవల్ సర్వర్‌ల యొక్క ప్రత్యేకమైన అనలాగ్, ఇది మీ కోసం మా ద్వారా కనుగొనబడింది: $5 నుండి VPS (KVM) E2697-3 v6 (10 కోర్లు) 4GB DDR480 1GB SSD 19Gbps గురించి పూర్తి నిజం లేదా సర్వర్‌ను ఎలా భాగస్వామ్యం చేయాలి? (RAID1 మరియు RAID10తో అందుబాటులో ఉంది, గరిష్టంగా 24 కోర్లు మరియు 40GB DDR4 వరకు).

ఆమ్‌స్టర్‌డామ్‌లోని ఈక్వినిక్స్ టైర్ IV డేటా సెంటర్‌లో Dell R730xd 2x చౌకగా ఉందా? ఇక్కడ మాత్రమే $2 నుండి 2 x ఇంటెల్ టెట్రాడెకా-కోర్ జియాన్ 5x E2697-3v2.6 14GHz 64C 4GB DDR4 960x1GB SSD 100Gbps 199 TV నెదర్లాండ్స్‌లో! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - $99 నుండి! గురించి చదవండి ఇన్‌ఫ్రాస్ట్రక్చర్ కార్పొరేషన్‌ను ఎలా నిర్మించాలి. ఒక పెన్నీకి 730 యూరోల విలువైన Dell R5xd E2650-4 v9000 సర్వర్‌ల వాడకంతో తరగతి?

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి