कैनरी रिलीज की रणनीति बनाम ब्लू / ग्रीन


125

एक कैनरी रिलीज की मेरी समझ यह है कि यह चिपचिपे सत्रों के साथ प्रोडक्शन नोड्स के सबसेट के लिए एक आंशिक रिलीज है। इस तरह आप उन उपयोगकर्ताओं / ग्राहकों की संख्या को नियंत्रित और कम कर सकते हैं जो खराब बग जारी करते ही प्रभावित हो जाते हैं।

एक नीली / हरी रिलीज के बारे में मेरी समझ यह है कि आपके पास 2 प्रतिबिंबित उत्पादन वातावरण ("नीला" और "हरा") है, और आप एक ही बार में नीले या हरे रंग के सभी नोड्स में परिवर्तन को धक्का देते हैं, और फिर नियंत्रण करने के लिए नेटवर्किंग जादू का उपयोग करें कौन से पर्यावरण उपयोगकर्ता DNS के माध्यम से रूट किए जाते हैं।

इसलिए, शुरू करने से पहले, अगर मैंने अभी तक जो कुछ भी कहा है, वह गलत है, कृपया मुझे सुधार कर शुरू करें!

यह मानकर कि मैं कमोबेश पटरी पर हूं, फिर दो रणनीतियों के बारे में कुछ सवाल:

  • ऐसे परिदृश्य हैं जहां कैनरी को नीले / हरे रंग में पसंद किया जाता है, और इसके विपरीत?
  • क्या ऐसे परिदृश्य हैं जहां एक परिनियोजन मॉडल एक ही समय में दोनों रणनीतियों को लागू कर सकता है?

5
आपकी समझ में ध्वनि है, लेकिन मैं एक नीली-हरी रणनीति को एक बार में सभी नोड्स पर लागू करने की आवश्यकता के रूप में नहीं लिखूंगा। आप उन्हें जैसे चाहें इत्मीनान से तैनात कर सकते हैं - एकमात्र दबाव आपकी खुद की समय सीमा है। इसके अतिरिक्त, आप केवल अपने नोड्स के सबसेट (जैसे कई API समापन बिंदु ताल में से एक को संशोधित करने के लिए) परिवर्तन को जारी करने के लिए नीले-हरे रंग का उपयोग कर सकते हैं।
पैट्रिक एम

1
इन अवधारणाओं का बहुत अच्छा योग मुझे हर जगह स्पष्ट परिभाषा के बिना दिखाई देता है!
खेरूद

जवाबों:


94

नीले-हरे रंग का विमोचन सरल और तेज है।

आप कर सकते हैं अगर आप एक परीक्षण वातावरण में नए संस्करण का परीक्षण किया और बहुत कुछ है कि नए संस्करण के उत्पादन में सही ढंग से कार्य कर रहे हैं किया है एक नीले-हरे रिलीज करते हैं। हमेशा फ़ीचर टॉगल का उपयोग करना एक नए संस्करण में अपने आत्मविश्वास को बढ़ाने के लिए का करना एक अच्छा तरीका है, क्योंकि नया संस्करण बिल्कुल पुराने की तरह ही कार्य करता है जब तक कि कोई फीचर टॉगल नहीं करता है। अपने आवेदन को छोटे, स्वतंत्र रूप से भरोसेमंद सेवाओं में तोड़ना एक और है, क्योंकि परीक्षण करने के लिए कम है और कम टूट सकता है।

आपको करने की आवश्यकता है एक कनारी रिलीज करना यदि आप पूरी तरह से निश्चित है कि नए संस्करण के उत्पादन में सही ढंग से कार्य करेगा या नहीं। यहां तक ​​कि अगर आप एक संपूर्ण परीक्षक हैं, तो इंटरनेट एक बड़ी और जटिल जगह है और हमेशा अप्रत्याशित चुनौतियों के साथ आ रहा है। यदि आप फ़ीचर टॉगल का उपयोग करते हैं, तो भी गलत तरीके से लागू किया जा सकता है।

तैनाती स्वचालन प्रयास लेता है, इसलिए अधिकांश संगठन हर बार एक रणनीति या दूसरे का उपयोग करने की योजना बनाएंगे।

यदि आप उन प्रथाओं के लिए प्रतिबद्ध हैं, जो आपको ऐसा करने में आश्वस्त होने की अनुमति देती हैं, तो नीले-हरे रंग की तैनाती करें। अन्यथा, कनारी बाहर भेजें।

नीले-हरे रंग का सार एक साथ सभी को तैनात कर रहा है और कैनरी तैनाती का सार वृद्धिशील रूप से तैनात कर रहा है, इसलिए उपयोगकर्ताओं के एक एकल पूल को देखते हुए मैं इस प्रक्रिया के बारे में नहीं सोच सकता कि मैं एक ही समय में दोनों का वर्णन करूंगा। यदि आपके पास उपयोगकर्ताओं के कई स्वतंत्र पूल हैं, उदाहरण के लिए, विभिन्न क्षेत्रीय डेटा केंद्रों का उपयोग करके, आप प्रत्येक डेटा केंद्र के भीतर नीले-हरे और डेटा केंद्रों के साथ कैनरी कर सकते हैं। यद्यपि यदि आपको किसी डेटा केंद्र के भीतर कैनरी परिनियोजन की आवश्यकता नहीं है, तो संभवतः आपको डेटा केंद्रों में इसकी आवश्यकता नहीं होगी।


रंगों के अर्थ के बारे में कुछ शब्द: - पुराना वातावरण नीला, नया हरा हो सकता है। - अगली रिलीज में, पुराना हरा होगा। विकी:> कई भाषाएं अंग्रेजी में "ब्लू" और "ग्रीन" के रूप में वर्णित के बीच अंतर नहीं करती हैं और इसके बजाय दोनों को
मिलाकर

कैनरी हमेशा नीली / हरी से तेज़ नहीं होती है। यह सब CI और सीडी वर्कफ़्लो पर निर्भर करता है!
Ligemer

81

मैंने इस विषय पर एक विस्तृत निबंध यहाँ लिखा है: http://blog.itaysk.com/2017/11/20/deployment-strategies-defined

मेरी राय में, अंतर यह है कि नया 'हरा' संस्करण वास्तविक उपयोगकर्ताओं के सामने है या नहीं। अगर ऐसा है, तो मैं इसे कैनरी कहूंगा। नए संस्करण में विशिष्ट उपयोगकर्ताओं की स्मार्ट रूटिंग को जोड़ने के साथ कैनरी को लागू करने का एक सामान्य तरीका नियमित ब्लू / ग्रीन है। विस्तृत तुलना के लिए पोस्ट पढ़ें

नीला हरा: यहां छवि विवरण दर्ज करें

कैनरी: यहां छवि विवरण दर्ज करें


4
आपके चित्र महान हैं, मैं उन्हें आपके उत्तर में यहाँ एम्बेड करने पर विचार कर सकता हूं, लेकिन स्पष्टीकरण के साथ एक गहन गोता लगाने के लिए लिंक को ध्यान में रखते हुए।
क्विकशिफ्टिन

धन्यवाद। उन्हें जोड़ा
itaysk

4
बहुत अच्छी व्याख्या। लेकिन बेहतर होगा कि कैनरी इलस्ट्रेशन पर यूजर लोड प्रतिशत का नमूना दिखाया जाए।
निकली

कैनरी रिलीज़ आरेख में "के दौरान" और "के बाद" के बीच क्या अंतर है? मुझे उम्मीद थी कि "के बाद" नीली / हरी रिलीज की तरह
दिखेगी

दोनों विधियाँ नए संस्करण का मूल्यांकन करके जोखिम को कम करने के लिए हैं। के दौरान नए संस्करण को तैनात किया गया है लेकिन आगे कैसे बढ़ना है, इस बारे में अभी तक कोई निर्णय नहीं हुआ है। एक सकारात्मक निर्णय के बाद आगे बढ़ने का मतलब था।
itaysk

6

हालाँकि ये दोनों शब्द एक दूसरे के काफी करीब दिखते हैं, लेकिन उनके बीच सूक्ष्म अंतर हैं। एक ने आपकी कार्यक्षमता रिलीज़ पर भरोसा किया और दूसरे ने आपके रिलीज़ करने के तरीके पर विश्वास रखा।

पीतचटकी

  1. कैनरी रिलीज उत्पादन में एक नया सॉफ्टवेयर संस्करण पेश करने के जोखिम को कम करने के लिए एक तकनीक है जो धीरे-धीरे उपयोगकर्ताओं के एक छोटे से उपसमूह में बदलाव करके इसे पूरे बुनियादी ढाँचे में बदलने से पहले रोल आउट करती है।

  2. यह अनुमान लगाने के बारे में है कि नया संस्करण कैसे प्रदर्शन करेगा (अन्य एप्लिकेशन, सीपीयू, मेमोरी, डिस्क उपयोग, आदि के साथ एकीकृत)।

नीला हरा:

  1. यह शून्य डाउनटाइम परिनियोजन के साथ अनुमानित रिलीज के बारे में अधिक है।
  2. विफलता के मामले में आसान रोलबैक।
  3. पूरी तरह से स्वचालित तैनाती प्रक्रिया

4

यहाँ कुछ इनलाइन परिभाषा दी गई है -

  • ब्लू-ग्रीन तैनाती - जब किसी एप्लिकेशन के नए संस्करण को तैनात करते हैं, तो एक दूसरा वातावरण बनाया जाता है। एक बार नए वातावरण का परीक्षण करने के बाद, यह पुराने संस्करण से हट जाता है। पुराने वातावरण को फिर बंद किया जा सकता है।

     

  • ए / बी परीक्षण - एक आवेदन के दो संस्करण एक ही समय में चल रहे हैं। अनुरोधों का एक भाग प्रत्येक में जाता है। डेवलपर्स तब संस्करणों की तुलना कर सकते हैं।  
  • कैनरी रिलीज़ - पुराने संस्करणों के साथ-साथ एक माइक्रोसैस सर्विस का एक नया संस्करण शुरू किया गया है। फिर वह नया संस्करण अनुरोधों का एक हिस्सा ले सकता है और टीम यह परीक्षण कर सकती है कि यह नया संस्करण समग्र प्रणाली के साथ कैसे इंटरैक्ट करता है।

3

परिभाषाओं की एक अच्छी शुरुआत। मुझे लगता है कि यह आपकी रणनीति के लिए एक निर्णय लेने में भी मदद करता है यदि आप "तैनात" और "रिलीज (कार्यक्षमता)" में अपनी "रिलीज़" परिभाषा को विभाजित करते हैं।

तैनात करें (बायनेरिज़)

एक (उत्पादन) प्रणाली के लिए अपने उत्पाद की द्विआधारी तैनाती की कार्रवाई।

रिलीज़ (कार्यक्षमता)

उपयोगकर्ताओं को (समूहों के) कार्यक्षमता की उपलब्धता के प्रबंधन की कार्रवाई।

क्यों? "विमोचन" करते समय आपको आमतौर पर (कई) दो चिंताएं होती हैं: 1) कीड़े / पीछे की संगतता / आदि 2) नई विशेषताओं की वैधता / उपयोगिता की पुष्टि करना

फिर एक कैनरी या ब्लू / ग्रीन या जो भी ग्रे / मिश्रित मोड की रणनीति चुनने से पहले अपने आप से पूछें: नए संस्करण को जारी / तैनात करते समय हमें क्या चिंता है? और उसके बाद ही यदि आप अपनी चिंताओं को जानते हैं, तो अपनी रणनीति चुनें।

इसके अतिरिक्त, अधिक जटिल डिप्लॉय / रिलीज रणनीतियों को करना संभव है। उदाहरण के लिए, कुछ बादलों / इन्फ्रा में कई प्रोडक्शन सर्वर होना संभव है, और अलग-अलग सर्वरों और अपने उत्पाद के संस्करणों के लिए अलग-अलग अनुपात में रिले लोड करना, और सभी उपयोगकर्ताओं को रिलीज़ / तैनाती करने से पहले ध्वनि की निगरानी करना।

झंडी दिखाने की सुविधा

"कॉन्फ़िगरेशन" (ठंडा, या यहां तक ​​कि गर्म) की क्रिया जो कि कार्यक्षमता (नहीं) है जिसके लिए (समूह) उपयोगकर्ताओं के लिए उपलब्ध है

यदि आप "फ़ीचर फ़्लैगिंग" जैसा कुछ भी करते हैं, तो आप पहले परिनियोजन कर सकते हैं, बैकवर्ड संगतता / बग परिप्रेक्ष्य में अपनी रिलीज़ की आवाज़ को माप सकते हैं, और अलग-अलग उपयोगकर्ताओं को धीरे-धीरे नई कार्यक्षमता जारी कर सकते हैं, या इसके विपरीत (स्केल डाउन या रोलबैक कार्यक्षमता और / या बायनेरिज़) )। सुविधा फ़्लैगिंग, बायनेरिज़ की परिनियोजन से कार्यक्षमता की उपलब्धता को विभाजित करने की अनुमति देता है, और बहुत अधिक बारीक निर्णय लेता है, जिसके बाद केवल "तैनाती / रोलबैक" होता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.