পাঠ্যক্রম খুলুন
অগ্রসর পর্যায়

Deployment Strategy: rolling, blue-green ও canary

Rolling, Blue-Green, and Canary Deployments

এই পাঠের কুইজ ↓৫ মিনিট পড়াPHP 8.3+ · Laravel 12
আগে পড়ে নিনCI/CD: test থেকে deployment pipeline ↗
এই পাঠের সূচিপত্র

এই পাঠে যা শিখবেন

  • Rolling, blue-green ও canary তুলনা করা
  • Mixed-version compatibility বোঝা
  • Release থামানোর measurable rule লেখা

সমস্যা দিয়ে শুরু

নতুন checkout version deploy করার সময় সব instance একসঙ্গে restart হলো। User-এর cart request মাঝপথে কেটে গেল। আরেক release-এ শুধু কিছু user payment error দেখলেন। Deployment strategy traffic ও version overlap নিয়ন্ত্রণ করে; সঠিক strategy নির্বাচন করলে failure-এর বিস্তার ও rollback সময় কমানো যায়। কিন্তু database change irreversible হলে শুধু traffic পুরোনো version-এ ফেরালেই recovery হয় না।

সহজ করে বুঝি

Rolling deployment ধাপে replica replace করে। Blue-green-এ দুটি environment প্রস্তুত রেখে traffic switch হয়। Canary-তে ছোট traffic slice নতুন version পায়, পর্যবেক্ষণ ভালো হলে বাড়ে। তিন ক্ষেত্রেই readiness, drain এবং compatibility গুরুত্বপূর্ণ। Canary random percentage ছাড়াও tenant বা internal cohort দিয়ে হতে পারে; selection bias থাকলে error signal representative নাও হতে পারে।

পরিচিত একটি উপমা

নতুন রান্নার পদ্ধতি একসঙ্গে সব দোকানে চালু করার বদলে একটি শাখায় আগে পরীক্ষা করার মতো। Blue-green হলো প্রস্তুত দ্বিতীয় রান্নাঘরে order সরানো। পুরোনো ও নতুন kitchen একই stock ব্যবহার করলে হিসাবের format দুইজনকেই বুঝতে হবে।

নকশাটি দেখুন

Diagram লোড হচ্ছে…

Deployment strategy traffic exposure নিয়ন্ত্রণ করে; data compatibility ও measurable abort rule ছাড়া rollback অসম্পূর্ণ।
Diagram-এর text flow দেখুন
flowchart TD
 L[Traffic router] -->|Most requests| O[Stable release]
 L -->|Small cohort| N[Canary release]
 O --> D[(Compatible database)]
 N --> D
 N --> M[Error latency and business checks]
 M --> R[Expand or revert]

Router traffic ভাগ করে। দুই release একই compatible schema ব্যবহার করে। Canary error rate, tail latency এবং checkout completion stable-এর সঙ্গে তুলনা হয়। Sample কম হলে অপেক্ষা বা targeted test লাগতে পারে। Unacceptable regression হলে expansion থামে; router stable-এ ফেরে। In-flight request drain ছাড়া instance বন্ধ করলে user-visible interruption থাকে।

PHP ও Laravel-এ প্রয়োগ

routes/web.php-তে authenticated diagnostic fragment; release value config/app.php-তে deployment metadata থেকে আসবে। Public response-এ internal host বা secret নয়। Traffic segmentation router/platform-এর দায়; এই endpoint শুধু কোন artifact request serve করেছে তা lab-এ বুঝতে সাহায্য করে।

php
use Illuminate\Support\Facades\Route;
Route::get('/internal/release', function () {
    return response()->json([
        'release' => config('app.release', 'unknown'),
    ]);
})->middleware('auth');

সুবিধা, সীমাবদ্ধতা ও trade-off

Rolling কম extra capacity-তে হতে পারে কিন্তু কিছু সময় mixed version থাকে। Blue-green দ্রুত traffic rollback দেয়, তবে দ্বিগুণ environment ও shared state compatibility লাগে। Canary blast radius কমায়, কিন্তু analysis, cohort routing ও যথেষ্ট sample দরকার। সব strategy-তে background job, cached data এবং API contract-এর compatibility user-facing HTTP-এর বাইরেও বিবেচনা করতে হয়।

সাধারণ ভুল

  • Canary healthy দেখেই সব user-এর সব path tested ধরা।
  • Database column drop একই release-এ করা।
  • Long request drain না করে instance kill করা।

আরও একটু গভীরে

Canary comparison-এ same time window এবং traffic mix ব্যবহার করুন। Error budget burn, timeout, payment decline-এর unexpected change rollback gate হতে পারে। New code user-visible side effect করলে old code-এ ফেরা side effect undo করে না। Release artifact rollback ও data compensation আলাদা runbook। Schema expand-contract পদ্ধতি mixed version চলাকালে নিরাপদ boundary তৈরি করে।

মনে রাখুন

Deployment strategy traffic exposure নিয়ন্ত্রণ করে; data compatibility ও measurable abort rule ছাড়া rollback অসম্পূর্ণ।

নিজে চেষ্টা করুন

Checkout release-এর canary plan লিখুন। কোন cohort, কত observation window, কোন metrics এবং কী abort condition থাকবে নির্ধারণ করুন। New worker old payload পড়তে না পারলে HTTP-only canary কেন যথেষ্ট নয় ব্যাখ্যা করুন।

নিজের বোঝা যাচাই করুন

1. Rolling-এ দুই version থাকে?

সাধারণত transition window-এ থাকে। তাই schema, cache ও API backward compatibility দরকার।

2. Blue-green-এর rollback কি সব ফেরায়?

Traffic ফেরায়; ইতিমধ্যে লেখা data বা পাঠানো payment request নিজে undo করে না।

3. Canary কম error মানেই ভালো?

Sample size ও traffic mix দেখুন। কম traffic বা ভিন্ন cohort-এ failure লুকাতে পারে।

4. Readiness কেন দরকার?

নতুন instance initialization শেষ হওয়ার আগে request পেলে false failure হয়। Router-কে readiness signal মানতে হবে।

5. Abort rule কখন লিখব?

Release শুরু করার আগেই। Incident চলাকালে অস্পষ্ট সিদ্ধান্তের বদলে agreed metrics ও owner থাকা দরকার।

আরও পড়ুন

এই পাঠের কুইজ

এই পাঠ থেকে ২টি প্রশ্ন। উত্তর দিয়ে ব্যাখ্যা দেখুন; অধ্যায়ের কুইজ আলাদাভাবে দিতে হবে।

এই পাঠের ২টি প্রশ্নের উত্তর দিন। পাস করতে দুটিই সঠিক হতে হবে।

জমা দেওয়ার পর সঠিক উত্তর ও ব্যাখ্যা দেখবেন। ফলাফল এই ব্রাউজারে সংরক্ষিত থাকবে। অনুশীলনের ফল অধ্যায় সম্পন্নের হিসাবে যোগ হয় না।

সব বিষয় মিলিয়ে অনুশীলন করুন →

অগ্রগতি এই ব্রাউজারে সংরক্ষিত থাকে। শুধু পাঠ খুললে সম্পন্ন হয় না।