8.6 রিলিজ ব্যবস্থাপনা ও ক্রমিক ডেলিভারি
পরিচিতি ও প্রেরণা
আধুনিক রিলিজ ব্যবস্থাপনার সবচেয়ে কাজের ধারণাটিও সবচেয়ে সরল: কোড পাঠানো এবং একটি ফিচার উন্মুক্ত করা দুটি ভিন্ন ঘটনা, এবং একটি ছাড়া অন্যটি করতে পারা উচিত। অধ্যায় 8.1 (CI/CD ও ডেলিভারি) আপনার পরিবর্তন একবার গড়ে, পরীক্ষা করে এবং অপরিবর্তনীয় আর্টিফ্যাক্ট হিসেবে উন্নীত করে। এই অধ্যায় তারপর কী ঘটে সে বিষয়ে: ডিপ্লয় করা সেই কোডকে আপনি কীভাবে প্রকৃত ব্যবহারকারীদের জন্য একটি জীবন্ত অভিজ্ঞতায় পরিণত করেন, ক্রমান্বয়ে, নিরাপদে এবং ফিরে আসার দ্রুত পথসহ। ডিপ্লয়মেন্ট মানে সার্ভারে কোড ইনস্টল করা। রিলিজ মানে ব্যবহারকারীদের একটি সামর্থ্যে পৌঁছাতে দেওয়া। আপনি যখন দুটি আলাদা করেন, একটি ডিপ্লয় রুটিন ও বিরক্তিকর হয়, এবং একটি রিলিজ নিয়ন্ত্রিত, ফেরানো-যোগ্য সিদ্ধান্ত হয়।
বড় দলের জন্য এই বিচ্ছেদ পাঠানোর আবেগীয় তাপমাত্রা বদলে দেয়। ডজন ডজন সেবা ও শত শত ইঞ্জিনিয়ার প্রতিদিন প্রোডাকশন বদলালে যুগল “ডিপ্লয় সমান রিলিজ” মডেল মানে প্রতিটি ব্যবহারকারী-মুখী পরিবর্তন একটি ঝুঁকিপূর্ণ, একসঙ্গে-সব ঘটনা। বিচ্ছিন্ন করা আপনাকে অসমাপ্ত কাজ একটি সুইচের পিছনে মার্জ করতে, একটি ফিচার ট্রাফিকের এক শতাংশে ছড়াতে, সংখ্যা দেখতে, এবং বিল্ড না ছুঁয়েই সম্প্রসারণ বা পশ্চাদপসরণ করতে দেয়। ক্রমিক ডেলিভারি এর ছাতা শব্দ: একটি পরিবর্তন ক্রমবর্ধমান শ্রোতার কাছে রিলিজ করা যখন স্বয়ংক্রিয় পরীক্ষা ঠিক করে চালিয়ে যাবে কি না।
এন্টারপ্রাইজ ও সরকারি পরিবেশ সমন্বয় ও প্রমাণ যোগ করে। একটি পেমেন্ট প্ল্যাটফর্ম অনেক সেবা জুড়ে রিলিজ করে যাদের একটি স্কিমায় একমত হতে হয়। একটি সরকারি সংস্থা একটি পরিচালনার কর্তৃত্ব ও আনুষ্ঠানিক পরিবর্তন নিয়ন্ত্রণের অধীনে কাজ করে, এবং নিরীক্ষকরা চান ঠিক কে কখন কী পেয়েছিল তার প্রমাণ। ভালোভাবে করা হলে ক্রমিক ডেলিভারি দ্রুত চলার ইচ্ছা এবং নিয়ন্ত্রণ প্রমাণের বাধ্যবাধকতা দুটিই সন্তুষ্ট করে, কারণ যে যন্ত্র ক্ষতির পরিসর সীমিত করে সেটিই রোলআউটের একটি নিরীক্ষণযোগ্য রেকর্ডও তৈরি করে।
মূল নীতিসমূহ
- ডিপ্লয় রিলিজ নয়। কোড অন্ধকারে পাঠান, তারপর সুচিন্তিতভাবে চালু করুন।
- আগে ছোট ক্ষতির পরিসর। সবার কাছে উন্মুক্ত করার আগে কয়েকজনের কাছে একটি পরিবর্তন উন্মুক্ত করুন।
- প্রতিটি রিলিজের একটি রিভার্স গিয়ার আছে। সেকেন্ডে রোলব্যাক করতে না পারলে আপনি রিলিজ নকশা শেষ করেননি।
- সংকেতকে উন্নয়ন চালাতে দিন। ক্যালেন্ডার বা আশাবাদ নয়, স্বাস্থ্য মেট্রিক ও ত্রুটি বাজেট ঠিক করে রোলআউট এগোবে কি না।
- একটি ফ্ল্যাগ সরানো না হওয়া পর্যন্ত দায়। প্রতিটি টগল এমন কোড যা আপনাকে রক্ষণাবেক্ষণ করতে এবং শেষ পর্যন্ত মুছতে হবে।
- ডেটাবেস পরিবর্তন দুই দিকেই টিকিয়ে রাখুন। রোলআউট ও রোলব্যাক দুটিই একই স্কিমার বিপরীতে নিরাপদ হতে হবে।
- অনুমোদন রেকর্ড করুক, আটকাক না। নিরীক্ষা প্রমাণ পাইপলাইনের উপজাত, সাপ্তাহিক বৈঠক নয়।
সুপারিশ
ফিচার ফ্ল্যাগ দিয়ে ডিপ্লয়কে রিলিজ থেকে আলাদা করুন
একটি ফিচার টগল, বা ফিচার ফ্ল্যাগ, একটি রানটাইম সুইচ যা পুনরায় ডিপ্লয় না করে ঠিক করে একটি কোড পথ সক্রিয় কি না। ফ্ল্যাগকে একটি টাইপ করা শব্দভান্ডার গণ্য করুন, কারণ তাদের আয়ুষ্কাল ভিন্ন। একটি রিলিজ ফ্ল্যাগ চলমান কাজ লুকায় এবং দিন থেকে সপ্তাহ বাঁচে। একটি পরিচালনগত ফ্ল্যাগ (একটি কিল সুইচ) আপনাকে লোডের অধীনে একটি উপসিস্টেম নিষ্ক্রিয় করতে দেয় এবং অনির্দিষ্টকাল থাকতে পারে। একটি পরীক্ষা ফ্ল্যাগ একটি নিয়ন্ত্রিত টেস্টের জন্য ট্রাফিক ভাগ করে এবং পরীক্ষার দৈর্ঘ্য পর্যন্ত থাকে। একটি অনুমতি ফ্ল্যাগ পরিকল্পনা বা ভূমিকা অনুযায়ী একটি সামর্থ্য গেট করে এবং কার্যত স্থায়ী। প্রতিটি ফ্ল্যাগকে একজন মালিক, একটি টাইপ, একটি ডিফল্ট এবং একটি প্রত্যাশিত অপসারণ তারিখ দিন। ডিফল্ট হওয়া উচিত নিরাপদটি, যাতে একটি ফ্ল্যাগ সেবা বিভ্রাট অপরীক্ষিত পথের দিকে খোলার বদলে পরিচিত-ভালো আচরণে বন্ধ হয়।
প্রতি সেবা স্তরে একটি ক্রমিক ডেলিভারি প্যাটার্ন বাছুন
রোলআউট যন্ত্র ক্ষতির পরিসরের সঙ্গে মেলান, যেমন অধ্যায় 8.1 ডিপ্লয়মেন্ট কৌশলের জন্য যুক্তি দেয়। একটি ক্যানারি রিলিজ ট্রাফিকের একটি ছোট টুকরো নতুন সংস্করণে পাঠায় এবং স্বাস্থ্য টিকলেই কেবল প্রসারিত করে। একটি ব্লু-গ্রিন ডিপ্লয়মেন্ট দুটি প্রোডাকশন পরিবেশ রাখে এবং তাৎক্ষণিক কাটওভার ও তাৎক্ষণিক উল্টানোর জন্য তাদের মধ্যে ট্রাফিক সরায়। একটি রোলিং ডিপ্লয়মেন্ট ব্যাচে ইনস্ট্যান্স প্রতিস্থাপন করে। একটি রিং-ভিত্তিক ডিপ্লয়মেন্ট নামকরা শ্রোতা জুড়ে প্রসারিত হয়: আগে অভ্যন্তরীণ ব্যবহারকারী, তারপর একটি বিটা কোহর্ট, তারপর একটি ছোট অঞ্চল, তারপর সবাই। বড় প্রতিষ্ঠানের জন্য রিং সবচেয়ে দরকারি কাঠামো কারণ তারা নাম দেয় প্রতিটি ধাপে কে উন্মুক্ত, ঠিক যা একজন নিরীক্ষক এবং একজন ঘটনা-সাড়াদাতা দুজনেই জানতে চান। কনটেইনার প্ল্যাটফর্ম ও অর্কেস্ট্রেশন (অধ্যায় 8.3) সেই ট্রাফিক-আকার-দেওয়া মৌলিক উপাদান দেয় যা এই প্যাটার্ন চালানো সস্তা করে।
স্বাস্থ্য পরীক্ষা ও স্বয়ংক্রিয় রোলব্যাকে রোলআউট গেট করুন
ঘটনার সময় নয়, রিলিজের আগে বস্তুনিষ্ঠ স্বাস্থ্য মানদণ্ড সংজ্ঞায়িত করুন। স্বয়ংক্রিয় বিশ্লেষণ ক্যানারিকে ভিত্তিরেখার সঙ্গে ত্রুটি হার, বিলম্ব ও সম্পৃক্তিতে তুলনা করে এবং কোনো মানুষ লক্ষ করার অপেক্ষা না করে উন্নীত বা ফেরত করে। সাইট নির্ভরযোগ্যতা প্রকৌশল (অধ্যায় 9.1) থেকে আপনার সেবা-স্তরের উদ্দেশ্য ও ত্রুটি বাজেটের সঙ্গে উন্নয়ন বাঁধুন: বাজেট সুস্থ থাকলে আপনি অবাধে রিলিজ করেন, এবং খরচ হয়ে গেলে সেবা স্থির না হওয়া পর্যন্ত পাইপলাইন এগোতে অস্বীকার করে। স্বয়ংক্রিয় রোলব্যাক সবচেয়ে গুরুত্বপূর্ণ কারণ এটি সেই দ্বিধা সরায় যা একটি ছোট রিগ্রেশনকে বড় বিভ্রাটে পরিণত করে। দ্রুত উল্টানো আপনার সবচেয়ে সস্তা ঘটনা নিয়ন্ত্রণও: সেকেন্ডে রোলব্যাক আপনার ঘটনা প্রক্রিয়া (অধ্যায় 9.3) পুরোপুরি চালু হওয়ার আগেই ক্ষতির পরিসর ছোট করে। এভাবে আপনি যে পরিবর্তন-ব্যর্থতা হার ও পুনরুদ্ধার সময় উন্নত করেন সেটিই আপনার ডেলিভারি পাইপলাইনের অনুসরণ করা প্রবাহ-ও-স্থিতিশীলতা সংকেত (অধ্যায় 11.2)।
ঝুঁকি কমাতে ডার্ক লঞ্চ ও শ্যাডো ট্রাফিক ব্যবহার করুন
কিছু পরিবর্তন এত পরিণতিমূলক যে পূর্ণ উন্মুক্ততায় প্রথম প্রকৃত ব্যবহারকারীদের মুখোমুখি হওয়া উচিত নয়। ডার্ক লঞ্চিং একটি ফিচার বন্ধ অবস্থায় পাঠায়, তারপর কেউ দেখার আগে অভ্যন্তরীণভাবে বা প্রোডাকশনের একটি ভগ্নাংশের বিপরীতে তা চালিয়ে দেখে। শ্যাডো ট্রাফিক জীবন্ত অনুরোধ নতুন কোড পথে কপি করে এবং সাড়া ফেলে দেয়, তাই আপনি শূন্য ব্যবহারকারী প্রভাবে প্রকৃত লোড ও সঠিকতা মাপেন। এই কৌশল আপনাকে একটি পুনর্লিখন বা নতুন নির্ভরতা খাঁটি ট্রাফিকের অধীনে যাচাই করতে দেয়, যা কোনো স্টেজিং পরিবেশ বিশ্বস্তভাবে পুনরুৎপাদন করে না। এগুলো ক্যানারির জন্য ব্যবহৃত একই স্বাস্থ্য বিশ্লেষণের সঙ্গে জুড়ুন।
একই ফ্ল্যাগ ব্যবস্থার মাধ্যমে নিয়ন্ত্রিত পরীক্ষা চালান
পরীক্ষা ফ্ল্যাগ সেই জায়গা যেখানে রিলিজ প্রকৌশল পণ্য শেখার সঙ্গে মেলে। একটি A/B টেস্টিং বিভাজন তুলনীয় কোহর্টকে ভ্যারিয়েন্ট দেয় এবং একটি বাছা ফল মাপে, অধ্যায় 7.4-এর পণ্য বিশ্লেষণ চর্চায় জোগান দিয়ে। নিরাপত্তা রোলআউট ও পরীক্ষা দুটির জন্য একটি ফ্ল্যাগ ও টার্গেটিং ব্যবস্থা পুনর্ব্যবহার করুন, যাতে আপনার একটি একক নিরীক্ষা পথ ও একটি একক কিল সুইচ থাকে, কে কোন বালতিতে তা নিয়ে ভিন্নমত করা দুটি সমান্তরাল টগল স্ট্যাক নয়।
এক্সপ্যান্ড ও কন্ট্র্যাক্টে ডেটাবেস পশ্চাদ্মুখী সামঞ্জস্যপূর্ণ রাখুন
রোলআউট ও রোলব্যাক কেবল তখনই নিরাপদ থাকে যখন স্কিমা একসঙ্গে পুরনো ও নতুন কোড সহ্য করে, যা যেকোনো ক্রমান্বয়ে রোলআউটে অনিবার্য। এক্সপ্যান্ড ও কন্ট্র্যাক্ট (সমান্তরাল পরিবর্তন) প্যাটার্ন ব্যবহার করুন: প্রথমে একটি পশ্চাদ্মুখী-সামঞ্জস্যপূর্ণ মাইগ্রেশনে নতুন কলাম বা টেবিল যোগ করে এক্সপ্যান্ড করুন, তারপর এমন কোড ডিপ্লয় করুন যা পুরনো ও নতুন দুটি আকারেই লেখে, তারপর ব্যাকফিল করুন, তারপর পড়া সরান, এবং অনেক পরে কোনো চলমান কোড আর তার ওপর নির্ভর না করলে পুরনো আকার সরিয়ে কন্ট্র্যাক্ট করুন। একটি ধ্বংসাত্মক মাইগ্রেশন যে ডিপ্লয়ের দরকার তার সঙ্গে কখনো মেলাবেন না। এই শৃঙ্খলাই আপনাকে ইতিমধ্যে এগিয়ে যাওয়া ডেটাবেস ছাড়া কোড রোলব্যাক করতে দেয়, এবং এটি সরাসরি আপনার টেস্টিং কৌশল (অধ্যায় 2.4)-র সঙ্গে সংযুক্ত, যা মিশ্র-সংস্করণ জানালা ঢাকতে হবে।
পরিবর্তন ব্যবস্থাপনাকে আটকানোর বদলে রেকর্ড করান
পরিবর্তনের শ্রেণি পূর্ব-অনুমোদন করে নিরীক্ষা ও প্রবাহ মেলান। মানক, কম-ঝুঁকির পরিবর্তনের ধরন সংজ্ঞায়িত করুন যা স্বয়ংক্রিয়ভাবে পাইপলাইনের মধ্য দিয়ে প্রবাহিত হয়, কে অনুমোদন করেছে, কোন টেস্ট চলেছে, কোন আর্টিফ্যাক্ট ডিপ্লয় হয়েছে এবং প্রতিটি রিংয়ে কোন শ্রোতা উন্মুক্ত হয়েছে তা ধরে। সত্যিই উচ্চ-ঝুঁকির পরিবর্তনের জন্য মানুষের পরিবর্তন-উপদেষ্টা পর্যালোচনা সংরক্ষণ করুন। প্রতিটি রুটিন ডিপ্লয় পরিদর্শন করা একটি ঐতিহ্যগত পরিবর্তন নিয়ন্ত্রণ বোর্ড বাধা হয়ে ওঠে যা দলগুলোকে বড়, ঝুঁকিপূর্ণ ব্যাচের দিকে ঠেলে, এর অভিপ্রায়ের বিপরীত। সরকারে একটি পরিচালনার কর্তৃত্ব ও আনুষ্ঠানিক পরিবর্তন নিয়ন্ত্রণ ক্রমিক ডেলিভারির সঙ্গে সহাবস্থান করতে পারে যখন রোলআউট টুলিং নিয়ন্ত্রণ কাঠামোর প্রয়োজনীয় প্রমাণ নির্গত করে, তাই রিং-ভিত্তিক রেকর্ডই নিরীক্ষা নিদর্শন।
ট্রেড-অফ: সুবিধা ও অসুবিধা
| প্যাটার্ন | সুবিধা | অসুবিধা | সবচেয়ে ভালো মানায় |
|---|---|---|---|
| ক্যানারি | ডেটা-চালিত, ছোট ক্ষতির পরিসর | ভালো মেট্রিক ও ট্রাফিক পরিমাণ লাগে | বড় ব্যবহারকারী-মুখী সেবা |
| ব্লু-গ্রিন | তাৎক্ষণিক কাটওভার ও রোলব্যাক | স্যুইচের সময় পরিবেশ খরচ দ্বিগুণ | দ্রুত ফেরানো দরকার এমন জটিল সেবা |
| রোলিং | সস্তা, সরল, অতিরিক্ত পরিবেশ নেই | ধীর রোলব্যাক, মিশ্র সংস্করণ চালু | স্টেটলেস অভ্যন্তরীণ সেবা |
| রিং-ভিত্তিক | নামকরা শ্রোতা, স্পষ্ট নিরীক্ষা পথ | ধীরতর পূর্ণ রোলআউট; বেশি সমন্বয় | নিয়ন্ত্রিত ও বহু-সেবা সম্পত্তি |
| ফিচার ফ্ল্যাগ | ডিপ্লয়কে রিলিজ থেকে আলাদা করে; তাৎক্ষণিক কিল সুইচ | ফ্ল্যাগ ঋণ; টেস্টিং ম্যাট্রিক্স বাড়ে | নিরাপদে অসম্পূর্ণ কাজ পাঠানো দল |
| রিলিজ ট্রেন | পূর্বাভাসযোগ্য ছন্দ, সহজ সমন্বয় | অনেক পরিবর্তন জুড়ে; ট্রেনের জন্য অপেক্ষা | একটি রিলিজ ভাগ করা অনেক দল |
| চাহিদা-অনুযায়ী রিলিজ | ছোট ব্যাচ, দ্রুত প্রতিক্রিয়া | আন্তঃ-দল সমন্বয় কঠিনতর | উচ্চ-আস্থা নিরন্তর-ডেলিভারি দল |
কেন্দ্রীয় টানাপোড়েন সমন্বয় ও স্বাধীনতার মধ্যে। রিলিজ ট্রেন অনেক দলের পরিবর্তন একটি নির্দিষ্ট সূচিতে বান্ডিল করে, যা যুক্তি করা সহজ কিন্তু একটি সমাপ্ত পরিবর্তনকে অপেক্ষা করতে বাধ্য করে এবং সম্পর্কহীন কাজ একটি ঘটনায় জুড়ে দেয়। চাহিদা-অনুযায়ী রিলিজ প্রতিটি দলকে প্রস্তুত হলেই পাঠাতে দেয়, যা দ্রুততর কিন্তু দাবি করে সেবা স্বাধীনভাবে ডিপ্লয়যোগ্য ও পশ্চাদ্মুখী সামঞ্জস্যপূর্ণ থাকে। সমাধান সাধারণত আর্টিফ্যাক্ট ও স্কিমা স্তরে বিচ্ছিন্ন করা যাতে দলগুলো চাহিদা-অনুযায়ী রিলিজ করতে পারে, তারপর একটি আন্তঃ-সেবা ফিচার সত্যিই চালু হওয়ার ব্যবহারকারী-দৃশ্যমান মুহূর্ত সমন্বয় করতে ফ্ল্যাগ ও রিং ব্যবহার করা। এভাবে প্রযুক্তিগত রিলিজ ও পণ্য লঞ্চ আলাদা সিদ্ধান্ত, এবং কোনোটিই অন্যটিকে আটকায় না।
আপনার দলের সঙ্গে আলোচনার প্রশ্ন
রাত ২টায় একটি রিলিজ ভুল হলে উল্টাতে কত সেকেন্ড লাগে, এবং কে বা কী ট্রিগার টানে? সৎ উত্তর প্রকাশ করে আপনি সত্যিই ডিপ্লয় ও রিলিজ আলাদা করেছেন নাকি একটি জুড়ে-থাকা প্রক্রিয়ার ওপর কেবল ফ্ল্যাগ যোগ করেছেন। যে রোলব্যাকে পুনঃবিল্ড, পূর্বাবস্থায় ফেরানোর জন্য একটি ডেটাবেস মাইগ্রেশন, বা সিদ্ধান্ত নিতে একজন পেজড মানুষ লাগে তা রোলব্যাক নয়, এটি একটি দ্বিতীয় ঘটনা। আপনার শীর্ষ তিনটি সেবার প্রকৃত যন্ত্র আনুন: উন্মুক্ততা উল্টানো ফ্ল্যাগ বা ট্রাফিক সরণ, যে স্বাস্থ্য সংকেত তা স্বয়ংক্রিয়ভাবে ট্রিগার করে, এবং যে স্কিমা গ্যারান্টি উল্টানো নিরাপদ করে। একটি বড় সম্পত্তির জন্য এটি আপনার প্রকৃত ক্ষতির পরিসর ঠিক করে, কারণ দ্রুত স্বয়ংক্রিয় উল্টানোই একটি রিগ্রেশনকে বিভ্রাট হওয়া থেকে ঠেকায়। উত্তর সেকেন্ডের বদলে বৈঠকে মাপা হলে সেটিই প্রথমে সারাতে হবে।
ফ্ল্যাগ অবসর দেওয়ার জন্য আপনার নীতি কী, এবং আপনি এখন কতটা ফ্ল্যাগ ঋণ বহন করছেন? প্রতিটি ফিচার ফ্ল্যাগ আপনার কোডে একটি কাঁটা যা আপনাকে যুক্তি ও পরীক্ষা করতে হওয়া অবস্থার সংখ্যা গুণ করে, এবং উদ্দেশ্য পেরিয়ে টেকা ফ্ল্যাগ নিখাদ দায়। নিয়ম এখনই ঠিক করুন: প্রতিটি রিলিজ ফ্ল্যাগ একজন মালিক ও একটি মেয়াদোত্তীর্ণ তারিখ পায়, বাসি ফ্ল্যাগ একটি ড্যাশবোর্ডে ভাসে, এবং সরানো কোনো-একদিনের পরিষ্কারের বদলে পরিকল্পিত কাজ। জীবন্ত ফ্ল্যাগের গণনা, তাদের বয়স, এবং কতগুলো তাদের উদ্দেশ্যপ্রাপ্ত অপসারণ তারিখ পেরিয়েছে তা আনুন। একটি বড় কোডবেসে অনিয়ন্ত্রিত ফ্ল্যাগ স্থায়ী শর্তাধীন জটিলতা হয় যা কেউ মুছতে সাহস করে না, এবং নিরাপত্তা যন্ত্র বাগের উৎসে পরিণত হয়। সেই সংখ্যার প্রতি দলের সহনশীলতা আসলে তারা পরিচালনগত স্বাস্থ্যবিধিকে কতটা গুরুত্ব দেয় সে সম্পর্কে একটি বিবৃতি।
আপনার পরিবর্তন-অনুমোদন প্রক্রিয়া কি রিলিজ নিরাপদ করে, নাকি কেবল ধীর? অনেক প্রতিষ্ঠান প্রতিটি ডিপ্লয় পর্যালোচনা করা একটি পরিবর্তন-উপদেষ্টা বোর্ড চালায়, এবং অস্বস্তিকর প্রশ্ন হলো এটি কখনো সত্যিই একটি খারাপ পরিবর্তন থামিয়েছে নাকি কেবল বিলম্ব যোগ করেছে। ডেটা আনুন: মধ্যক অনুমোদন বিলম্ব, বোর্ড-পর্যালোচিত বনাম পূর্ব-অনুমোদিত পরিবর্তনের পরিবর্তন-ব্যর্থতা হার, এবং পর্যালোচনা কত ঘন ঘন ছোট পরিবর্তন বড়, ঝুঁকিপূর্ণ ব্যাচে মেশায়। লক্ষ্য হলো সত্যিই উচ্চ-ঝুঁকির পরিবর্তনের জন্য মানুষের পর্যালোচনা সংরক্ষণ করা, আর মানক পরিবর্তন স্বয়ংক্রিয় প্রমাণ সংগ্রহসহ পাইপলাইনের মধ্য দিয়ে প্রবাহিত হতে দেওয়া। নিয়ন্ত্রিত ও সরকারি প্রেক্ষাপটের জন্য যাচাই করুন রোলআউট টুলিং নিয়ন্ত্রণ কাঠামোর প্রয়োজনীয় নিরীক্ষা রেকর্ড তৈরি করে, যাতে নিয়ন্ত্রণ পাঠানোর সামনের গেটের বদলে তার উপজাত হয়। পর্যালোচনা ব্যর্থতা না কমিয়ে বিলম্ব যোগ করলে এটি সম্মতির পোশাক পরা নাট্য।
কোন বস্তুনিষ্ঠ স্বাস্থ্য সংকেতের ওপর আপনি একটি যন্ত্রকে কাজ করতে দিতে ইচ্ছুক, এবং প্রতিটি শীর্ষ-স্তর সেবার কি আসলে গেট করার মতো যথেষ্ট ভালো মেট্রিক আছে? স্বয়ংক্রিয় ক্যানারি বিশ্লেষণ ও ত্রুটি-বাজেট গেটিং কেবল তখনই কাজ করে যখন ত্রুটি হার, বিলম্ব ও সম্পৃক্তি লুপে মানুষ ছাড়াই একটি উন্নয়ন বা রোলব্যাক বিশ্বাস করার মতো যথেষ্ট পরিষ্কারভাবে মাপা হয়, এবং অনেক দল একটি ঘটনার সময় আবিষ্কার করে তাদের সংকেত সিদ্ধান্ত নেওয়ার জন্য খুব কোলাহলপূর্ণ বা খুব বিরল। একটি বড় সম্পত্তির জন্য এটি ঠিক করে আপনার রিলিজ পরিমাণের কতটা ম্যানুয়াল তদারকি ছাড়া নিরাপদে প্রবাহিত হতে পারে, যা স্কেল করা প্ল্যাটফর্ম এবং প্রতিটি রোলআউটে একজন মানুষ দেখা দরকার এমনটির মধ্যে পার্থক্য। আপনার তিনটি সবচেয়ে জটিল সেবার প্রকৃত ড্যাশবোর্ড আনুন: আপনি যে মেট্রিকে গেট করেন, একটি ক্যানারিকে পরিসংখ্যানগতভাবে অর্থবহ করা ট্রাফিক পরিমাণ, এবং আপনার স্বয়ংক্রিয় বিশ্লেষণের মিথ্যা-ইতিবাচক হার। নিয়ন্ত্রিত ও সরকারি পরিবেশে একই সংকেত নিরীক্ষণযোগ্য রেকর্ডে জোগান দেয়, তাই দুর্বল পর্যবেক্ষণযোগ্যতা একই সঙ্গে একটি নির্ভরযোগ্যতা ফাঁক ও একটি সম্মতি ফাঁক, এবং মেট্রিক মানে অর্থায়ন ধরে নেওয়া সামর্থ্যের বদলে পরিকল্পনায় একটি নামকরা লাইন হওয়া উচিত।
আপনার স্কিমা পরিবর্তন কি আসলে রোলব্যাক টিকে থাকে, এবং আপনি পাঠানোর আগে মিশ্র-সংস্করণ জানালা নিরাপদ তা কীভাবে প্রমাণ করেন? ক্রমিক ডেলিভারি একটি দ্রুত রিভার্স গিয়ারের প্রতিশ্রুতি দেয়, কিন্তু একটি ফিচারের সঙ্গে জুড়ে-থাকা ধ্বংসাত্মক মাইগ্রেশন নীরবে সেই প্রতিশ্রুতি বাতিল করে, কারণ কোড রোলব্যাক করলে তা ইতিমধ্যে এগিয়ে যাওয়া ডেটাবেসের দিকে নির্দেশ করে থাকে। অনেক সেবা একটি স্কিমা ভাগ করা বড় প্রতিষ্ঠানের জন্য ঝুঁকি চক্রবৃদ্ধি হয়: এক দলের কন্ট্র্যাক্ট ধাপ অন্য দলের রোলব্যাক আটকে দিতে পারে, তাই এক্সপ্যান্ড-ও-কন্ট্র্যাক্ট শৃঙ্খলা স্থানীয় অভ্যাসের বদলে ভাগ করা মান হতে হবে। আপনার মাইগ্রেশন প্লেবুক এবং তা অনুসরণ করার প্রমাণ আনুন: আপনি এক্সপ্যান্ড কীভাবে কন্ট্র্যাক্ট থেকে আলাদা করেন, ডুয়াল-রাইট ও ব্যাকফিল লোডের অধীনে পরীক্ষিত কি না, এবং আপনার টেস্ট স্যুট কীভাবে নতুন স্কিমার বিপরীতে পুরনো কোড এবং পুরনোটির বিপরীতে নতুন কোড প্রয়োগ করে। দীর্ঘজীবী ডেটা ও আনুষ্ঠানিক পরিবর্তন নিয়ন্ত্রণ বহনকারী এন্টারপ্রাইজ ও সরকারি সম্পত্তির জন্য একটি অফেরানো-যোগ্য মাইগ্রেশন কেবল বিভ্রাট ঝুঁকি নয়, একটি ডেটা-অখণ্ডতা ও নিরীক্ষা উন্মুক্ততা যা একটি নির্ধারিত রক্ষণাবেক্ষণ জানালা বাঁচাবে না।
একটি আন্তঃ-সেবা ফিচার ভিন্ন গতিতে পাঠানো দল জুড়ে বিস্তৃত হলে, এটি চালু হওয়ার মুহূর্তের মালিক কে, এবং তাদের ডিপ্লয় না জুড়ে আপনি কীভাবে সমন্বয় করেন? ডিপ্লয়কে রিলিজ থেকে আলাদা করার পুরো বিন্দু হলো প্রতিটি দল স্বাধীনভাবে তার আর্টিফ্যাক্ট পাঠাতে পারে যখন একটি একক ফ্ল্যাগ ব্যবহারকারী-দৃশ্যমান লঞ্চ নিয়ন্ত্রণ করে, কিন্তু তা কেবল তখনই টেকে যখন কেউ সেবা সীমানা জুড়ে লঞ্চ সিদ্ধান্ত এবং ফ্ল্যাগ টার্গেটিংয়ের মালিক। একটি বড় দলের জন্য ব্যর্থতার ধরন হলো কেউ না বাছা একটি বাস্তব রিলিজ ট্রেন: একটি ধীর সেবা অন্য প্রতিটি দলকে অপেক্ষা করতে বাধ্য করে, বা একটি অসমন্বিত ফ্ল্যাগ ফ্লিপ একটি অর্ধ-জোড়া ফিচার উন্মুক্ত করে। আপনার পরবর্তী বহু-সেবা লঞ্চের নির্ভরতা মানচিত্র, লঞ্চ ফ্ল্যাগের মালিক, এবং প্রতিটি সেবাকে নিজস্ব ঘড়িতে ডিপ্লয় করতে দেওয়া পশ্চাদ্মুখী-সামঞ্জস্য গ্যারান্টি আনুন। আনুষ্ঠানিক লঞ্চ অনুমোদনসহ এন্টারপ্রাইজ ও সরকারি কর্মসূচিতে নাম দিন আন্তঃ-সেবা চালু করায় কে স্বাক্ষর করেন এবং তিনি কী প্রমাণ দেখেন, যাতে সমন্বিত লঞ্চ সর্বশেষ কে মার্জ করেছিল তার দুর্ঘটনার বদলে একটি সুচিন্তিত, রেকর্ড করা সিদ্ধান্ত হয়।
খাতভেদে দৃষ্টিভঙ্গি
স্টার্টআপ। তিনজন ইঞ্জিনিয়ার নিয়েও ডিপ্লয় ও রিলিজ আলাদা করা করার যোগ্য, কিন্তু সস্তা রাখুন। নতুন কাজ ডিফল্টে বন্ধ একটি রিলিজ ফ্ল্যাগে মুড়ে দিন, ট্রাঙ্কে পাঠান, এবং গ্রাহকদের আগে নিজের জন্য ফিচার চালু করুন, যাতে একটি অসমাপ্ত পরিবর্তন কখনো ডিপ্লয় আটকায় না। আপনি কর্মী দিতে পারেন না এমন ভারী ক্যানারি-বিশ্লেষণ প্ল্যাটফর্ম বাদ দিন: একটি হোস্টেড ফ্ল্যাগ সেবা ও একটি কঠিন কিল সুইচ বেশিরভাগ নিরাপত্তা কেনে, এবং একজন ব্যক্তি সাপ্তাহিক ফ্ল্যাগ-পরিষ্কার আচার চালালে ঋণ আপনার গতি গিলতে পারে না।
ছোট ব্যবসা। কোনো রিলিজ ইঞ্জিনিয়ার নেই আর বাজেট কম, তাই একটি রোলআউট ব্যবস্থা গড়ার বদলে আপনার বিদ্যমান প্ল্যাটফর্ম ইতিমধ্যে যে ক্রমিক ডেলিভারি দেয় তার ওপর ঝুঁকুন। ম্যানেজড হোস্টিং, একটি ফিচার-ফ্ল্যাগ SaaS, বা আপনার ফ্রেমওয়ার্কের গাঁথা ধাপে ধাপে রোলআউট সাধারণত আপনার দরকারি ছোট ক্ষতির পরিসর ঢাকে। রিভার্স গিয়ারকে সেই জিনিস গণ্য করুন যা আপনাকে ঠিক পেতেই হবে: সেকেন্ডে বন্ধ করা যায় এমন একটি পরিবর্তন সুর করার সময় না থাকা পরিশীলিত স্বয়ংক্রিয় বিশ্লেষণের চেয়ে অনেক বেশি গুরুত্বপূর্ণ।
এন্টারপ্রাইজ। সমস্যা অনেক দল ও সেবা জুড়ে সামঞ্জস্য: মালিক, টাইপ ও মেয়াদোত্তীর্ণসহ একটি ভাগ করা ফ্ল্যাগ শব্দভান্ডার, মানক রিং-ভিত্তিক রোলআউট, এবং সর্বত্র একই ভাবে প্রয়োগ করা ত্রুটি-বাজেট গেটিং যাতে গোষ্ঠীগুলো প্রতিদ্বন্দ্বী টগল স্ট্যাক আবিষ্কার বন্ধ করে। ফ্ল্যাগ ঋণ সম্পত্তি-ব্যাপী মেট্রিক হিসেবে শাসন করুন, এক্সপ্যান্ড-ও-কন্ট্র্যাক্ট মাইগ্রেশন প্রমিত করুন যাতে এক দলের স্কিমা পরিবর্তন অন্যের রোলব্যাক আটকে না দেয়, এবং নিরীক্ষণযোগ্য রোলআউট রেকর্ড এমন উপজাত করুন যা প্রতিটি সেবা একই আকারে নির্গত করে। মানক পরিবর্তন পূর্ব-অনুমোদন করুন এবং মানুষের পর্যালোচনা সত্যিই উচ্চ-ঝুঁকির জন্য সংরক্ষণ করুন, যাতে নিয়ন্ত্রণ জটিল পথে বোর্ড ছাড়াই স্কেল করে।
সরকার। ক্রয় নিয়ম, স্বচ্ছতা ও জনগণের কাছে জবাবদিহি প্রতিটি রিলিজ আকার দেয়। রোলআউট টুলিংকে নিরীক্ষা প্রমাণের উৎস করুন, যাতে প্রতিটি রিং সম্প্রসারণ অনুমোদনকারী কর্তৃপক্ষ, চলা টেস্ট, আর্টিফ্যাক্ট হ্যাশ এবং ঠিক কোন জনগোষ্ঠী উন্মুক্ত হয়েছিল রেকর্ড করে, এবং একটি পরিচালনার কর্তৃত্ব এর সঙ্গে লড়ার বদলে ক্রমিক ডেলিভারির সঙ্গে সহাবস্থান করে। ব্লু-গ্রিন বা রিং-ভিত্তিক প্যাটার্ন পছন্দ করুন যার নামকরা শ্রোতা একজন নিরীক্ষক ও একজন ঘটনা-সাড়াদাতা দুজনেই পড়তে পারেন, কোনো নাগরিক প্রভাবিত হওয়ার আগে জীবন্ত কেসের বিপরীতে শ্যাডো ট্রাফিক দিয়ে পরিণতিমূলক পরিবর্তন যাচাই করুন, এবং একটি নির্ধারিত বিগ-ব্যাং জানালার বদলে নিয়ন্ত্রণ কাঠামো যে নিরীক্ষণযোগ্য রেকর্ড গ্রহণ করে সেটিই নিদর্শন রাখুন।
উদাহরণ
স্টার্টআপ। দশজনের একটি SaaS কোম্পানি দিনে অনেকবার ট্রাঙ্কে পাঠায় এবং প্রতিটি নতুন সামর্থ্য ডিফল্টে বন্ধ একটি রিলিজ ফ্ল্যাগে মোড়ায়। একটি ঝুঁকিপূর্ণ নতুন বিলিং ইন্টিগ্রেশন ডার্ক লঞ্চ হয়: তারা এক সপ্তাহ এর বিপরীতে শ্যাডো ট্রাফিক চালায়, কোনো গ্রাহক প্রভাব ছাড়াই এটি প্রকৃত অনুরোধ আকার সামলাতে দেখে, তারপর রিং ধরে ধরে রোল আউট করে, নিজেদের অ্যাকাউন্ট ও মুষ্টিমেয় বন্ধুত্বপূর্ণ বিটা গ্রাহক দিয়ে শুরু করে। পাঁচ-শতাংশ রিংয়ে ত্রুটি হার লাফিয়ে উঠলে একটি স্বয়ংক্রিয় পরীক্ষা সেকেন্ডে ফ্ল্যাগ বন্ধ করে, এবং তারা সোমবারে শান্তভাবে ডিবাগ করে। একজন ইঞ্জিনিয়ার সাপ্তাহিক ফ্ল্যাগ-পরিষ্কার আচারের মালিক যাতে টগল কখনো জমে না।
এন্টারপ্রাইজ। একটি বৈশ্বিক পেমেন্ট কোম্পানি ছয়টি সেবা ও একটি ভাগ করা স্কিমা জুড়ে একটি পরিবর্তন সমন্বয় করে। প্রতিটি দল এক্সপ্যান্ড ও কন্ট্র্যাক্ট ব্যবহার করে স্বাধীনভাবে ও পশ্চাদ্মুখী-সামঞ্জস্যপূর্ণভাবে তার আর্টিফ্যাক্ট ডিপ্লয় করে, তাই কোনো ব্যবহারকারী ফিচার দেখার অনেক আগেই নতুন কলাম আছে ও ডুয়াল-রাইট হচ্ছে। ব্যবহারকারী-দৃশ্যমান লঞ্চ একটি একক পরীক্ষা ফ্ল্যাগ, ত্রুটি-বাজেট স্বাস্থ্যে বাঁধা রিং দিয়ে রোল করা: আগে অভ্যন্তরীণ, তারপর একটি ছোট দেশ, তারপর ক্রমবর্ধমান শতাংশ, প্রতিটি ধাপে স্বয়ংক্রিয় ক্যানারি বিশ্লেষণ উন্নীত বা ফেরত করে। একটি ফ্ল্যাগ-শাসন সেবা সম্পত্তি জুড়ে মালিক, টাইপ ও মেয়াদোত্তীর্ণ প্রয়োগ করে, এবং পূর্ব-অনুমোদিত মানক পরিবর্তন বোর্ড ছাড়া প্রবাহিত হয় যখন কেবল স্কিমা-কন্ট্র্যাক্ট ধাপ মানুষের পর্যালোচনা পায়। প্রতিটি রিং রূপান্তর লগ হয়, তাই নিরীক্ষা পথ নিজে নিজেই লেখা হয়।
সরকার। একটি জাতীয় সুবিধা সংস্থা একটি পরিচালনার কর্তৃত্ব ও আনুষ্ঠানিক পরিবর্তন নিয়ন্ত্রণের অধীনে কাজ করে। ক্রমিক ডেলিভারিকে সম্মতি ঝুঁকি গণ্য করার বদলে এটি রোলআউট টুলিংকে নিরীক্ষা প্রমাণের উৎস করে: প্রতিটি রিং সম্প্রসারণ অনুমোদনকারী কর্তৃপক্ষ, চলা টেস্ট, আর্টিফ্যাক্ট হ্যাশ এবং ঠিক কোন জনগোষ্ঠী উন্মুক্ত হয়েছিল রেকর্ড করে। একটি নতুন যোগ্যতা গণনা ডার্ক লঞ্চ হয় এবং জীবন্ত কেসের বিপরীতে শ্যাডো ট্রাফিক দিয়ে যাচাই হয়, তারপর তাৎক্ষণিক উল্টানোর জন্য ব্লু-গ্রিন কাটওভারসহ একটি ফ্ল্যাগের পিছনে অঞ্চল ধরে ধরে রোল আউট হয়। মানক পরিবর্তন আগে থেকে শ্রেণিবদ্ধ যাতে রুটিন কাজ বোর্ডের পিছনে সারিবদ্ধ না হয়, যখন উচ্চ-ঝুঁকির নীতি পরিবর্তন এখনো আনুষ্ঠানিক পর্যালোচনা পায়। নিরীক্ষণযোগ্য রোলআউট রেকর্ড পুরনো ত্রৈমাসিক বিগ-ব্যাং রিলিজের চেয়ে নিয়ন্ত্রণ কাঠামোকে আরও সম্পূর্ণভাবে সন্তুষ্ট করে।
ব্যবসায়িক যুক্তি: প্রেরণা, ROI ও TCO
ক্রমিক ডেলিভারির প্রতিদান প্রধানত এড়ানো ঘটনা এবং তাদের সংকুচিত তীব্রতা দ্বারা চালিত। একটি পরিবর্তন যা ব্যবহারকারীর এক শতাংশে পৌঁছায় এবং স্বয়ংক্রিয়ভাবে ফেরত যায় তা একটি গোলাকার ত্রুটির সমান খরচ করে, যেখানে পূর্ণ উন্মুক্ততায় একই ত্রুটি ঘণ্টার বিভ্রাট, জরুরি সাড়া এবং সুনামের ক্ষতি মানে হতে পারে। ডিপ্লয়কে রিলিজ থেকে আলাদা করা রিলিজকে একটি নির্ধারিত, উচ্চ-চাপের ঘটনা থেকে রুটিনে রূপান্তরও করে, যা দলের আকারের সঙ্গে অরৈখিকভাবে বাড়া সমন্বয় কর কমায়। লঞ্চ সিদ্ধান্ত ডিপ্লয় থেকে আলাদা করা পণ্য ও প্রকৌশলকে নিজেদের ঘড়িতে চলতে দেয়, তাই একটি বিপণন তারিখ কখনো ঝুঁকিপূর্ণ কোড ফ্রিজ বাধ্য করে না।
মালিকানার মোট খরচ প্রকৃত কিন্তু সেই সুবিধার বিপরীতে সামান্য। আপনি একটি ফ্ল্যাগ প্ল্যাটফর্ম, ক্যানারি-বিশ্লেষণ টুলিং, গেট করার মতো যথেষ্ট ভালো স্বাস্থ্য মেট্রিক, এবং পশ্চাদ্মুখী-সামঞ্জস্যপূর্ণ স্কিমা পরিবর্তনের শৃঙ্খলায় বিনিয়োগ করেন। চলমান খরচ ফ্ল্যাগ স্বাস্থ্যবিধি এবং ফ্ল্যাগ তৈরি করা বড় টেস্টিং ম্যাট্রিক্স, যে কারণে একটি অপরিচালিত ফ্ল্যাগ সম্পত্তিই এই চর্চা ব্যয়বহুল হওয়ার প্রধান উপায়। এটি গ্রহণ না করার খরচ ক্ষতির পরিসরে দেওয়া হয়: প্রতিটি রিলিজ সব-বা-কিছু-না, রোলব্যাক ধীর, এবং একটি একক খারাপ ডিপ্লয় সবাইকে একসঙ্গে নামাতে পারে। নিয়ন্ত্রিত প্রতিষ্ঠানের জন্য সম্মতি লভ্যাংশ নির্ণায়ক, কারণ যে যন্ত্র উন্মুক্ততা সীমিত করে সেটিই সেই নিরীক্ষণযোগ্য প্রমাণও তৈরি করে যা অন্যথায় হাতে জড়ো করতে হতো।
অ্যান্টি-প্যাটার্ন ও ফাঁদ
- ডিপ্লয় মানে রিলিজ। দুটি জুড়ে দেওয়া প্রতিটি ব্যবহারকারী-মুখী পরিবর্তনকে রিভার্স গিয়ারহীন ঝুঁকিপূর্ণ, একসঙ্গে-সব ঘটনা করে।
- ফ্ল্যাগ ঋণ। উদ্দেশ্য পেরিয়ে টেকা টগল স্থায়ী শর্তাধীন জটিলতা হয় যা কেউ মুছতে সাহস করে না।
- খোলা ব্যর্থ হওয়া ফ্ল্যাগ। একটি ফ্ল্যাগ সেবা বিভ্রাট যা নতুন, অপরীক্ষিত পথে ডিফল্ট করে একটি ছোট ঝলককে বিভ্রাটে পরিণত করে।
- স্কিমা পূর্বাবস্থায় ফেরানো লাগে এমন রোলব্যাক। ফিচারের সঙ্গে পাঠানো ধ্বংসাত্মক মাইগ্রেশন আপনাকে নিরাপদে কোড ফেরাতে অক্ষম করে।
- অনুভূতিতে ম্যানুয়াল উন্নয়ন। সংজ্ঞায়িত স্বাস্থ্য মানদণ্ড ও ত্রুটি বাজেটের বদলে “ঠিকই দেখাচ্ছে” বলে একটি রোলআউট এগিয়ে নেওয়া।
- রোলব্যাক পরিকল্পনাহীন রোলআউট। একটি ফিচার কীভাবে চালু করবেন তা নকশা করা কিন্তু কীভাবে বন্ধ করবেন তা নয়।
- পরিবর্তন-বোর্ডের ছাপ-মারা। কখনো কিছু প্রত্যাখ্যান না করা পর্যালোচনা নিরাপত্তা যোগ না করে বিলম্ব যোগ করে এবং দলগুলোকে বড় ব্যাচের দিকে ঠেলে।
- আলাদা ব্যবস্থায় পরীক্ষা ও নিরাপত্তা ফ্ল্যাগ। কে কোন বালতিতে তা নিয়ে ভিন্নমত করা দুটি টগল স্ট্যাক, নিরীক্ষা পৃষ্ঠ দ্বিগুণ করে।
পরিপক্বতা মডেল
- স্তর 1, সূচনা: ডিপ্লয় ও রিলিজ একই ঘটনা। পরিবর্তন একসঙ্গে সব বেরোয়, রোলব্যাক মানে হাতে একটি পুরনো বিল্ড পুনরায় ডিপ্লয়, এবং স্কিমা মাইগ্রেশন ধ্বংসাত্মক ও ফিচারের সঙ্গে জুড়ে। যেকোনো ক্রমিক উন্মুক্ততা অ্যাড হক, প্রতিক্রিয়াশীল ও অনথিবদ্ধ।
- স্তর 2, বিকাশ: ফিচার ফ্ল্যাগ কিছু দলের আছে এবং অসমাপ্ত কাজ লুকায়, কিন্তু সেগুলোর মালিক, টাইপ ও মেয়াদোত্তীর্ণ নেই, এবং ঋণ জমছে। কয়েকটি জটিল সেবার জন্য ক্যানারি বা ব্লু-গ্রিন ব্যবহৃত, দল-ধরে-দল অসঙ্গতভাবে প্রয়োগ করা। রোলব্যাক স্ক্রিপ্ট করা কিন্তু মানুষ-ট্রিগার করা, এবং স্কিমা পরিবর্তন কেবল মাঝে মাঝে পশ্চাদ্মুখী সামঞ্জস্যপূর্ণ।
- স্তর 3, মানসম্মতকরণ: ডিপ্লয় ও রিলিজ প্রতিষ্ঠান জুড়ে ডিফল্টে আলাদা। ফ্ল্যাগ টাইপ করা, মালিকানাধীন ও মেয়াদোত্তীর্ণ, নিরাপদ ডিফল্টসহ, একটি নথিবদ্ধ ও প্রয়োগ করা মান অনুসরণ করে। রিং-ভিত্তিক রোলআউট ও স্বয়ংক্রিয় ক্যানারি বিশ্লেষণসহ ক্রমিক ডেলিভারি রীতি, এক্সপ্যান্ড-ও-কন্ট্র্যাক্ট মাইগ্রেশন বাধ্যতামূলক, এবং মানক পরিবর্তন স্বয়ংক্রিয় প্রমাণ সংগ্রহসহ পাইপলাইনের মধ্য দিয়ে প্রবাহিত হয়।
- স্তর 4, ব্যবস্থাপনা: রিলিজ প্রক্রিয়া ডেটা দিয়ে মাপা ও নিয়ন্ত্রিত। পরিবর্তন-ব্যর্থতা হার, পুনরুদ্ধারের গড় সময়, রোলব্যাক বিলম্ব, ফ্ল্যাগ বয়স ও গণনা, এবং ক্যানারি মিথ্যা-ইতিবাচক হার ভিত্তিরেখা ও ত্রুটি বাজেটের বিপরীতে অনুসরণ করা হয়, এবং রোলআউট সেই SLO (অধ্যায় 9.1)-তে গেট করা যাতে উন্নয়ন ও রোলব্যাক সংজ্ঞায়িত স্বাস্থ্য সংকেতে স্বয়ংক্রিয়ভাবে কাজ করে। ফ্ল্যাগ ঋণ সম্পত্তি-ব্যাপী মেট্রিক হিসেবে প্রতিবেদিত এবং একটি সূচিতে অবসরপ্রাপ্ত, এবং রোলআউট মান থেকে বিচ্যুতি একটি পোস্টমর্টেমের বদলে ড্যাশবোর্ডে ভাসে।
- স্তর 5, সমন্বয়: ক্রমিক ডেলিভারি নিরন্তর উন্নত ও প্রতিষ্ঠান জুড়ে একীভূত। ডার্ক লঞ্চ ও শ্যাডো ট্রাফিক রুটিনভাবে বড় পরিবর্তনের ঝুঁকি কমায়, পরীক্ষা ও নিরাপত্তা রোলআউট একটি ফ্ল্যাগ ব্যবস্থা ও নিরীক্ষা পথ ভাগ করে, এবং রিলিজ নীতি রিয়েল-টাইমে ত্রুটি-বাজেট অবস্থায় খাপ খায়। নিরীক্ষণযোগ্য রোলআউট রেকর্ড উপজাত হিসেবে পরিবর্তন নিয়ন্ত্রণ (অধ্যায় 9.3) সন্তুষ্ট করে, এবং সম্পত্তি ও ঝুঁকি চিত্র সরলে প্রতিষ্ঠান প্রমাণ থেকে তার রিং, গেট ও সীমা সুর করে।
আলোচনার ভাবনা
- আপনার সবচেয়ে জটিল সেবার জন্য স্বয়ংক্রিয় স্বাস্থ্য-গেট করা রোলব্যাক ও মানুষের সিদ্ধান্তের মধ্যে সঠিক সীমানা কোথায়, এবং যন্ত্রকে একা কাজ করতে দেওয়ার জন্য আপনি কোন সংকেত যথেষ্ট বিশ্বাস করবেন?
- পরীক্ষা ফ্ল্যাগ ও রিলিজ ফ্ল্যাগ কি একটি প্ল্যাটফর্ম ও একটি কিল সুইচ ভাগ করা উচিত, নাকি তাদের মেলানো যা সরায় তার চেয়ে বেশি ঝুঁকি তৈরি করে?
- একটি ফিচার ভিন্ন গতিতে পাঠানো কয়েকটি দল জুড়ে বিস্তৃত হলে আপনি কীভাবে একটি রিলিজ ট্রেন ও চাহিদা-অনুযায়ী রিলিজের মধ্যে বাছবেন?
- আপনার কোডবেসে একটি রিলিজ ফ্ল্যাগের সৎ অর্ধ-জীবন কত, এবং কী অপসারণকে তৈরির মতো রুটিন করবে?
- ত্রুটি-বাজেট অবস্থা কে রিলিজ করতে পারবেন তা কীভাবে বদলানো উচিত, এবং বাজেট খরচ হয়ে গেলে রিলিজ ফ্রিজের সিদ্ধান্ত কার?
- আপনার নিয়ন্ত্রিত প্রেক্ষাপটে একটি নির্ধারিত রিলিজ জানালার বদলে ক্রমিক ডেলিভারি গ্রহণ করতে নিয়ন্ত্রণ কাঠামোর জন্য একটি রোলআউটকে কোন সুনির্দিষ্ট প্রমাণ নির্গত করতে হবে?
প্রধান শিক্ষা
- ডিপ্লয়কে রিলিজ থেকে আলাদা করুন। কোড পাঠানো ও একটি ফিচার উন্মুক্ত করা ভিন্ন সিদ্ধান্ত, এবং ফ্ল্যাগই তাদের বিচ্ছিন্ন করে।
- ক্রমান্বয়ে রোল আউট করুন। ক্যানারি, ব্লু-গ্রিন, রোলিং ও রিং-ভিত্তিক প্যাটার্ন ক্ষতির পরিসর সীমিত করে; ঝুঁকি অনুযায়ী প্রতি সেবা স্তরে বাছুন।
- স্বাস্থ্য ও ত্রুটি বাজেটে গেট করুন। ক্যালেন্ডার বা আশাবাদ নয়, সংজ্ঞায়িত সংকেত ও SLO (অধ্যায় 9.1)-কে স্বয়ংক্রিয় উন্নয়ন ও রোলব্যাক চালাতে দিন।
- আগে রিভার্স গিয়ার নকশা করুন। দ্রুত, নিরাপদ রোলব্যাক আপনার ঘটনা প্রক্রিয়া (অধ্যায় 9.3) পুরোপুরি জড়িত হওয়ার আগেই ক্ষতির পরিসর ছোট করে।
- প্রতিটি ফ্ল্যাগ টাইপ, মালিকানা ও মেয়াদোত্তীর্ণ করুন। রিলিজ, অপস, পরীক্ষা ও অনুমতি ফ্ল্যাগের আয়ুষ্কাল ভিন্ন; অপরিচালিত ফ্ল্যাগ ঋণ হয়।
- স্কিমা পরিবর্তন পশ্চাদ্মুখী সামঞ্জস্যপূর্ণ করুন। এক্সপ্যান্ড ও কন্ট্র্যাক্ট ব্যবহার করুন যাতে মিশ্র-সংস্করণ জানালায় (অধ্যায় 2.4) রোলআউট ও রোলব্যাক দুটিই নিরাপদ থাকে।
- অনুমোদন রেকর্ড করুক, আটকাক না। মানক পরিবর্তন পূর্ব-অনুমোদন করুন এবং মানুষের পর্যালোচনা উচ্চ ঝুঁকির জন্য সংরক্ষণ করুন, যাতে রোলআউট রেকর্ডই নিরীক্ষা প্রমাণ।
তথ্যসূত্র ও আরও পড়ার জন্য
- Jez Humble ও David Farley, Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation.
- Nicole Forsgren, Jez Humble ও Gene Kim, Accelerate: The Science of Lean Software and DevOps.
- Gene Kim, Jez Humble, Patrick Debois ও John Willis, The DevOps Handbook.
- Betsy Beyer, Chris Jones, Jennifer Petoff ও Niall Richard Murphy (eds.), Site Reliability Engineering.
- Pete Hodgson, “Feature Toggles (Feature Flags)” (essay on martinfowler.com).
- Danilo Sato, “Canary Release” and Martin Fowler, “BlueGreenDeployment” (essays on martinfowler.com).
- Sam Newman, Building Microservices: Designing Fine-Grained Systems (expand-and-contract and independent deployability).
- Pramod Sadalage ও Scott Ambler, Refactoring Databases: Evolutionary Database Design (parallel-change schema migrations).
- Ron Kohavi, Diane Tang ও Ya Xu, Trustworthy Online Controlled Experiments: A Practical Guide to A/B Testing.
- James Governor, “Progressive Delivery” (RedMonk, the coining of the term).