స్లాక్‌లో ఉపయోగించిన ప్రాజెక్ట్ విస్తరణ పద్దతి

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

స్లాక్‌లో ఉపయోగించిన ప్రాజెక్ట్ విస్తరణ పద్దతి

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

ఈ రోజు ప్రాజెక్ట్ విస్తరణ ప్రక్రియలు ఎలా పని చేస్తాయి

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

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

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

ఉత్పత్తికి కొత్త విడుదలను అమలు చేసే ప్రక్రియ నాలుగు దశలను కలిగి ఉన్నట్లు భావించవచ్చు.

▍1. విడుదల శాఖను సృష్టిస్తోంది

ప్రతి విడుదల మా Git చరిత్రలో ఒక కొత్త విడుదల శాఖతో ప్రారంభమవుతుంది. ఇది విడుదలకు ట్యాగ్‌లను కేటాయించడానికి మిమ్మల్ని అనుమతిస్తుంది మరియు ఉత్పత్తికి విడుదల చేయడానికి విడుదలను సిద్ధం చేసే ప్రక్రియలో కనుగొనబడిన బగ్‌ల కోసం మీరు ప్రత్యక్ష పరిష్కారాలను చేయగల స్థలాన్ని అందిస్తుంది.

▍2. స్టేజింగ్ వాతావరణంలో విస్తరణ

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

▍3. డాగ్‌ఫుడ్ మరియు కానరీ పరిసరాలలో విస్తరణ

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

▍4. ఉత్పత్తికి క్రమంగా విడుదల

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

▍ విస్తరణ సమయంలో ఏదైనా తప్పు జరిగితే?

కోడ్‌లో మార్పులు చేయడం ఎల్లప్పుడూ ప్రమాదమే. కొత్త విడుదలను ఉత్పత్తిలోకి తీసుకురావడం, పర్యవేక్షణ సూచికలను పర్యవేక్షించడం మరియు కోడ్‌ని విడుదల చేసే ప్రోగ్రామర్‌ల పనిని సమన్వయం చేసే ప్రక్రియను నిర్వహించే సుశిక్షితులైన “విస్తరణ నాయకులు” ఉన్నందున మేము దీనిని ఎదుర్కొంటాము.

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

డిప్లాయ్‌మెంట్ సిస్టమ్ యొక్క బిల్డింగ్ బ్లాక్‌లు

మా ప్రాజెక్ట్ విస్తరణ వ్యవస్థకు సంబంధించిన సాంకేతికతలను చూద్దాం.

▍త్వరిత విస్తరణలు

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

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

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

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

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

▍అణు విస్తరణలు

బహుళ-స్థాయి విస్తరణ వ్యవస్థను చేరుకోవడానికి మాకు సహాయపడిన మరొక పరిష్కారం అణు విస్తరణ.

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

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

స్లాక్‌లో ఉపయోగించిన ప్రాజెక్ట్ విస్తరణ పద్దతి
1. అప్లికేషన్ కోడ్‌ను “కోల్డ్” డైరెక్టరీలోకి అన్‌ప్యాక్ చేయడం. 2. సిస్టమ్‌ను “కోల్డ్” డైరెక్టరీకి మార్చడం, అది “హాట్” (అణు ఆపరేషన్)

ఫలితాలు: విశ్వసనీయతకు ప్రాధాన్యత ఇవ్వడం

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

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

కానీ మేము అక్కడ ఆగడం లేదు. మేము మరింత అధునాతన సహాయక సాధనాలు మరియు పని ఆటోమేషన్ సాధనాలను ఉపయోగించి నిరంతరం ఈ వ్యవస్థను మెరుగుపరుస్తాము.

ప్రియమైన పాఠకులారా! మీరు పనిచేసే చోట కొత్త ప్రాజెక్ట్ విడుదలలను అమలు చేసే ప్రక్రియ ఎలా పని చేస్తుంది?

స్లాక్‌లో ఉపయోగించిన ప్రాజెక్ట్ విస్తరణ పద్దతి

మూలం: www.habr.com

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