ब्लू-ग्रीन और कैनरी रिलीज़
(खंड: वास्तुकला और प्रोटोकॉल)
1) हमें "सुरक्षित रोलआउट" की आवश्यकता क्यों है
आधुनिक प्रणालियों में, रिलीज़ न केवल कोड डिलीवरी है, बल्कि बिक्री में एक नियंत्रित प्रयोग भी है: हम एक साथ जोखिम को कम करते हैं (उपयोगकर्ताओं को न तोड़ें) और प्रतिक्रिया समय को कम करें (जल्दी से प्रभाव देखें)। दो क्लासिक रणनीतियाँ - ब्लू-ग्रीन और कैनरी - इसे अलग-अलग तरीकों से हल करती हैं, लेकिन एक सामान्य लक्ष्य के साथ: शून्य डाउनटाइम, त्वरित रोलबैक, एसएलओ द्वारा अवलोकन।
2) बुनियादी परिभाषाएँ
ब्लू-ग्रीन
हम उत्पादन वातावरण की दो पूर्ण-प्रतियां रखते हैं: सक्रिय (नीला) यातायात परोसता है, निष्क्रिय (ग्रीन) एक नया संस्करण तैयार कर रहा है। स्विचिंग संतुलन/राउटर स्तर पर परमाणु (स्विच/फ्लिप) है। अगर यह खराब हो गया, तो हम तुरंत ब्लू लौट आते हैं।
कैनरी
हम भागों में रोल आउट करते हैं: पहले ट्रैफिक के एक छोटे से% (उदाहरण के लिए, 1-5%), मेट्रिक्स/एसएलओ का निरीक्षण करें, फिर चरण दर चरण में शेयर (10% → 25% → 50% → 100%) बढ़ाएं। गिरावट के दौरान - रोलबैक या पिछले स्थिर कदम पर रोक।
3) कब कौन सा दृष्टिकोण सबसे अच्छा है
ब्लू-ग्रीन - चुनें यदि:- हमें जटिल युद्धाभ्यास के बिना एक त्वरित रोलबैक की आवश्यक
- वास्तुकला/बजट दोहरे बुनियादी ढांचे के दोहराव की अनुमति देता है।
- हम अलगाव में बड़े पैमाने पर पलायन या प्लेटफ़ॉर्म अपडेट (OS/JDK/runtime) करना चाहते हैं।
- अनुप्रयोग/कनेक्शन पूल क्रमिक "मिश्रित" स्थिति के प्रति संवेद
- आपको ब्लास्ट त्रिज्या को कम करने और उपयोगकर्ताओं के हिस्से पर व्यवहार देखने की आवश्यकता है
- उच्च रिलीज दर, सामान्य रूप से प्रगतिशील वितरण।
- परिपक्व वेधशाला और स्वचालित द्वार हैं (त्रुटि बजट, विलंबता, रूपांतरण)।
- उत्पाद टीम परिकल्पनाओं का परीक्षण करना चाहती है: रूपांतरण, प्रतिधारण, एलटीवी, आदि पर प्रभाव।
4) एक सफल रिलीज के लिए सामान्य सिद्धांत
मूर्तिकला निर्माण कलाकृतियाँ: सभी चरणों में एक ही छवि/पैकेज।
नियतात्मक विन्यास: कोड के रूप में कॉन्फ़िग, वातावरण की तुलना।
डिजाइन द्वारा अवलोकन: लॉग, मैट्रिक्स, निशान, अलर्ट; एसएलआई/एसएलओ अग्रिम में।
तेज, स्वचालित रोलबैक: रोलबैक बटन/कमांड पाइपलाइन का हिस्सा है, मैनुअल जादू नहीं।
संगत स्कीमा परिवर्तन: विस्तार-माइग्रेट-अनुबंध रणनीति (देखें) 10)।
L7 रूटिंग (वांछनीय): एपीआई हेडर/कुकीज ़/पथ/संस्करण पर लचीलापन।
5) ब्लू-ग्रीन: आर्किटेक्चर एंड प्रोसेस
5. 1 टोपोलॉजी
दो प्रॉड स्टैक: ब्लू (सक्रिय) और ग्रीन (उम्मीदवार)।
सामान्य बाहरी निर्भरता: सीडीएन, बाहरी एपीआई, कतारें; डीबी एक विशेष मामला है (देखें। 10)।
स्विच पाइंट: बैलेंसर/इंग्रेस/गेटवे।
5. 2 चरण दर चरण प्रवाह
1. हम एक नए कलाकृति (vNex) के तहत ग्रीन बढ़ाते हैं, हम स्मोक परीक्षण करते हैं।
2. ग्रीन (e2e, अनुबंध, प्रतिगमन) के खिलाफ ऑटोटेस्ट रन।
3. कैश/सत्र गर्म करें (यदि लागू हो), पृष्ठभूमि जैब/कतार सिंक्रनाइज़करें।
4. ट्रैफिक को ग्रीन पर स्विच करें: परमाणु फ्लिप (DNS TTL लो, रूट/लिस्टनर स्वैप, इंग्रेस वेट = 100%)।
5. हम पहले मिनट/घंटों में एसएलओ का निरीक्षण करते हैं (सुनहरा संकेत: विलंबता, त्रुटियां, संतृप्ति + व्यवसाय मैट्रिक्स)।
6. समस्याओं के मामले में - तत्काल ब्लू पर वापसी (फ्लिप बैक)।
5. 3 पेशेवरों/विपक्ष
पेशेवरों: तत्काल रोलबैक, सरल मानसिक मॉडल, शुद्ध अलगाव।
विपक्ष: बुनियादी ढांचे को दोगुना करना, राज्य घटकों और डेटा प्रवासन के साथ कठिनाई।
6) कैनरी वास्तुकला और प्रक्रिया
6. 1 टोपोलॉजी
एकल उत्पादन समूह; एकल मोर्चे के पीछे सेवा के कई संस्करण (स्थिर और कैनरी)।
ट्रैफिक को वजन (1-5-10-25-50-100%) या लक्ष्य (हेडर/कुकी/आईडी द्वारा) द्वारा विभाजित किया जाता है।
6. 2 चरण दर चरण प्रवाह
1. एक ही क्लस्टर/एएसजी/एनएसजी में कैनरी संस्करण तैनात करें।
2. कैनरी के लिए कुछ यातायात (उदाहरण के लिए, 1-5%) मार्ग।
3. SLI/SLO और बिजनेस मैट्रिक्स की स्वचालित जांच; CI/CD में गेट्स (त्रुटि दर, p95 विलंबता, CPU/RES, रूपांतरण, इनकार/वापसी)।
4. गुजरते समय ट्रैफिक के हिस्से में चरण-दर-चरण वृद्धि होती है।
5. 100% तक पूर्ण रोलआउट और पुराने संस्करण की निष्क्रियता; गिरावट के मामले में - ऑटो-रोलबैक।
6. 3 पेशेवरों/विपक्ष
पेशेवरों: अधिकांश उपयोगकर्ताओं के लिए न्यूनतम जोखिम, डेटा-चालित समाधान।
विपक्ष: हमें परिपक्व अवलोकन, सक्षम मार्ग, उदाहरणों के बीच "संस्करण तिरछा" का जोखिम चाहिए।
7) ट्रैफिक रूटिंग
परत L4: IP/पोर्ट द्वारा संतुलन; सरल, लेकिन थोड़ा लचीलापन।
स्तर L7: HTTP/S नियम - पथ, मेजबान, हेडर, कुकीज़, उपयोगकर्ता-एजेंट, जियोआईपी, एसएनआई पर।
तकनीशियन:- भारित मार्ग (वजन 1-100%)।
- हेडर-आधारित/कुकी-आधारित।
- सत्र स्टिकनेस (स्टेटफुल/कैश्ड स्क्रिप्ट के लिए महत्वपूर्ण)।
- छाया/ट्रैफिक दर्पण (नए संस्करण "चुपचाप" के लिए दर्पण अनुरोध)।
8) उपकरण और कार्यान्वयन (उदाहरण)
कुबर्नेट्स: इंग्रेस (NGINX, कंटूर), सर्विस मेश (इस्तियो/लिंकर्ड), आर्गो रोलआउट्स, फ्लैगर।
Облака: AWS ALB/ELB, रूट 53 भारित रिकॉर्ड, ECS/EKS; जीसीपी लोड बैलेंसिंग + एनईजी; Azure फ्रंट डोर/ऐप गेटवे।
सीडी प्लेटफॉर्म: स्पिननेकर, आर्गो सीडी, गिटहब एक्शन + प्रोग्रेसिव डिलीवरी प्लगइन, गिटलैब/सीडी।
9) अवलोकन, SLI/SLO और गेट्स
गोल्डन सिग्नल: लेटेंसी (p95/p99), त्रुटि दर (5xx/4xx по типам), आरपीएस, संतृप्ति (सीपीयू/मेमोरी/जीसी), कतार लैग।
व्यावसायिक मैट्रिक्स: रूपांतरण, प्राधिकरण, भुगतान/सफलताएं, औसत जांच, फ़नल चरणों द्वारा इनकार।
गेट्स:- त्रुटि सीमा (उदाहरण के लिए, त्रुटि दर कैनरी - बेसलाइन + एक्स%).
- p95 विलंबता is से अधिक द्वारा आधारभूत से बदतर नहीं है।
- व्यापार सीमा (उदा। रूपांतरण ड्रॉप
- SLO त्रुटि बजट तेजी से नहीं लिखा जाना चाहिए.
चरण अवधि: सांख्यिकीय महत्व के लिए पर्याप्त न्यूनतम समय (यातायात पर निर्भर करता है)।
10) डेटाबेस पलायन और स्कीमा संगतता
मुख्य नियम: रिलीज़ सुरक्षित हैं यदि आगे और पीछे के संस्करण संगत हैं।
विस्तार-माइग्रेट-अनुबंध रणनीति:1. विस्तार: पुराने संस्करण को तोड़े बिना नए कॉलम/इंडेक्स/टेबल जोड़ें।
2. ऐप वीनेक्स्ट तैनात करें (नई योजना को पढ़ ता/लिखता है, लेकिन पुराने के साथ काम करना जानता है)।
3. डेटा माइग्रेट करें (पृष्ठभूमि/बैच, पहचान, चौकियों के साथ)।
4. संविदा: स्थिरीकरण के बाद पुराने क्षेत्रों/सुविधाओं को हटा दें।
एंटी-पैटर्न: ब्लू-ग्रीन स्विच के बिंदु पर अनन्य अवरोधन की आवश्यकता वाले पलायन; योजना को डाउनग्रेड करने में असमर्थता; डीडुप्लिकेशन के बिना "डबल राइट"।
11) रोलबैक और आपातकालीन योजनाएं
ब्लू-ग्रीन: ब्लू पर तत्काल फ्लिप; ग्रीन बैकग्राउंड जॉब्स की पूंछ की निगरानी करें।
कैनरी: वजन रोलबैक (उदाहरण के लिए, 25% से 5% या 0% तक); अलर्ट पर स्वचालित गर्भपात।
डेटा: पुनरावृत्ति/मुआवजे की एक अच्छी तरह से सोची-समझी नीति (पहचान कुंजी, "इनबॉक्स/आउटबॉक्स" पैटर्न, संदेश deduplication)।
Ficheflags: आंशिक रूप से लुढ़का हुआ अवसरों को बंद करने के लिए एक त्वरित किल स्विच।
12) राज्य और सत्रों के साथ काम करना
कैनरी के लिए स्टिकी सत्र, या बाहरी रूप से सत्रों को संग्रहीत करना (Redis/Memcatched) ताकि संस्करण विनिमेय हों।
अग्रिम में गर्म करने के लिए कैश (ग्रीन वार्म-अप) और फ्लिप होने पर अमान्यता को ध्यान में रखें।
पृष्ठभूमि कार्यकर्ता: संस्करणों के बीच "दौड़" की अनुमति नहीं देते हैं - कतार पृथक्करण या संस्करण द्वारा "नेतृत
13) सुरक्षा और अनुपालन
ग्रीन/कैनरी तक पहुंच - जीरो ट्रस्ट द्वारा: सेवा खाते, न्यूनतम आवश्यक भूमिकाएं।
केएमएस/सीक्रेट मैनेजर के माध्यम से रहस्य और कुंजी; रोटेशन चालू करें।
ट्रैफिक - केवल टीएलएस; समापन बिंदु संस्करण स्पष्ट रूप से चिह्नित हैं; लेखा परीक्षा मार्ग और जारी गतिविधियाँ।
14) लागत और प्रदर्शन
ब्लू-ग्रीन बुनियादी ढांचे (रिलीज के समय या लगातार) को दोगुना करता है - बजट।
कैनरी अधिक किफायती है, लेकिन स्वचालित करने के लिए अवलोकन उपकरण और इंजीनियरिंग समय की आवश्यक
अनुकूलन: ऑटोस्कलिंग, पंचांग वातावरण, संस्करणों के समानांतर अस्तित्व की खिड़की को छोटा करना।
15) चेकलिस्ट
रिलीज से पहले
- एक एकल स्रोत से प्रचारित छवि/निर्माण, हस्ताक्षर सत्यापित।
- टेस्ट प्लान, अलर्ट और एसएलओ गेट कॉन्फ़िगर किए गए हैं।
- डेटाबेस पलायन - विस्तार मोड में, डाउनग्रेड योजनाएं उपलब्ध हैं।
- रोलबैक योजना - मंचन/उत्पादन-जैसे में जाँच की गई।
रिलीज के समय
- मेट्रिक्स और लॉग की तुलना बेसलाइन से की जाती है।
- कैनरी के लिए, कदम और थ्रेसहोल्ड तय किए गए हैं; ब्लू-ग्रीन के लिए - फ्लिप-बैक तत्परता।
- ऑन-कॉल कमांड पता है, एक प्रतिक्रिया विंडो है।
रिलीज के बाद
- SLO डूब नहीं गया, त्रुटि बजट सामान्य है।
- पोस्ट-रिलीज़माइग्रेशन/क्लीनअप पूरा हुआ।
- पूर्वव्यापी और प्लेबुक अद्यतन।
16) लगातार त्रुटियां और विरोधी पैटर्न
मैट्रिक्स के बिना रोलआउट: कोई डेटा - कोई प्रबंधित समाधान न
असंगत डेटाबेस योजनाओं को मिलाना, डाउनग्रेड रणनीति की कमी।
यादृच्छिक यातायात मिश्रण: कोई चिपचिपाहट नहीं, उपयोगकर्ता संस्करणों के बीच "कूद"।
छिपी हुई स्टेटफुल डिपेंडेंसी (स्थानीय डिस्क, इन-मेमोरी कैश)।
लॉन्ग डीएनएस-टीटीएल तेजी से फ्लिप (ब्लू-ग्रीन) के साथ हस्तक्षेप करता है।
ऑटोगेट्स की कमी: मैनुअल "बाय आई" समाधान धीमा हो जाता है और जोखिम बढ़ जाता है।
17) संयुक्त दृष्टिकोण
ब्लू-ग्रीन + कैनरी: पहले ग्रीन को रोल आउट करें, फिर ग्रीन रोल आउट कैनरी के अंदर व्यक्तिगत सेवाओं के लिए।
छाया/पलायन यातायात: कैनरी से पहले, हम नए संस्करण के लिए प्रतिबिंबित यातायात चलाते हैं।
फ़ीचर फ़्लैग्स (प्रगतिशील डिलीवरी): सेगमेंट द्वारा "डार्क" फ्लैग द्वारा स्थिर संस्करण के शीर्ष पर कार्यक्षमता शामिल है।
18) नमूना परिदृश्य (रेखाचित्र)
ब्लू-ग्रीन (वेब + एपी):1. नए श्रोता/इंग्रेस के लिए ग्रीन (v2) तैनात करें।
2. कैश गर्म करें, रीडली चेक करें, धुआं करें।
3. हम वजन को ग्रीन = 100% पर स्विच करते हैं।
4. 30-60 मिनट के लिए एसएलओ का निरीक्षण करें; अगर सब कुछ ठीक है - नीला बंद करो।
कैनरी (भुगतान माइक्रोसर्विस):1. कैनरी vNext (प्रतिकृति 5%) तैनात करें।
2. हम आंतरिक खातों/परीक्षण खंड के लिए 5% यातायात शामिल करते हैं।
3. ऑटोगेट: त्रुटि दर ≤ बेसलाइन + 0। 3%, p95 ≤ + 20 ms।
4. हम पासिंग गेट्स पर हर एन मिनट में 10% → 25% → 50% जुटाते हैं।
5. हम सभी वर्गों के लिए फिशफ्लाग 100% का अनुवाद करते हैं; पुराने संस्करण को हटा रहा है।
19) विभिन्न वास्तुशिल्पों के लिए भिन्नताएं
मोनोलिथ: ब्लू-ग्रीन सरल है, सुविधाओं की अविभाज्यता के कारण कैनरी अधिक कठिन है; ficheflags का उपयोग करें।
Microservices: कैनरी प्राकृतिक है; उपभोक्ता-संचालित अनुबंधों की निगरा
राज्यपूर्ण सेवाएं: ध्यान से तैयार किए गए पलायन और चिपचिपाहट के साथ ब्लू-ग्रीन पसंद करें।
20) संक्षिप्त तुलना (सारांश)
रोलबैक गति: ब्लू-ग्रीन = तात्कालिक; कैनरी = तेज लेकिन वजन में एक पुलबैक के साथ।
बुनियादी ढांचे की लागत: ब्लू-ग्रीन ↑; कैनरी ↔︎/↓।
उपयोगकर्ताओं के लिए जोखिम: कैनरी कम है (हम शेयर को नियंत्रित करते हैं)।
कार्यान्वयन कठिनाई: ब्लू-ग्रीन शुरू करना आसान है; कैनरी को मजबूत अवलोकन और स्वचालन की आवश्यकता होती है।
डेटा/सर्किट संगतता: दोनों के लिए महत्वपूर्ण; योजना विस्तार-माइग्रेट-अनुबंध।
21) नीचे की रेखा
ब्लू-ग्रीन और कैनरी पारस्परिक रूप से अनन्य रणनीति नहीं हैं, लेकिन प्रगतिशील वितरण के तत्व हैं। विकल्प लागत बाधाओं, अवलोकन परिपक्वता और परिवर्तनों की प्रकृति पर निर्भर करता है। दृष्टिकोण के बावजूद, स्थायी रिलीज चार स्तंभों पर टिकी हुई है: स्वचालन, अवलोकन, पिछड़ी संगतता और तेज रोलबैक।