ఏప్రిల్ చివరిలో, వైట్ వాకర్స్ వింటర్ఫెల్ను ముట్టడిస్తున్నప్పుడు, మాకు మరింత ఆసక్తికరంగా జరిగింది; మేము అసాధారణమైన రోల్అవుట్ చేసాము. సూత్రప్రాయంగా, మేము నిరంతరం కొత్త ఫీచర్లను ఉత్పత్తిలోకి విడుదల చేస్తున్నాము (అందరిలాగే). కానీ ఇది భిన్నంగా జరిగింది. దాని స్కేల్ ఏమిటంటే, మనం చేసే ఏవైనా సంభావ్య పొరపాట్లు మా సేవలు మరియు వినియోగదారులందరినీ ప్రభావితం చేస్తాయి. తత్ఫలితంగా, మేము ప్రణాళిక ప్రకారం, ప్రణాళికాబద్ధంగా మరియు ప్రకటించిన సమయ వ్యవధిలో, అమ్మకాల కోసం ఎటువంటి పరిణామాలు లేకుండా ప్రతిదీ రూపొందించాము. మేము దీన్ని ఎలా సాధించాము మరియు ఇంట్లో ఎవరైనా దీన్ని ఎలా పునరావృతం చేయవచ్చు అనే దాని గురించి కథనం.
నేను ఇప్పుడు మేము తీసుకున్న నిర్మాణ మరియు సాంకేతిక నిర్ణయాలను వివరించను లేదా అవన్నీ ఎలా పనిచేస్తాయో చెప్పను. ఇవి చాలా కష్టతరమైన రోల్అవుట్లలో ఒకటి ఎలా జరిగింది, నేను గమనించిన మరియు నేను ప్రత్యక్షంగా పాల్గొన్న దాని గురించి మార్జిన్లలో గమనికలు. నేను సంపూర్ణత లేదా సాంకేతిక వివరాలను క్లెయిమ్ చేయను; బహుశా అవి మరొక వ్యాసంలో కనిపిస్తాయి.
నేపథ్యం + ఇది ఎలాంటి కార్యాచరణ?
మేము క్లౌడ్ ప్లాట్ఫారమ్ను నిర్మిస్తున్నాము
సాధారణంగా ఇటువంటి విషయాలు ఏదైనా ప్రాజెక్టుల ప్రారంభంలోనే నిర్మించడం ప్రారంభిస్తాయి. కానీ MCSలో చారిత్రాత్మకంగా విషయాలు కొద్దిగా భిన్నంగా ఉన్నాయి. MCS రెండు భాగాలుగా నిర్మించబడింది:
- దాని స్వంత కీస్టోన్ అధికార మాడ్యూల్తో ఓపెన్స్టాక్,
- Mail.ru క్లౌడ్ ప్రాజెక్ట్ ఆధారంగా హాట్బాక్స్ (S3 నిల్వ),
దీని చుట్టూ కొత్త సేవలు కనిపించాయి.
ముఖ్యంగా, ఇవి రెండు వేర్వేరు రకాల అధికారాలు. అదనంగా, మేము కొన్ని ప్రత్యేక Mail.ru డెవలప్మెంట్లను ఉపయోగించాము, ఉదాహరణకు, సాధారణ Mail.ru పాస్వర్డ్ నిల్వ, అలాగే స్వీయ-వ్రాతపూర్వక openid కనెక్టర్, దీనికి ధన్యవాదాలు Horizon ప్యానెల్లో SSO (ఎండ్-టు-ఎండ్ ఆథరైజేషన్) అందించబడింది. వర్చువల్ మిషన్ల (స్థానిక OpenStack UI).
మా కోసం IAMని తయారు చేయడం అంటే అన్నింటినీ ఒకే సిస్టమ్లోకి కనెక్ట్ చేయడం, పూర్తిగా మా స్వంతం. అదే సమయంలో, మేము మార్గంలో ఎటువంటి కార్యాచరణను కోల్పోము, కానీ భవిష్యత్తు కోసం ఒక పునాదిని సృష్టిస్తాము, అది రీఫ్యాక్టరింగ్ చేయకుండా పారదర్శకంగా దాన్ని మెరుగుపరచడానికి మరియు కార్యాచరణ పరంగా స్కేల్ చేయడానికి అనుమతిస్తుంది. ప్రారంభంలో, వినియోగదారులు సేవలకు (సెంట్రల్ RBAC, రోల్-బేస్డ్ యాక్సెస్ కంట్రోల్) మరియు కొన్ని ఇతర చిన్న విషయాలకు ప్రాప్యత కోసం రోల్ మోడల్ను కలిగి ఉన్నారు.
పని అల్పమైనది కాదు: పైథాన్ మరియు పెర్ల్, అనేక బ్యాకెండ్లు, స్వతంత్రంగా వ్రాసిన సేవలు, అనేక అభివృద్ధి బృందాలు మరియు నిర్వాహకులు. మరియు ముఖ్యంగా, పోరాట ఉత్పత్తి వ్యవస్థలో వేలాది మంది ప్రత్యక్ష వినియోగదారులు ఉన్నారు. ఇవన్నీ వ్రాయవలసి వచ్చింది మరియు, ముఖ్యంగా, ప్రాణనష్టం లేకుండా బయటకు వచ్చింది.
మనం ఏమి విడుదల చేయబోతున్నాం?
చాలా స్థూలంగా చెప్పాలంటే, సుమారు 4 నెలల్లో మేము ఈ క్రింది వాటిని సిద్ధం చేసాము:
- మేము ఇన్ఫ్రాస్ట్రక్చర్లోని వివిధ భాగాలలో గతంలో పనిచేసిన ఫంక్షన్లను సమగ్రపరిచే అనేక కొత్త డెమోన్లను సృష్టించాము. మిగిలిన సేవలకు ఈ రాక్షసుల రూపంలో కొత్త బ్యాకెండ్ని నిర్దేశించారు.
- మేము మా అన్ని సేవలకు అందుబాటులో ఉన్న పాస్వర్డ్లు మరియు కీల యొక్క మా స్వంత కేంద్ర నిల్వను వ్రాసాము, వీటిని మనకు అవసరమైన విధంగా ఉచితంగా సవరించవచ్చు.
- మేము మొదటి నుండి కీస్టోన్ కోసం 4 కొత్త బ్యాకెండ్లను వ్రాసాము (యూజర్లు, ప్రాజెక్ట్లు, పాత్రలు, రోల్ అసైన్మెంట్లు), వాస్తవానికి, దాని డేటాబేస్ స్థానంలో ఉంది మరియు ఇప్పుడు మా వినియోగదారు పాస్వర్డ్ల కోసం ఒకే రిపోజిటరీగా పనిచేస్తుంది.
- మేము మా అన్ని Openstack సేవలను ప్రతి సర్వర్ నుండి స్థానికంగా ఈ విధానాలను చదవడానికి బదులుగా వారి విధానాల కోసం మూడవ పక్ష పాలసీ సేవకు వెళ్లమని నేర్పించాము (అవును, డిఫాల్ట్గా Openstack ఎలా పని చేస్తుంది!)
ఇటువంటి ప్రధాన పునర్నిర్మాణానికి వివిధ అభివృద్ధి బృందాలు వ్రాసిన అనేక సిస్టమ్లలో పెద్ద, సంక్లిష్టమైన మరియు ముఖ్యంగా సమకాలిక మార్పులు అవసరం. సమావేశమైన తర్వాత, మొత్తం వ్యవస్థ పని చేయాలి.
అటువంటి మార్పులను ఎలా బయటకు తీయాలి మరియు దానిని స్క్రూ చేయకూడదు? మొదట మేము భవిష్యత్తును కొద్దిగా చూడాలని నిర్ణయించుకున్నాము.
రోల్అవుట్ వ్యూహం
- అనేక దశల్లో ఉత్పత్తిని రోల్ చేయడం సాధ్యమవుతుంది, అయితే ఇది అభివృద్ధి సమయాన్ని మూడు రెట్లు పెంచుతుంది. అదనంగా, కొంత సమయం వరకు మేము డేటాబేస్లలో డేటా యొక్క పూర్తి డీసింక్రొనైజేషన్ను కలిగి ఉంటాము. మీరు మీ స్వంత సమకాలీకరణ సాధనాలను వ్రాయవలసి ఉంటుంది మరియు బహుళ డేటా స్టోర్లతో ఎక్కువ కాలం జీవించాలి. మరియు ఇది అనేక రకాల ప్రమాదాలను సృష్టిస్తుంది.
- వినియోగదారు కోసం పారదర్శకంగా సిద్ధం చేయగల ప్రతిదీ ముందుగానే జరిగింది. 2 నెలలు పట్టింది.
- మేము చాలా గంటలపాటు పనికిరాని సమయాన్ని అనుమతించాము - వనరులను సృష్టించడానికి మరియు మార్చడానికి వినియోగదారు కార్యకలాపాల కోసం మాత్రమే.
- ఇప్పటికే సృష్టించబడిన అన్ని వనరుల ఆపరేషన్ కోసం, పనికిరాని సమయం ఆమోదయోగ్యం కాదు. రోల్అవుట్ సమయంలో, వనరులు పనికిరాకుండా పని చేయాలని మరియు క్లయింట్లపై ప్రభావం చూపాలని మేము ప్లాన్ చేసాము.
- ఏదైనా తప్పు జరిగితే మా కస్టమర్లపై ప్రభావాన్ని తగ్గించడానికి, మేము ఆదివారం సాయంత్రం విడుదల చేయాలని నిర్ణయించుకున్నాము. రాత్రిపూట వర్చువల్ మెషీన్లను తక్కువ మంది కస్టమర్లు నిర్వహిస్తారు.
- రోల్అవుట్ కోసం ఎంచుకున్న వ్యవధిలో, సేవా నిర్వహణ అందుబాటులో ఉండదని మేము మా క్లయింట్లందరికీ హెచ్చరించాము.
డైగ్రెషన్: రోల్అవుట్ అంటే ఏమిటి?
<జాగ్రత్త, తత్వశాస్త్రం>
రోల్అవుట్ అంటే ఏమిటో ప్రతి IT స్పెషలిస్ట్ సులభంగా సమాధానం ఇవ్వగలరు. మీరు CI/CDని ఇన్స్టాల్ చేయండి మరియు ప్రతిదీ ఆటోమేటిక్గా స్టోర్కు డెలివరీ చేయబడుతుంది. 🙂
అయితే ఇది నిజం. కానీ ఇబ్బంది ఏమిటంటే, ఆధునిక కోడ్ డెలివరీ ఆటోమేషన్ సాధనాలతో, రోల్అవుట్ గురించిన అవగాహన పోతుంది. ఆధునిక రవాణాను చూసేటప్పుడు మీరు చక్రం యొక్క ఆవిష్కరణ యొక్క ఇతిహాసం గురించి ఎలా మరచిపోతారు. ప్రతిదీ చాలా స్వయంచాలకంగా ఉంది, రోల్అవుట్ తరచుగా మొత్తం చిత్రాన్ని అర్థం చేసుకోకుండానే నిర్వహించబడుతుంది.
మరియు మొత్తం చిత్రం ఇలా ఉంది. రోల్అవుట్ నాలుగు ప్రధాన అంశాలను కలిగి ఉంటుంది:
- డేటా సవరణతో సహా కోడ్ డెలివరీ. ఉదాహరణకు, వారి వలసలు.
- కోడ్ రోల్బ్యాక్ అంటే ఏదైనా తప్పు జరిగితే వెనక్కి వెళ్లే సామర్థ్యం. ఉదాహరణకు, బ్యాకప్లను సృష్టించడం ద్వారా.
- ప్రతి రోల్అవుట్/రోల్బ్యాక్ ఆపరేషన్ సమయం. మీరు మొదటి రెండు పాయింట్ల ఏదైనా ఆపరేషన్ యొక్క సమయాన్ని అర్థం చేసుకోవాలి.
- ప్రభావితమైన కార్యాచరణ. ఆశించిన సానుకూల మరియు సాధ్యమయ్యే ప్రతికూల ప్రభావాలను అంచనా వేయడం అవసరం.
విజయవంతమైన రోల్ అవుట్ కోసం ఈ అన్ని అంశాలను తప్పనిసరిగా పరిగణనలోకి తీసుకోవాలి. సాధారణంగా మొదటిది లేదా ఉత్తమంగా రెండవది మాత్రమే పాయింట్ అంచనా వేయబడుతుంది, ఆపై రోల్ అవుట్ విజయవంతమైనదిగా పరిగణించబడుతుంది. కానీ మూడవ మరియు నాల్గవ మరింత ముఖ్యమైనవి. రోల్అవుట్కి నిమిషం బదులుగా 3 గంటలు పట్టినట్లయితే ఏ వినియోగదారు దీన్ని ఇష్టపడతారు? లేదా రోల్అవుట్ సమయంలో అనవసరమైన ఏదైనా ప్రభావితమైతే? లేదా ఒక సేవ యొక్క పనికిరాని సమయం అనూహ్య పరిణామాలకు దారితీస్తుందా?
చట్టం 1..n, విడుదలకు సన్నాహాలు
మొదట నేను మా సమావేశాలను క్లుప్తంగా వివరించాలని అనుకున్నాను: మొత్తం బృందం, దాని భాగాలు, కాఫీ పాయింట్ల వద్ద చర్చల కుప్పలు, వాదనలు, పరీక్షలు, మెదడు తుఫానులు. అప్పుడు అది అనవసరం అనుకున్నాను. నాలుగు నెలల అభివృద్ధి ఎల్లప్పుడూ దీన్ని కలిగి ఉంటుంది, ప్రత్యేకించి మీరు నిరంతరం బట్వాడా చేయగల ఏదైనా రాయడం లేదు, కానీ ప్రత్యక్ష సిస్టమ్ కోసం ఒక పెద్ద ఫీచర్. ఇది అన్ని సేవలను ప్రభావితం చేస్తుంది, కానీ "వెబ్ ఇంటర్ఫేస్లోని ఒక బటన్" మినహా వినియోగదారుల కోసం ఏమీ మారకూడదు.
ప్రతి కొత్త మీటింగ్ నుండి ఎలా బయటకు వెళ్లాలో మా అవగాహన మారిపోయింది మరియు చాలా ముఖ్యమైనది. ఉదాహరణకు, మేము మా మొత్తం బిల్లింగ్ డేటాబేస్ను అప్డేట్ చేయబోతున్నాము. కానీ మేము సమయాన్ని లెక్కించాము మరియు సహేతుకమైన రోల్ అవుట్ సమయంలో దీన్ని చేయడం అసాధ్యమని గ్రహించాము. బిల్లింగ్ డేటాబేస్ను ముక్కలు చేయడానికి మరియు ఆర్కైవ్ చేయడానికి మాకు దాదాపు ఒక వారం అదనపు సమయం పట్టింది. మరియు ఊహించిన రోల్అవుట్ వేగం ఇప్పటికీ సంతృప్తికరంగా లేనప్పుడు, మేము అదనపు, మరింత శక్తివంతమైన హార్డ్వేర్ను ఆర్డర్ చేసాము, అక్కడ మొత్తం బేస్ లాగబడింది. మేము దీన్ని త్వరగా చేయకూడదని కాదు, కానీ ప్రస్తుత అవసరం కారణంగా మాకు ఎటువంటి ఎంపికలు లేవు.
రోల్అవుట్ మా వర్చువల్ మెషీన్ల లభ్యతను ప్రభావితం చేస్తుందని మాలో ఒకరికి సందేహం ఉన్నప్పుడు, మేము ఒక వారం పాటు పరీక్షలు, ప్రయోగాలు, కోడ్ విశ్లేషణలను నిర్వహించాము మరియు మా ఉత్పత్తిలో ఇది జరగదని స్పష్టమైన అవగాహన పొందాము మరియు చాలా సందేహాస్పద వ్యక్తులు కూడా అంగీకరించారు. దీనితో.
ఈలోగా, సాంకేతిక మద్దతు నుండి వచ్చిన కుర్రాళ్ళు కనెక్షన్ పద్ధతులపై క్లయింట్లకు సూచనలను వ్రాయడానికి వారి స్వంత స్వతంత్ర ప్రయోగాలను నిర్వహించారు, అవి రోల్అవుట్ తర్వాత మారాలి. వారు వినియోగదారు UXలో పనిచేశారు, సూచనలను సిద్ధం చేశారు మరియు వ్యక్తిగత సంప్రదింపులను అందించారు.
మేము సాధ్యమయ్యే అన్ని రోల్అవుట్ కార్యకలాపాలను ఆటోమేట్ చేసాము. ప్రతి ఆపరేషన్ స్క్రిప్ట్ చేయబడింది, సరళమైనది కూడా, మరియు పరీక్షలు నిరంతరం అమలు చేయబడతాయి. సేవను ఆఫ్ చేయడానికి ఉత్తమ మార్గం గురించి వారు వాదించారు - డెమోన్ను వదిలివేయండి లేదా ఫైర్వాల్తో సేవకు యాక్సెస్ను నిరోధించండి. మేము రోల్ అవుట్ యొక్క ప్రతి దశ కోసం బృందాల చెక్లిస్ట్ను సృష్టించాము మరియు దానిని నిరంతరం అప్డేట్ చేస్తాము. మేము సమయాలతో పాటు అన్ని రోల్అవుట్ పనుల కోసం గాంట్ చార్ట్ను గీసాము మరియు నిరంతరం అప్డేట్ చేస్తాము.
అందువలన…
చివరి చర్య, రోల్ అవుట్ చేయడానికి ముందు
...ఇది బయటకు వెళ్లడానికి సమయం.
వారు చెప్పినట్లుగా, కళ యొక్క పనిని పూర్తి చేయడం సాధ్యం కాదు, దానిపై పని చేయడం మాత్రమే పూర్తి అవుతుంది. మీరు సంకల్పం కోసం ప్రయత్నించాలి, మీరు ప్రతిదీ కనుగొనలేరని అర్థం చేసుకోవాలి, కానీ మీరు అన్ని సహేతుకమైన అంచనాలను చేశారని, సాధ్యమయ్యే అన్ని సందర్భాలలో అందించారని, అన్ని క్లిష్టమైన బగ్లను మూసివేసారని మరియు పాల్గొనే వారందరూ వారు చేయగలిగినదంతా చేశారని నమ్ముతారు. మీరు ఎంత ఎక్కువ కోడ్ను విడుదల చేస్తే, దీని గురించి మిమ్మల్ని మీరు ఒప్పించడం మరింత కష్టం (అంతేకాకుండా, ప్రతిదాన్ని ఊహించడం అసాధ్యం అని ప్రతి ఒక్కరూ అర్థం చేసుకుంటారు).
ఊహించని ప్రభావాలు మరియు పనికిరాని సమయాలతో సంబంధం ఉన్న మా వినియోగదారుల కోసం అన్ని రిస్క్లను కవర్ చేయడానికి మేము సాధ్యమైనదంతా చేశామని మేము నిర్ధారించినప్పుడు మేము విడుదల చేయడానికి సిద్ధంగా ఉన్నామని మేము నిర్ణయించుకున్నాము. అంటే, తప్ప ఏదైనా తప్పు జరగవచ్చు:
- (మాకు పవిత్రమైనది, అత్యంత విలువైనది) వినియోగదారు మౌలిక సదుపాయాలను ప్రభావితం చేయండి,
- కార్యాచరణ: రోల్అవుట్ తర్వాత మా సేవ యొక్క ఉపయోగం మునుపటి మాదిరిగానే ఉండాలి.
రోలింగ్ అవుట్
రెండు రోల్, 8 జోక్యం చేసుకోవద్దు
మేము వినియోగదారుల నుండి వచ్చిన అన్ని అభ్యర్థనల కోసం 7 గంటలపాటు పనిని నిలిపివేస్తాము. ఈ సమయంలో, మా వద్ద రోల్అవుట్ ప్లాన్ మరియు రోల్బ్యాక్ ప్లాన్ రెండూ ఉన్నాయి.
- రోల్ అవుట్ దాదాపు 3 గంటలు పడుతుంది.
- పరీక్ష కోసం 2 గంటలు.
- 2 గంటలు - సాధ్యమయ్యే మార్పుల కోసం రిజర్వ్ చేయండి.
ప్రతి చర్యకు గాంట్ చార్ట్ రూపొందించబడింది, ఎంత సమయం పడుతుంది, వరుసగా ఏమి జరుగుతుంది, సమాంతరంగా ఏమి జరుగుతుంది.
రోల్అవుట్ గాంట్ చార్ట్ యొక్క భాగం, ప్రారంభ వెర్షన్లలో ఒకటి (సమాంతర అమలు లేకుండా). అత్యంత విలువైన సమకాలీకరణ సాధనం
రోల్అవుట్లో పాల్గొనే వారందరికీ వారి పాత్ర ఉంటుంది, వారు ఏ పనులు చేస్తారు మరియు వారు దేనికి బాధ్యత వహిస్తారు. మేము ప్రతి దశను స్వయంచాలకంగా తీసుకురావడానికి ప్రయత్నిస్తాము, దాన్ని రోల్ అవుట్ చేయండి, వెనక్కి తిప్పండి, ఫీడ్బ్యాక్ని సేకరించి, దాన్ని మళ్లీ బయటకు తీయడానికి ప్రయత్నిస్తాము.
సంఘటనల క్రానికల్
కాబట్టి, ఏప్రిల్ 15, ఆదివారం రాత్రి 29 గంటలకు 10 మంది పనికి వచ్చారు. ముఖ్య పాల్గొనేవారితో పాటు, కొంతమంది జట్టుకు మద్దతు ఇవ్వడానికి వచ్చారు, దీనికి వారికి ప్రత్యేక ధన్యవాదాలు.
మా కీ టెస్టర్ సెలవులో ఉన్నారని కూడా పేర్కొనడం విలువ. పరీక్ష లేకుండా రోల్ అవుట్ చేయడం అసాధ్యం, మేము ఎంపికలను అన్వేషిస్తున్నాము. ఒక సహోద్యోగి సెలవుల నుండి మమ్మల్ని పరీక్షించడానికి అంగీకరిస్తుంది, దాని కోసం ఆమె మొత్తం బృందం నుండి అపారమైన కృతజ్ఞతను పొందుతుంది.
00:00. ఆపు
మేము వినియోగదారు అభ్యర్థనలను నిలిపివేస్తాము, సాంకేతిక పని అని సూచించే సైన్ను వేలాడదీస్తాము. పర్యవేక్షణ అరుస్తుంది, కానీ ప్రతిదీ సాధారణమైనది. పడాల్సినవి తప్ప మరేమీ పడలేదని మేము తనిఖీ చేస్తాము. మరియు మేము వలసపై పనిని ప్రారంభిస్తాము.
ప్రతి ఒక్కరూ పాయింట్లవారీగా ప్రింటెడ్ రోల్అవుట్ ప్లాన్ని కలిగి ఉంటారు, ఎవరు ఏమి చేస్తున్నారో మరియు ఏ సమయంలో చేస్తున్నారో అందరికీ తెలుసు. ప్రతి చర్య తర్వాత, మేము వాటిని మించకుండా ఉండేలా సమయాలను తనిఖీ చేస్తాము మరియు ప్రతిదీ ప్రణాళిక ప్రకారం జరుగుతుంది. ప్రస్తుత దశలో నేరుగా రోల్అవుట్లో పాల్గొనని వారు తమ సహోద్యోగులకు ఇబ్బంది కలగకుండా ఆన్లైన్ బొమ్మను (Xonotic, type 3 quacks) ప్రారంభించడం ద్వారా సిద్ధమవుతున్నారు. 🙂
02:00. బయటికి తీశారు
ఆనందకరమైన ఆశ్చర్యం - మా డేటాబేస్లు మరియు మైగ్రేషన్ స్క్రిప్ట్ల ఆప్టిమైజేషన్ కారణంగా మేము ఒక గంట ముందుగానే రోల్అవుట్ని పూర్తి చేస్తాము. సాధారణ ఏడుపు, "బయటకు వచ్చింది!" అన్ని కొత్త ఫంక్షన్లు ఉత్పత్తిలో ఉన్నాయి, కానీ ఇప్పటివరకు మనం వాటిని ఇంటర్ఫేస్లో మాత్రమే చూడగలం. ప్రతి ఒక్కరూ టెస్టింగ్ మోడ్లోకి వెళ్లి, వాటిని సమూహాలుగా క్రమబద్ధీకరిస్తారు మరియు చివరికి ఏమి జరిగిందో చూడటం ప్రారంభిస్తారు.
ఇది చాలా బాగా జరగలేదు, 10 నిమిషాల తర్వాత, ఏమీ కనెక్ట్ కానప్పుడు లేదా బృంద సభ్యుల ప్రాజెక్ట్లలో పని చేసినప్పుడు మేము దీనిని గ్రహిస్తాము. త్వరిత సమకాలీకరణ, మేము మా సమస్యలను తెలియజేస్తాము, ప్రాధాన్యతలను సెట్ చేస్తాము, బృందాలుగా విడిపోయి డీబగ్గింగ్కు వెళ్తాము.
02:30. రెండు పెద్ద సమస్యలు vs నాలుగు కళ్ళు
మేము రెండు పెద్ద సమస్యలను కనుగొంటాము. కస్టమర్లు కొన్ని కనెక్ట్ చేయబడిన సేవలను చూడలేరని మరియు భాగస్వామి ఖాతాలతో సమస్యలు తలెత్తుతాయని మేము గ్రహించాము. రెండూ కొన్ని ఎడ్జ్ కేసుల కోసం అసంపూర్ణ మైగ్రేషన్ స్క్రిప్ట్ల కారణంగా ఉన్నాయి. మనం ఇప్పుడు దాన్ని సరిచేయాలి.
మేము కనీసం 4 కళ్లతో దీన్ని రికార్డ్ చేసే ప్రశ్నలను వ్రాస్తాము. అవి పని చేస్తున్నాయని మరియు దేనినీ విచ్ఛిన్నం చేయలేదని నిర్ధారించుకోవడానికి మేము వాటిని ప్రీ-ప్రొడక్షన్ సమయంలో పరీక్షిస్తాము. మీరు రోల్ చేయవచ్చు. అదే సమయంలో, మేము మా సాధారణ ఇంటిగ్రేషన్ పరీక్షను అమలు చేస్తాము, ఇది మరికొన్ని సమస్యలను వెల్లడిస్తుంది. అవన్నీ చిన్నవి, కానీ వాటిని కూడా మరమ్మతులు చేయాలి.
03:00. -2 సమస్యలు +2 సమస్యలు
మునుపటి రెండు పెద్ద సమస్యలు పరిష్కరించబడ్డాయి మరియు దాదాపు అన్ని చిన్న సమస్యలు కూడా పరిష్కరించబడ్డాయి. పరిష్కారాలలో ఖాళీగా లేని వారందరూ వారి ఖాతాలలో చురుకుగా పని చేస్తున్నారు మరియు వారు కనుగొన్న వాటిని నివేదిస్తున్నారు. మేము ప్రాధాన్యతనిస్తాము, జట్ల మధ్య పంపిణీ చేస్తాము మరియు ముఖ్యమైనవి కాని వస్తువులను ఉదయం వదిలివేస్తాము.
మేము మళ్లీ పరీక్షలను అమలు చేస్తాము, వారు రెండు కొత్త పెద్ద సమస్యలను కనుగొంటారు. అన్ని సేవా విధానాలు సరిగ్గా రాలేదు, కాబట్టి కొన్ని వినియోగదారు అభ్యర్థనలు అధికారాన్ని ఆమోదించవు. అదనంగా భాగస్వామి ఖాతాలతో కొత్త సమస్య. చూద్దాం హడావిడిగా.
03:20. అత్యవసర సమకాలీకరణ
ఒక కొత్త సమస్య పరిష్కరించబడింది. రెండవది, మేము అత్యవసర సమకాలీకరణను నిర్వహిస్తున్నాము. ఏమి జరుగుతుందో మేము అర్థం చేసుకున్నాము: మునుపటి పరిష్కారం ఒక సమస్యను పరిష్కరించింది, కానీ మరొకటి సృష్టించబడింది. సరిగ్గా మరియు పరిణామాలు లేకుండా ఎలా చేయాలో గుర్తించడానికి మేము విరామం తీసుకుంటాము.
03:30. ఆరు కళ్ళు
ఆధారం యొక్క తుది స్థితి ఎలా ఉండాలో మేము అర్థం చేసుకున్నాము, తద్వారా అన్ని భాగస్వాములకు అంతా బాగా జరుగుతుంది. మేము 6 కళ్లతో ఒక అభ్యర్థనను వ్రాస్తాము, దానిని ప్రీ-ప్రొడక్షన్లో రోల్ అవుట్ చేస్తాము, దానిని పరీక్షించాము, ఉత్పత్తి కోసం రోల్ అవుట్ చేస్తాము.
04:00. అంతా పని చేస్తోంది
అన్ని పరీక్షలు ఉత్తీర్ణత సాధించాయి, క్లిష్టమైన సమస్యలు ఏవీ కనిపించవు. ఎప్పటికప్పుడు, బృందంలోని ఏదో ఒకరికి పని చేయదు, మేము వెంటనే ప్రతిస్పందిస్తాము. చాలా తరచుగా అలారం తప్పు. కానీ కొన్నిసార్లు ఏదో ఒకటి రాలేదు లేదా ప్రత్యేక పేజీ పని చేయదు. మేము కూర్చున్నాము, పరిష్కరించండి, సరిదిద్దండి, పరిష్కరించండి. ప్రత్యేక బృందం చివరి పెద్ద ఫీచర్ - బిల్లింగ్ను ప్రారంభిస్తోంది.
04:30. పాయింట్ ఆఫ్ నో రిటర్న్
తిరిగి రాని సమయం సమీపిస్తోంది. బిల్లింగ్తో సమస్యలు ఉన్నాయి, ఇది ప్రతిదీ తెలుసు మరియు రికార్డ్ చేస్తుంది, కానీ ఖాతాదారుల నుండి డబ్బును రాయడానికి మొండిగా నిరాకరిస్తుంది. వ్యక్తిగత పేజీలు, చర్యలు మరియు హోదాలలో అనేక బగ్లు ఉన్నాయి. ప్రధాన కార్యాచరణ పనిచేస్తుంది, అన్ని పరీక్షలు విజయవంతంగా పాస్. రోల్అవుట్ జరిగిందని మేము నిర్ణయించుకుంటాము, మేము వెనక్కి వెళ్లము.
06:00. UIలోని ప్రతి ఒక్కరి కోసం తెరవండి
బగ్లు పరిష్కరించబడ్డాయి. వినియోగదారులకు నచ్చని కొన్ని తరువాత మిగిలి ఉన్నాయి. మేము అందరికీ ఇంటర్ఫేస్ని తెరుస్తాము. మేము బిల్లింగ్పై పని చేస్తూనే ఉన్నాము, వినియోగదారు అభిప్రాయం మరియు పర్యవేక్షణ ఫలితాల కోసం వేచి ఉన్నాము.
07:00. API లోడ్తో సమస్యలు
మేము మా APIలో లోడ్ని కొంచెం తప్పుగా ప్లాన్ చేసాము మరియు ఈ లోడ్ని పరీక్షించాము, ఇది సమస్యను గుర్తించలేకపోయింది. ఫలితంగా, ≈5% అభ్యర్థనలు విఫలమయ్యాయి. ఉద్యమించి కారణం వెతుకుదాం.
బిల్లింగ్ మొండిగా ఉంది మరియు పని చేయడానికి కూడా ఇష్టపడదు. మార్పులను ప్రశాంతంగా నిర్వహించడానికి మేము దానిని తరువాత వరకు వాయిదా వేయాలని నిర్ణయించుకున్నాము. అంటే, అన్ని వనరులు దానిలో సేకరించబడ్డాయి, అయితే క్లయింట్ల నుండి వ్రాయడం జరగదు. అయితే, ఇది ఒక సమస్య, కానీ సాధారణ రోల్అవుట్తో పోలిస్తే ఇది అప్రధానంగా కనిపిస్తుంది.
08:00. APIని పరిష్కరించండి
మేము లోడ్ కోసం పరిష్కారాన్ని రూపొందించాము, వైఫల్యాలు పోయాయి. మేము ఇంటికి వెళ్లడం ప్రారంభిస్తాము.
10:00. అన్నీ
అంతా పరిష్కరించబడింది. ఇది పర్యవేక్షణలో నిశ్శబ్దంగా ఉంటుంది మరియు కస్టమర్ల ప్రదేశంలో, బృందం క్రమంగా నిద్రపోతుంది. బిల్లింగ్ మిగిలి ఉంది, మేము దానిని రేపు పునరుద్ధరిస్తాము.
ఆ తర్వాత రోజులో మా క్లయింట్లలో కొంతమందికి లాగ్లు, నోటిఫికేషన్లు, రిటర్న్ కోడ్లు మరియు అనుకూలీకరణలను స్థిరపరిచే రోల్అవుట్లు ఉన్నాయి.
కాబట్టి, రోల్ అవుట్ విజయవంతమైంది! ఇది, వాస్తవానికి, మెరుగ్గా ఉండవచ్చు, కానీ పరిపూర్ణతను సాధించడానికి మాకు ఏది సరిపోదు అనే దాని గురించి మేము తీర్మానాలు చేసాము.
మొత్తం
రోల్అవుట్ కోసం 2 నెలల యాక్టివ్ ప్రిపరేషన్లో, 43 టాస్క్లు రెండు గంటల నుండి చాలా రోజుల వరకు పూర్తయ్యాయి.
రోల్ అవుట్ సమయంలో:
- కొత్త మరియు మార్చబడిన రాక్షసులు - 5 ముక్కలు, 2 ఏకశిలాల స్థానంలో;
- డేటాబేస్లలో మార్పులు - వినియోగదారు డేటాతో మా మొత్తం 6 డేటాబేస్లు ప్రభావితమయ్యాయి, మూడు పాత డేటాబేస్ల నుండి ఒక కొత్తదానికి డౌన్లోడ్లు చేయబడ్డాయి;
- పూర్తిగా పునఃరూపకల్పన చేయబడిన ఫ్రంటెండ్;
- డౌన్లోడ్ చేయబడిన కోడ్ మొత్తం - కొత్త కోడ్ యొక్క 33 వేల పంక్తులు, పరీక్షలలో ≈ 3 వేల పంక్తులు కోడ్, ≈ 5 వేల మైగ్రేషన్ కోడ్;
- మొత్తం డేటా చెక్కుచెదరకుండా ఉంది, ఒక్క కస్టమర్ యొక్క వర్చువల్ మెషీన్ కూడా దెబ్బతినలేదు. 🙂
మంచి రోల్ అవుట్ కోసం మంచి పద్ధతులు
ఈ క్లిష్ట పరిస్థితుల్లో వారు మాకు మార్గనిర్దేశం చేశారు. కానీ, సాధారణంగా చెప్పాలంటే, ఏదైనా రోల్అవుట్ సమయంలో వాటిని అనుసరించడం ఉపయోగకరంగా ఉంటుంది. కానీ రోల్అవుట్ ఎంత క్లిష్టంగా ఉంటుందో, వారు పోషించే పాత్ర అంత ఎక్కువ.
- రోల్అవుట్ వినియోగదారులను ఎలా ప్రభావితం చేస్తుందో లేదా ఎలా ప్రభావితం చేస్తుందో అర్థం చేసుకోవడం మీరు చేయవలసిన మొదటి విషయం. పనికిరాని సమయం ఉంటుందా? అలా అయితే, పనికిరాని సమయం ఏమిటి? ఇది వినియోగదారులను ఎలా ప్రభావితం చేస్తుంది? సాధ్యమయ్యే ఉత్తమ మరియు చెత్త సందర్భాలు ఏమిటి? మరియు నష్టాలను కవర్ చేయండి.
- ప్రతిదీ ప్లాన్ చేయండి. ప్రతి దశలో, మీరు రోల్అవుట్ యొక్క అన్ని అంశాలను అర్థం చేసుకోవాలి:
- కోడ్ డెలివరీ;
- కోడ్ రోల్బ్యాక్;
- ప్రతి ఆపరేషన్ సమయం;
- ప్రభావితం కార్యాచరణ.
- రోల్అవుట్ యొక్క అన్ని దశలు, అలాగే వాటిలో ప్రతి రిస్క్లు స్పష్టంగా కనిపించే వరకు దృశ్యాలను ప్లే చేయండి. మీకు ఏవైనా సందేహాలు ఉంటే, మీరు విరామం తీసుకొని ప్రశ్నార్థక దశను విడిగా పరిశీలించవచ్చు.
- మా వినియోగదారులకు సహాయం చేస్తే ప్రతి దశను మెరుగుపరచవచ్చు మరియు మెరుగుపరచాలి. ఉదాహరణకు, ఇది పనికిరాని సమయాన్ని తగ్గిస్తుంది లేదా కొన్ని ప్రమాదాలను తొలగిస్తుంది.
- కోడ్ డెలివరీ టెస్టింగ్ కంటే రోల్బ్యాక్ టెస్టింగ్ చాలా ముఖ్యమైనది. రోల్బ్యాక్ ఫలితంగా సిస్టమ్ దాని అసలు స్థితికి తిరిగి వస్తుందో లేదో తనిఖీ చేయడం అవసరం మరియు పరీక్షలతో దీన్ని నిర్ధారించండి.
- స్వయంచాలకంగా చేయగల ప్రతిదీ స్వయంచాలకంగా ఉండాలి. ఆటోమేట్ చేయలేని ప్రతిదాన్ని చీట్ షీట్లో ముందుగానే వ్రాయాలి.
- విజయ ప్రమాణాన్ని రికార్డ్ చేయండి. ఏ కార్యాచరణ అందుబాటులో ఉండాలి మరియు ఏ సమయంలో ఉండాలి? ఇది జరగకపోతే, రోల్బ్యాక్ ప్లాన్ను అమలు చేయండి.
- మరియు ముఖ్యంగా - ప్రజలు. రోల్అవుట్ ప్రక్రియలో వారు ఏమి చేస్తున్నారు, ఎందుకు మరియు ఏమి వారి చర్యలపై ఆధారపడి ఉంటుంది అనే దాని గురించి ప్రతి ఒక్కరూ తెలుసుకోవాలి.
మరియు ఒక్క వాక్యంలో చెప్పాలంటే, మంచి ప్లానింగ్ మరియు విశదీకరణతో మీరు అమ్మకాల కోసం ఎటువంటి పరిణామాలు లేకుండా మీకు కావలసిన ఏదైనా తయారు చేసుకోవచ్చు. ఉత్పత్తిలో మీ అన్ని సేవలను ప్రభావితం చేసేది కూడా.
మూలం: www.habr.com