స్క్రిప్ట్‌ల నుండి మా స్వంత ప్లాట్‌ఫారమ్ వరకు: మేము CIANలో అభివృద్ధిని ఎలా ఆటోమేట్ చేసాము

స్క్రిప్ట్‌ల నుండి మా స్వంత ప్లాట్‌ఫారమ్ వరకు: మేము CIANలో అభివృద్ధిని ఎలా ఆటోమేట్ చేసాము

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

సున్నా స్థాయి

"సున్నా స్థాయి లాంటిదేమీ లేదు, నాకు అలాంటి విషయం తెలియదు"
"కుంగ్ ఫూ పాండా" చిత్రం నుండి మాస్టర్ షిఫు

కంపెనీ స్థాపించబడిన 14 సంవత్సరాల తర్వాత CIAN వద్ద ఆటోమేషన్ ప్రారంభమైంది. ఆ సమయంలో అభివృద్ధి బృందంలో 35 మంది ఉన్నారు. నమ్మడం కష్టం, సరియైనదా? వాస్తవానికి, ఆటోమేషన్ ఏదో ఒక రూపంలో ఉనికిలో ఉంది, కానీ నిరంతర ఏకీకరణ మరియు కోడ్ డెలివరీ కోసం ప్రత్యేక దిశ 2015లో రూపుదిద్దుకోవడం ప్రారంభించింది. 

ఆ సమయంలో, మేము Linux/Windows సర్వర్‌లపై మోహరించబడిన పైథాన్, C# మరియు PHP యొక్క భారీ ఏకశిలాను కలిగి ఉన్నాము. ఈ రాక్షసుడిని అమలు చేయడానికి, మేము మాన్యువల్‌గా అమలు చేసిన స్క్రిప్ట్‌ల సమితిని కలిగి ఉన్నాము. ఏకశిలా యొక్క అసెంబ్లీ కూడా ఉంది, ఇది శాఖలను విలీనం చేసేటప్పుడు, లోపాలను సరిదిద్దేటప్పుడు మరియు "బిల్డ్‌లో విభిన్నమైన పనులతో" పునర్నిర్మించేటప్పుడు విభేదాల కారణంగా నొప్పి మరియు బాధను తెచ్చిపెట్టింది. సరళీకృత ప్రక్రియ ఇలా కనిపిస్తుంది:

స్క్రిప్ట్‌ల నుండి మా స్వంత ప్లాట్‌ఫారమ్ వరకు: మేము CIANలో అభివృద్ధిని ఎలా ఆటోమేట్ చేసాము

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

మేము మా స్వంత వ్యవస్థ యొక్క ఆలోచనకు వచ్చాము

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

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

వ్యాపార ప్రక్రియలలో ఆటోమేషన్ పెరుగుదల కారణంగా, టీమ్‌సిటీలో ప్రాజెక్ట్‌లు మరియు పరుగుల సంఖ్య పెరిగింది. కాబట్టి ఒక కొత్త సమస్య వచ్చింది: ఒక ఉచిత టీమ్‌సిటీ ఉదాహరణ సరిపోలేదు (3 ఏజెంట్లు మరియు 100 ప్రాజెక్ట్‌లు), మేము మరొక ఉదాహరణను (మరో 3 ఏజెంట్లు మరియు 100 ప్రాజెక్ట్‌లు) జోడించాము. ఫలితంగా, మేము అనేక క్లస్టర్ల వ్యవస్థతో ముగించాము, ఇది నిర్వహించడం కష్టం:

స్క్రిప్ట్‌ల నుండి మా స్వంత ప్లాట్‌ఫారమ్ వరకు: మేము CIANలో అభివృద్ధిని ఎలా ఆటోమేట్ చేసాము

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

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

మేము పరీక్షను ఆటోమేట్ చేస్తాము

స్క్రిప్ట్‌ల నుండి మా స్వంత ప్లాట్‌ఫారమ్ వరకు: మేము CIANలో అభివృద్ధిని ఎలా ఆటోమేట్ చేసాము

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

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

ఆటోమేషన్ బృందం

మేము ప్రస్తుతం 130 మంది డెవలపర్‌ల సిబ్బందిని కలిగి ఉన్నాము మరియు మేము కొనసాగుతాము పెరగడానికి. నిరంతర ఏకీకరణ మరియు కోడ్ డెలివరీ కోసం బృందం (ఇకపై డిప్లాయ్ అండ్ ఇంటిగ్రేషన్ లేదా DI టీమ్‌గా సూచించబడుతుంది) 7 మంది వ్యక్తులను కలిగి ఉంటుంది మరియు 2 దిశల్లో పని చేస్తుంది: ఇంటిగ్రో ఆటోమేషన్ ప్లాట్‌ఫారమ్ మరియు DevOps అభివృద్ధి. 

CIAN సైట్ యొక్క Dev/Beta పర్యావరణానికి DevOps బాధ్యత వహిస్తుంది, ఇంటిగ్రో పర్యావరణం, డెవలపర్‌లు సమస్యలను పరిష్కరించడంలో సహాయపడుతుంది మరియు స్కేలింగ్ పరిసరాలకు కొత్త విధానాలను అభివృద్ధి చేస్తుంది. ఇంటెగ్రో డెవలప్‌మెంట్ డైరెక్షన్ ఇంటెగ్రో మరియు సంబంధిత సర్వీస్‌లతో వ్యవహరిస్తుంది, ఉదాహరణకు, జెంకిన్స్, జిరా, కాన్‌ఫ్లూయెన్స్ కోసం ప్లగిన్‌లు మరియు డెవలప్‌మెంట్ టీమ్‌ల కోసం సహాయక యుటిలిటీలు మరియు అప్లికేషన్‌లను కూడా అభివృద్ధి చేస్తుంది. 

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

CIAN వద్ద ఆటోమేషన్ యొక్క లేయర్ కేక్

స్క్రిప్ట్‌ల నుండి మా స్వంత ప్లాట్‌ఫారమ్ వరకు: మేము CIANలో అభివృద్ధిని ఎలా ఆటోమేట్ చేసాము

ఆటోమేషన్‌లో పాల్గొన్న అన్ని వ్యవస్థలను అనేక పొరలుగా విభజించవచ్చు:

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

ఈ భావన ఆధారంగా, మేము DI బృందంలో బాధ్యతాయుతమైన ప్రాంతాలను విభజిస్తాము. మొదటి రెండు లెవెల్‌లు ఇంటిగ్రో డెవలప్‌మెంట్ డైరెక్షన్‌లో బాధ్యతాయుతంగా ఉన్నాయి మరియు చివరి రెండు లెవెల్‌లు ఇప్పటికే DevOps బాధ్యతలో ఉన్నాయి. ఈ విభజన మనల్ని పనులపై దృష్టి పెట్టడానికి అనుమతిస్తుంది మరియు పరస్పర చర్యకు అంతరాయం కలిగించదు, ఎందుకంటే మేము ఒకరికొకరు దగ్గరగా ఉంటాము మరియు నిరంతరం జ్ఞానం మరియు అనుభవాన్ని మార్పిడి చేసుకుంటాము.

చెక్కుచెదరకుండా

ఇంటెగ్రోపై దృష్టి సారించి, టెక్నాలజీ స్టాక్‌తో ప్రారంభిద్దాం:

  • CentOS 7
  • డాకర్ + నోమాడ్ + కాన్సుల్ + వాల్ట్
  • జావా 11 (పాత ఇంటిగ్రో మోనోలిత్ జావా 8లో ఉంటుంది)
  • స్ప్రింగ్ బూట్ 2.X + స్ప్రింగ్ క్లౌడ్ కాన్ఫిగర్
  • PostgreSql 11
  • RabbitMQ 
  • అపాచీ ఇగ్నైట్
  • కముండా (ఎంబెడెడ్)
  • గ్రాఫానా + గ్రాఫైట్ + ప్రోమేతియస్ + జేగర్ + ELK
  • వెబ్ UI: రియాక్ట్ (CSR) + MobX
  • SSO: కీక్లాక్

మేము మైక్రోసర్వీస్ డెవలప్‌మెంట్ సూత్రానికి కట్టుబడి ఉంటాము, అయినప్పటికీ మేము ఇంటిగ్రో యొక్క ప్రారంభ వెర్షన్ యొక్క ఏకశిలా రూపంలో వారసత్వాన్ని కలిగి ఉన్నాము. ప్రతి మైక్రోసర్వీస్ దాని స్వంత డాకర్ కంటైనర్‌లో నడుస్తుంది మరియు సేవలు HTTP అభ్యర్థనలు మరియు RabbitMQ సందేశాల ద్వారా ఒకదానితో ఒకటి సంభాషించుకుంటాయి. మైక్రోసర్వీస్‌లు ఒకరినొకరు కాన్సుల్ ద్వారా కనుగొని, SSO (కీక్లోక్, OAuth 2/ఓపెన్‌ఐడి కనెక్ట్) ద్వారా ప్రామాణీకరణను అందజేసేందుకు అభ్యర్థనను అందిస్తాయి.

స్క్రిప్ట్‌ల నుండి మా స్వంత ప్లాట్‌ఫారమ్ వరకు: మేము CIANలో అభివృద్ధిని ఎలా ఆటోమేట్ చేసాము

నిజ జీవిత ఉదాహరణగా, కింది దశలను కలిగి ఉన్న జెంకిన్స్‌తో పరస్పర చర్యను పరిగణించండి:

  1. వర్క్‌ఫ్లో మేనేజ్‌మెంట్ మైక్రోసర్వీస్ (ఇకపై ఫ్లో మైక్రోసర్వీస్‌గా సూచించబడుతుంది) జెంకిన్స్‌లో బిల్డ్‌ను అమలు చేయాలనుకుంటోంది. దీన్ని చేయడానికి, అతను జెంకిన్స్‌తో (ఇకపై జెంకిన్స్ మైక్రోసర్వీస్‌గా సూచిస్తారు) మైక్రోసర్వీస్ యొక్క IP: PORTని కనుగొనడానికి కన్సల్‌ను ఉపయోగిస్తాడు మరియు జెంకిన్స్‌లో బిల్డ్‌ను ప్రారంభించడానికి దానికి అసమకాలిక అభ్యర్థనను పంపుతాడు.
  2. అభ్యర్థనను స్వీకరించిన తర్వాత, Jenkins microservice జాబ్ IDని ఉత్పత్తి చేస్తుంది మరియు ప్రతిస్పందిస్తుంది, ఇది పని ఫలితాన్ని గుర్తించడానికి ఉపయోగించబడుతుంది. అదే సమయంలో, ఇది REST API కాల్ ద్వారా జెంకిన్స్‌లో బిల్డ్‌ను ప్రేరేపిస్తుంది.
  3. జెంకిన్స్ నిర్మాణాన్ని నిర్వహిస్తుంది మరియు పూర్తయిన తర్వాత, అమలు ఫలితాలతో కూడిన వెబ్‌హుక్‌ను జెంకిన్స్ మైక్రోసర్వీస్‌కు పంపుతుంది.
  4. జెంకిన్స్ మైక్రోసర్వీస్, వెబ్‌హుక్‌ను స్వీకరించిన తర్వాత, అభ్యర్థన ప్రాసెసింగ్ పూర్తయినట్లు సందేశాన్ని రూపొందిస్తుంది మరియు దానికి అమలు ఫలితాలను జత చేస్తుంది. రూపొందించబడిన సందేశం RabbitMQ క్యూకి పంపబడుతుంది.
  5. RabbitMQ ద్వారా, ప్రచురించబడిన సందేశం ఫ్లో మైక్రోసర్వీస్‌కు చేరుకుంటుంది, ఇది అభ్యర్థన మరియు స్వీకరించిన సందేశం నుండి జాబ్ IDని సరిపోల్చడం ద్వారా దాని పనిని ప్రాసెస్ చేయడం ద్వారా దాని ఫలితం గురించి తెలుసుకుంటుంది.

ఇప్పుడు మనకు సుమారు 30 మైక్రోసర్వీసులు ఉన్నాయి, వీటిని అనేక సమూహాలుగా విభజించవచ్చు:

  1. ఆకృతీకరణ నిర్వహణ.
  2. సమాచారం మరియు వినియోగదారులతో పరస్పర చర్య (దూతలు, మెయిల్).
  3. సోర్స్ కోడ్‌తో పని చేస్తోంది.
  4. విస్తరణ సాధనాలతో ఏకీకరణ (జెంకిన్స్, నోమాడ్, కాన్సుల్, మొదలైనవి).
  5. పర్యవేక్షణ (విడుదలలు, లోపాలు మొదలైనవి).
  6. వెబ్ యుటిలిటీస్ (పరీక్ష పరిసరాలను నిర్వహించడం, గణాంకాలను సేకరించడం మొదలైనవి కోసం UI).
  7. టాస్క్ ట్రాకర్స్ మరియు ఇలాంటి సిస్టమ్‌లతో ఏకీకరణ.
  8. వివిధ పనుల కోసం వర్క్‌ఫ్లో నిర్వహణ.

వర్క్‌ఫ్లో పనులు

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

మనం ఎక్కువగా ఉపయోగించే వర్క్‌ఫ్లో చూద్దాం:

స్క్రిప్ట్‌ల నుండి మా స్వంత ప్లాట్‌ఫారమ్ వరకు: మేము CIANలో అభివృద్ధిని ఎలా ఆటోమేట్ చేసాము

రేఖాచిత్రంలో, పరివర్తనను ఇంటిగ్రో ద్వారా స్వయంచాలకంగా పిలుస్తారని గేర్ సూచిస్తుంది, అయితే మానవ వ్యక్తి పరివర్తనను మానవీయంగా పిలుస్తారని సూచిస్తుంది. ఈ వర్క్‌ఫ్లోలో టాస్క్ తీసుకోగల అనేక మార్గాలను చూద్దాం.

కానరీ పరీక్షలు లేకుండా DEV+BETAలో పూర్తిగా మాన్యువల్ పరీక్ష (సాధారణంగా మనం మోనోలిత్‌ను ఈ విధంగా విడుదల చేస్తాము):

స్క్రిప్ట్‌ల నుండి మా స్వంత ప్లాట్‌ఫారమ్ వరకు: మేము CIANలో అభివృద్ధిని ఎలా ఆటోమేట్ చేసాము

ఇతర పరివర్తన కలయికలు ఉండవచ్చు. కొన్నిసార్లు జిరాలోని ఎంపికల ద్వారా సమస్య తీసుకునే మార్గాన్ని ఎంచుకోవచ్చు.

టాస్క్ ఉద్యమం

“DEV టెస్టింగ్ + కానరీ టెస్ట్‌లు” వర్క్‌ఫ్లో ద్వారా టాస్క్ కదిలినప్పుడు నిర్వహించబడే ప్రధాన దశలను చూద్దాం:

1. డెవలపర్ లేదా PM టాస్క్‌ను సృష్టిస్తుంది.

2. డెవలపర్ పని చేయడానికి పనిని తీసుకుంటాడు. పూర్తయిన తర్వాత, ఇది ఇన్ రివ్యూ స్థితికి మారుతుంది.

3. జిరా జిరా మైక్రోసర్వీస్‌కు వెబ్‌హుక్‌ను పంపుతుంది (జిరాతో ఏకీకరణకు బాధ్యత వహిస్తుంది).

4. జిరా మైక్రోసర్వీస్ వర్క్‌ఫ్లోను ప్రారంభించడానికి ఫ్లో సేవకు (పని నిర్వహించే అంతర్గత వర్క్‌ఫ్లోలకు బాధ్యత వహిస్తుంది) అభ్యర్థనను పంపుతుంది.

5. ఫ్లో సేవ లోపల:

  • సమీక్షకులు టాస్క్‌కి కేటాయించబడ్డారు (యూజర్‌ల మైక్రోసర్వీస్ + జిరా మైక్రోసర్వీస్ గురించి ప్రతిదీ తెలుసు).
  • సోర్స్ మైక్రోసర్వీస్ ద్వారా (ఇది రిపోజిటరీలు మరియు శాఖల గురించి తెలుసు, కానీ కోడ్‌తోనే పని చేయదు), మా సంచిక యొక్క శాఖను కలిగి ఉన్న రిపోజిటరీల కోసం శోధన చేయబడుతుంది (శోధనను సరళీకృతం చేయడానికి, శాఖ పేరు సమస్యతో సమానంగా ఉంటుంది జిరాలో సంఖ్య). చాలా తరచుగా, ఒక పనికి ఒక రిపోజిటరీలో ఒక శాఖ మాత్రమే ఉంటుంది; ఇది విస్తరణ క్యూ నిర్వహణను సులభతరం చేస్తుంది మరియు రిపోజిటరీల మధ్య కనెక్టివిటీని తగ్గిస్తుంది.
  • కనుగొనబడిన ప్రతి శాఖ కోసం, క్రింది చర్యల క్రమం నిర్వహించబడుతుంది:

    i) మాస్టర్ బ్రాంచ్‌ను నవీకరించడం (కోడ్‌తో పని చేయడానికి Git మైక్రోసర్వీస్).
    ii) డెవలపర్ (బిట్‌బకెట్ మైక్రోసర్వీస్) చేసిన మార్పుల నుండి బ్రాంచ్ బ్లాక్ చేయబడింది.
    iii) ఈ శాఖ (బిట్‌బకెట్ మైక్రోసర్వీస్) కోసం పుల్ అభ్యర్థన సృష్టించబడింది.
    iv) కొత్త పుల్ అభ్యర్థన గురించి సందేశం డెవలపర్ చాట్‌లకు పంపబడుతుంది (నోటిఫికేషన్‌లతో పని చేయడానికి మైక్రోసర్వీస్‌కు తెలియజేయండి).
    v) DEV (జెంకిన్స్‌తో పని చేయడానికి జెంకిన్స్ మైక్రోసర్వీస్)లో బిల్డ్, టెస్ట్ మరియు డిప్లాయ్ టాస్క్‌లు ప్రారంభించబడ్డాయి.
    vi) మునుపటి దశలన్నీ విజయవంతంగా పూర్తయితే, Integro దాని ఆమోదాన్ని పుల్ అభ్యర్థన (బిట్‌బకెట్ మైక్రోసర్వీస్)లో ఉంచుతుంది.

  • నియమించబడిన సమీక్షకుల నుండి పుల్ అభ్యర్థనలో ఆమోదం కోసం Integro వేచి ఉంది.
  • అవసరమైన అన్ని ఆమోదాలు పొందిన వెంటనే (ఆటోమేటెడ్ పరీక్షలు సానుకూలంగా ఉత్తీర్ణత సాధించడంతో సహా), Integro ఆ పనిని టెస్ట్ ఆన్ దేవ్ (జిరా మైక్రోసర్వీస్) స్థితికి బదిలీ చేస్తుంది.

6. పరీక్షకులు విధిని పరీక్షిస్తారు. సమస్యలు లేనట్లయితే, టాస్క్ బిల్డ్ కోసం సిద్ధంగా ఉన్న స్థితికి బదిలీ చేయబడుతుంది.

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

8. పని కానరీ స్థితికి (జిరా మైక్రోసర్వీస్) బదిలీ చేయబడుతుంది.

9. జెంకిన్స్ నోమాడ్ ద్వారా కానరీ మోడ్‌లో (సాధారణంగా 1-3 సందర్భాలు) విస్తరణ పనిని ప్రారంభిస్తాడు మరియు విస్తరణ గురించి విడుదల పర్యవేక్షణ సేవ (డిప్లాయ్‌వాచ్ మైక్రోసర్వీస్)కి తెలియజేస్తాడు.

10. DeployWatch మైక్రోసర్వీస్ లోపం నేపథ్యాన్ని సేకరిస్తుంది మరియు అవసరమైతే దానికి ప్రతిస్పందిస్తుంది. లోపం నేపథ్యం మించిపోయినట్లయితే (నేపథ్య ప్రమాణం స్వయంచాలకంగా లెక్కించబడుతుంది), డెవలపర్‌లకు నోటిఫై మైక్రోసర్వీస్ ద్వారా తెలియజేయబడుతుంది. 5 నిమిషాల తర్వాత డెవలపర్ ప్రతిస్పందించనట్లయితే (రివర్ట్ లేదా స్టే క్లిక్ చేసి), అప్పుడు కానరీ ఇన్‌స్టాన్స్‌ల ఆటోమేటిక్ రోల్‌బ్యాక్ ప్రారంభించబడుతుంది. బ్యాక్‌గ్రౌండ్ మించకపోతే, డెవలపర్ తప్పనిసరిగా టాస్క్ డిప్లాయ్‌మెంట్‌ను ఉత్పత్తికి మాన్యువల్‌గా ప్రారంభించాలి (UIలోని బటన్‌ను క్లిక్ చేయడం ద్వారా). 60 నిమిషాలలోపు డెవలపర్ ఉత్పత్తికి విస్తరణను ప్రారంభించకపోతే, భద్రతా కారణాల దృష్ట్యా కానరీ ఉదంతాలు కూడా వెనక్కి తీసుకోబడతాయి.

11. ఉత్పత్తికి విస్తరణ ప్రారంభించిన తర్వాత:

  • పని ఉత్పత్తి స్థితికి (జిరా మైక్రోసర్వీస్) బదిలీ చేయబడుతుంది.
  • Jenkins microservice విస్తరణ ప్రక్రియను ప్రారంభిస్తుంది మరియు విస్తరణ గురించి DeployWatch మైక్రోసర్వీస్‌కు తెలియజేస్తుంది.
  • DeployWatch మైక్రోసర్వీస్ ఉత్పత్తిలో ఉన్న అన్ని కంటైనర్‌లు నవీకరించబడ్డాయని తనిఖీ చేస్తుంది (అన్నీ నవీకరించబడని సందర్భాలు ఉన్నాయి).
  • నోటిఫై మైక్రోసర్వీస్ ద్వారా, విస్తరణ ఫలితాల గురించి నోటిఫికేషన్ ఉత్పత్తికి పంపబడుతుంది.

12. మైక్రోసర్వీస్ ప్రవర్తన తప్పుగా గుర్తించబడితే, డెవలపర్‌లకు ఉత్పత్తి నుండి టాస్క్‌ను రోల్ బ్యాక్ చేయడం ప్రారంభించడానికి 30 నిమిషాల సమయం ఉంటుంది. ఈ సమయం తర్వాత, టాస్క్ స్వయంచాలకంగా మాస్టర్ (Git మైక్రోసర్వీస్)లో విలీనం చేయబడుతుంది.

13. మాస్టర్‌లో విజయవంతంగా విలీనం అయిన తర్వాత, టాస్క్ స్టేటస్ క్లోజ్డ్ (జిరా మైక్రోసర్వీస్)కి మార్చబడుతుంది.

రేఖాచిత్రం పూర్తిగా వివరంగా ఉన్నట్లు నటించదు (వాస్తవానికి ఇంకా ఎక్కువ దశలు ఉన్నాయి), కానీ ఇది ప్రక్రియలలో ఏకీకరణ స్థాయిని అంచనా వేయడానికి మిమ్మల్ని అనుమతిస్తుంది. మేము ఈ పథకాన్ని ఆదర్శంగా పరిగణించము మరియు స్వయంచాలక విడుదల మరియు విస్తరణ మద్దతు ప్రక్రియలను మెరుగుపరుస్తున్నాము.

తదుపరి ఏమిటి

ఆటోమేషన్ అభివృద్ధి కోసం మేము పెద్ద ప్రణాళికలను కలిగి ఉన్నాము, ఉదాహరణకు, మోనోలిత్ విడుదలల సమయంలో మాన్యువల్ ఆపరేషన్‌లను తొలగించడం, ఆటోమేటిక్ విస్తరణ సమయంలో పర్యవేక్షణను మెరుగుపరచడం మరియు డెవలపర్‌లతో పరస్పర చర్యను మెరుగుపరచడం.

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

మూలం: www.habr.com

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