నిర్మాణ శైలి ఎంపిక (పార్ట్ 1)

హలో, హబ్ర్. కొత్త కోర్సు స్ట్రీమ్ కోసం ఎన్‌రోల్‌మెంట్ ప్రస్తుతం OTUSలో తెరవబడింది "సాఫ్ట్‌వేర్ ఆర్కిటెక్ట్". కోర్సు ప్రారంభం సందర్భంగా, నా అసలు కథనాన్ని మీతో పంచుకోవాలనుకుంటున్నాను.

పరిచయం

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

ఒక బిట్ చరిత్ర

మీరు డెవలపర్‌లను అడగడానికి ప్రయత్నిస్తే: “మాకు మైక్రోసర్వీస్‌లు ఎందుకు అవసరం?”, మీరు అనేక రకాల సమాధానాలను పొందుతారు. మైక్రోసర్వీస్‌లు స్కేలబిలిటీని మెరుగుపరుస్తాయని, కోడ్‌ని సులభంగా అర్థం చేసుకోవచ్చని, తప్పు సహనాన్ని మెరుగుపరుస్తాయని మీరు వింటారు మరియు కొన్నిసార్లు అవి "మీ కోడ్‌ని క్లీన్ అప్ చేయడానికి" మిమ్మల్ని అనుమతిస్తాయని మీరు వింటారు. మైక్రోసర్వీస్‌ల ఆవిర్భావం వెనుక ఉన్న ఉద్దేశ్యాన్ని అర్థం చేసుకోవడానికి చరిత్రను చూద్దాం.

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

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

పైన పేర్కొన్నవన్నీ ఉన్నప్పటికీ, చాలా తక్కువ సంఖ్యలో డెవలపర్లు ఇప్పటికీ "మైక్రోసర్వీస్" భావనను నిర్వచించగలరు. కానీ మేము దీని గురించి కొంచెం తరువాత మాట్లాడుతాము ...

ఏకశిలా

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

పరిమాణం

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

అనుసంధానం

ఏకశిలా అనేది "పెద్ద బురద బంతి", దీనిలో మార్పులు అనూహ్య పరిణామాలకు దారితీస్తాయి. ఒక చోట మార్పులు చేయడం ద్వారా, మీరు మరొక చోట ఏకశిలాను పాడు చేయవచ్చు (అదే "మీరు మీ చెవిని గీసారు, *@ పడిపోయారు"). ఏకశిలాలోని భాగాలు చాలా క్లిష్టమైన మరియు, ముఖ్యంగా, కాని స్పష్టమైన సంబంధాలను కలిగి ఉండటమే దీనికి కారణం.

విస్తరణ

ఒక ఏకశిలాను అమలు చేయడం, దాని భాగాల మధ్య సంక్లిష్ట సంబంధాల కారణంగా, దాని స్వంత కర్మతో సుదీర్ఘ ప్రక్రియ. అటువంటి ఆచారం సాధారణంగా పూర్తిగా ప్రమాణీకరించబడదు మరియు "మౌఖికంగా" ఆమోదించబడుతుంది.

స్కేలబిలిటీ

మోనోలిత్ మాడ్యూల్స్ విరుద్ధమైన వనరుల అవసరాలను కలిగి ఉండవచ్చు, హార్డ్‌వేర్ పరంగా రాజీ అవసరం. మీరు A మరియు B సేవలను కలిగి ఉన్న ఏకశిలాను కలిగి ఉన్నారని ఊహించండి. సర్వీస్ A హార్డ్ డ్రైవ్ పరిమాణంపై డిమాండ్ చేస్తోంది మరియు సర్వీస్ B RAMపై డిమాండ్ చేస్తోంది. ఈ సందర్భంలో, మోనోలిత్ ఇన్‌స్టాల్ చేయబడిన యంత్రం తప్పనిసరిగా రెండు సేవల అవసరాలకు మద్దతు ఇవ్వాలి లేదా మీరు సేవల్లో ఒకదాన్ని మాన్యువల్‌గా, కృత్రిమంగా నిలిపివేయాలి.

మరొక ఉదాహరణ (మరింత క్లాసిక్): సర్వీస్ B కంటే సర్వీస్ A చాలా ప్రజాదరణ పొందింది, కాబట్టి మీరు 100 సర్వీస్‌లు A మరియు 10 సర్వీస్‌లు B ఉండాలని కోరుకుంటున్నారు. మళ్లీ రెండు ఎంపికలు: మేము 100 పూర్తి స్థాయి ఏకశిలాలను అమలు చేస్తాము లేదా కొన్నింటిలో సేవలు B మానవీయంగా నిలిపివేయబడాలి.

విశ్వసనీయత

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

జడత్వం

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

తీర్మానం

భాగాలు మరియు SOAకి వెళ్లడం ద్వారా ఈ సమస్యలను పరిష్కరించడానికి వ్యక్తులు ఎలా ప్రయత్నించారనే దాని గురించి మేము తదుపరిసారి మాట్లాడుతాము.

నిర్మాణ శైలి ఎంపిక (పార్ట్ 1)

ఇంకా చదవండి:

మూలం: www.habr.com

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