మైక్రోసర్వీసెస్ - సంస్కరణల కలయిక పేలుడు

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

ఈ వచనాన్ని చదవడం ద్వారా మీకు ఇంకా సమస్య అర్థం కాకపోతే, నాకు వివరించనివ్వండి. మీ ఉత్పత్తిలో 10 మైక్రోసర్వీస్‌లు ఉన్నాయని అనుకుందాం. ఇప్పుడు ఈ మైక్రోసర్వీస్‌లలో ప్రతిదానికి 1 కొత్త వెర్షన్ విడుదల చేయబడిందని అనుకుందాం. కేవలం 1 వెర్షన్ మాత్రమే - ఇది చాలా అల్పమైన మరియు అతి తక్కువ వాస్తవం అని మనమందరం అంగీకరించగలమని నేను ఆశిస్తున్నాను. అయితే, ఇప్పుడు మా ఉత్పత్తిని మరొకసారి చూద్దాం. ప్రతి కాంపోనెంట్‌కు కేవలం ఒక కొత్త వెర్షన్‌తో, ఇప్పుడు మా ఉత్పత్తిని ఎలా కంపోజ్ చేయవచ్చో 2^10 - లేదా 1024 ప్రస్తారణలు ఉన్నాయి.

ఇంకా ఏదైనా అపార్థం ఉంటే, గణితాన్ని విడదీయండి. కాబట్టి మాకు 10 మైక్రోసర్వీస్‌లు ఉన్నాయి, ఒక్కొక్కటి ఒక్కో అప్‌డేట్‌ను అందుకుంటున్నాయి. అంటే, మేము ప్రతి మైక్రోసర్వీస్ కోసం 2 సాధ్యమైన సంస్కరణలను పొందుతాము (పాత లేదా కొత్తది). ఇప్పుడు, ప్రతి ఉత్పత్తి భాగాల కోసం, మేము ఈ రెండు సంస్కరణల్లో దేనినైనా ఉపయోగించవచ్చు. గణితశాస్త్రపరంగా, మనకు 10 అంకెల బైనరీ సంఖ్య ఉంటే అదే ఉంటుంది. ఉదాహరణకు, 1 కొత్త వెర్షన్ మరియు 0 పాత వెర్షన్ అని అనుకుందాం - అప్పుడు సాధ్యమయ్యే ఒక ప్రస్తారణను 1001000000గా సూచించవచ్చు - ఇక్కడ 1వ మరియు 4వ భాగాలు నవీకరించబడ్డాయి మరియు మిగతావన్నీ కావు. గణితశాస్త్రం నుండి 10-అంకెల బైనరీ సంఖ్య 2^10 లేదా 1024 విలువలను కలిగి ఉంటుందని మనకు తెలుసు. అంటే, మేము వ్యవహరిస్తున్న సంఖ్య యొక్క స్థాయిని మేము నిర్ధారించాము.

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

నేను ఈ సమస్యతో ఎందుకు ఆకర్షితుడయ్యాను? పాక్షికంగా ఎందుకంటే, గతంలో NLP మరియు AI ప్రపంచంలో పనిచేసినందున, మేము 5-6 సంవత్సరాల క్రితం కాంబినేటోరియల్ పేలుడు సమస్యను చాలా చర్చించాము. సంస్కరణలకు బదులుగా మేము వ్యక్తిగత పదాలను కలిగి ఉన్నాము మరియు ఉత్పత్తులకు బదులుగా మేము వాక్యాలు మరియు పేరాలను కలిగి ఉన్నాము. మరియు NLP మరియు AI యొక్క సమస్యలు పెద్దగా పరిష్కరించబడనప్పటికీ, గత కొన్ని సంవత్సరాలుగా గణనీయమైన పురోగతి సాధించబడిందని అంగీకరించాలి. (నా అభిప్రాయం ప్రకారం, పురోగతి సాధించవచ్చుоపరిశ్రమలోని వ్యక్తులు మెషిన్ లెర్నింగ్‌పై కొంచెం తక్కువ శ్రద్ధ వహిస్తే మరియు ఇతర టెక్నిక్‌లపై కొంచెం ఎక్కువ శ్రద్ధ చూపితే మంచిది - అయితే ఇది ఇప్పటికే టాపిక్‌కు దూరంగా ఉంది).

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

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

మనకు కావలసింది ఏకీకరణ దశలో ప్రయోగాత్మక వ్యవస్థ, ఇక్కడ మేము ప్రతి కాంపోనెంట్‌కు ప్రమాద కారకాన్ని గుర్తించగలము మరియు వివిధ భాగాలను నవీకరించడానికి మరియు ఆపరేటర్ జోక్యం లేకుండా పరీక్షించడానికి స్వయంచాలక ప్రక్రియను కూడా కలిగి ఉంటుంది - ఏది పని చేస్తుందో మరియు ఏది పని చేయదో చూడటానికి.

అటువంటి ప్రయోగాల వ్యవస్థ ఇలా ఉంటుంది:

  1. డెవలపర్‌లు పరీక్షలు వ్రాస్తారు (ఇది క్లిష్టమైన దశ - లేకపోతే మనకు మూల్యాంకన ప్రమాణం లేదు - ఇది మెషీన్ లెర్నింగ్‌లో డేటాను లేబుల్ చేయడం లాంటిది).
  2. ప్రతి భాగం (ప్రాజెక్ట్) దాని స్వంత CI వ్యవస్థను పొందుతుంది - ఈ ప్రక్రియ ఇప్పుడు బాగా అభివృద్ధి చేయబడింది మరియు ఒకే భాగం కోసం CI వ్యవస్థను సృష్టించే సమస్య చాలా వరకు పరిష్కరించబడింది.
  3. "స్మార్ట్ ఇంటిగ్రేషన్ సిస్టమ్" వివిధ CI సిస్టమ్‌ల ఫలితాలను సేకరిస్తుంది మరియు తుది ఉత్పత్తికి కాంపోనెంట్ ప్రాజెక్ట్‌లను సమీకరించి, టెస్టింగ్‌ను అమలు చేస్తుంది మరియు చివరకు ఇప్పటికే ఉన్న భాగాలు మరియు ప్రమాద కారకాల ఆధారంగా కావలసిన ఉత్పత్తి కార్యాచరణను పొందేందుకు చిన్నదైన మార్గాన్ని గణిస్తుంది. నవీకరణ సాధ్యం కాకపోతే, ఈ సిస్టమ్ డెవలపర్‌లకు ఇప్పటికే ఉన్న భాగాల గురించి మరియు వాటిలో ఏది లోపానికి కారణమవుతుందో తెలియజేస్తుంది. మరోసారి, పరీక్షా విధానం ఇక్కడ చాలా ముఖ్యమైనది - ఇంటిగ్రేషన్ సిస్టమ్ పరీక్షలను మూల్యాంకన ప్రమాణంగా ఉపయోగిస్తుంది కాబట్టి.
  4. CD సిస్టమ్, ఇది స్మార్ట్ ఇంటిగ్రేషన్ సిస్టమ్ నుండి డేటాను స్వీకరించి నేరుగా అప్‌డేట్ చేస్తుంది. ఈ దశ చక్రం ముగుస్తుంది.

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

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

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

మూలం: www.habr.com

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