সরাসরি পর্বে যান
পর্ব ০৭ · ৮১-এর মধ্যে · মডিউল ১

DevOps আর SRE — culture, CALMS, three ways আর দলের গঠন

DevOps and SRE — Culture, CALMS, the Three Ways and Team Design

Taught in Bangla, this lesson explains why the wall between Dev and Ops forms, measures lead time as work plus queue, and applies CALMS and the three ways. It covers SRE error budgets, toil and the 50% limit, how DevOps, SRE and platform teams differ, Team Topologies, Conway's law, blameless postmortems and a simple maturity view, with simulators for lead time and error budgets.

এই পর্বে যা শিখবেন

  • Dev আর Ops-এর দেয়াল কেন তৈরি হয়, আর DevOps আন্দোলনের সংক্ষিপ্ত ইতিহাস
  • হাতবদল আর সারি দিয়ে lead time-এর হিসাব, CALMS আর three ways-এর ব্যবহার
  • SRE-র error budget, toil আর ৫০% সীমা, সাথে toil কমানোর সিদ্ধান্তের হিসাব
  • DevOps, SRE আর platform team-এর পার্থক্য, Team Topologies আর Conway's law
  • Blameless postmortem, একটি সরল maturity view আর AI-এর পরামর্শ যাচাই

১ · দেয়ালের দুই পাশ — Dev বনাম Ops

এতক্ষণ আপনি cloud-এর যন্ত্র দেখেছেন: service model, region, CLI. এই পর্বে যন্ত্র নয়, মানুষ। কারণ cloud শুধু server ভাড়া দেয়; সেই server-এ কে কোড পাঠাবেন, রাতে সমস্যা হলে কে উঠবেন, ভুল হলে কী ঘটবে, তা ঠিক করে দল আর সংস্কৃতি।

Software Engineering ও Git কোর্সের Continuous delivery আর DevOps পর্বে deployment pipeline আর চারটি DORA metric পড়ানো হয়েছে; এক লাইনে, pipeline হলো পরিবর্তন যাচাইয়ের স্বয়ংক্রিয় পথ, আর DORA metric delivery-র গতি আর স্থিতি মাপে। এখানে আমাদের প্রশ্ন আলাদা: কোন দল কী করবে, কাজ কীভাবে হাতবদল হবে, আর operating model (দল চালানোর নকশা) কেমন হবে।

একটি রেস্তোরাঁ ভাবুন। বাবুর্চির সুনাম হয় নতুন পদ দিয়ে। ওয়েটারের দায় হলো ক্রেতা যেন অভিযোগ না করেন। বাবুর্চি নতুন ঝাল পদ বানিয়ে জানালা দিয়ে ঠেলে দিলেন; পদটি কত ঝাল, ওয়েটার জানেন না। ক্রেতা রেগে গেলে বকা খান ওয়েটার। পরদিন ওয়েটার বলেন, “নতুন পদ চাই না।” দুজনই নিজের দিক থেকে ঠিক, কিন্তু রেস্তোরাঁ ক্ষতিগ্রস্ত।

Software প্রতিষ্ঠানে একই ঘটনা। Development (Dev) দলের সাফল্য মাপা হয় নতুন feature দিয়ে। Operations (Ops) দলের সাফল্য মাপা হয় system চালু থাকা দিয়ে, আর পরিবর্তনই ঝুঁকির বড় উৎস। তাই Ops পরিবর্তন আটকাতে চান, Dev ঠেলতে চান। প্রতিটি দল আলাদা একটি silo (নিজের গণ্ডিতে আটকে থাকা দল) হয়ে যায়। এই পরিস্থিতিকেই প্রচলিত ভাষায় “wall of confusion” বলা হয়।

Dev আর Ops-এর দেয়াল

Opposite goals, a wall between them, and a user who needs both

Dev আর Ops-এর মাঝের দেয়াল আর ব্যবহারকারীর চাহিদা Dev দল Ops দল লক্ষ্য: নতুন feature দ্রুত পরিবর্তন মাপ: কতটি প্রকাশ লক্ষ্য: স্থিতি কম পরিবর্তন মাপ: কত সময় চালু কোড ছুড়ে দেওয়া ticket আর দোষ ব্যবহারকারী চান নতুন সুবিধা আর স্থিতি, দুটোই
ছবি ৭.১ — দুই দলের লক্ষ্য উল্টো হলে দেয়াল আপনা-আপনি ওঠে। ব্যবহারকারী দুটোই চান, তাই সমাধান হলো একটি যৌথ লক্ষ্য, কোনো এক দলের জয় নয়।

একটু ইতিহাস। প্রচলিত বর্ণনা অনুযায়ী, বেলজিয়ামের পরামর্শক Patrick Debois একটি data center migration প্রকল্পে Dev আর Ops-এর এই বিভাজনে হতাশ হন। ২০০৮ সালে Toronto-র একটি Agile সম্মেলনে Andrew Shafer-এর সাথে “agile infrastructure” নিয়ে তাঁর আলাপ হয়। ২০০৯ সালের Velocity সম্মেলনে Flickr-এর John Allspaw আর Paul Hammond “10+ Deploys Per Day: Dev and Ops Cooperation at Flickr” বক্তৃতা দেন। সেই বক্তৃতা দেখে অনুপ্রাণিত হয়ে Debois ২০০৯ সালের শেষ দিকে Ghent-এ প্রথম DevOpsDays আয়োজন করেন, আর Twitter-এ ছোট hashtag হিসেবে “DevOps” শব্দটি ছড়ায়। সূত্রভেদে খুঁটিনাটি একটু আলাদা।

মূল ধারণা

DevOps-এর কোনো আনুষ্ঠানিক মান বা একক সংজ্ঞা নেই। এই কোর্সে কাজের সংজ্ঞাটি হলো: যে দল software বানায় আর যে দল চালায়, তাদের লক্ষ্য, তথ্য আর দায় এক করা, যাতে পরিবর্তন দ্রুত আর নিরাপদে ব্যবহারকারীর কাছে পৌঁছায়। কেউ একে সংস্কৃতি বলেন, কেউ চর্চার সমষ্টি, কেউ operating model. তিনটিই একই জিনিসের ভিন্ন দিক।

২ · হাতবদল আর অপেক্ষা — lead time হলো কাজ + সারি

দেয়ালের দামটি কোথায় দেওয়া হয়? সময়ে। Lead time মানে একটি পরিবর্তনের কাজ শেষ হওয়া থেকে ব্যবহারকারীর হাতে পৌঁছানো পর্যন্ত সময়। (কেউ কেউ কাজ শুরুর মুহূর্ত থেকে গোনেন; সংজ্ঞা লিখে রাখা জরুরি।) সরকারি অফিসের ফাইলের কথা ভাবুন। একটি সই করতে লাগে দুই মিনিট, অথচ ফাইল ঘোরে তিন সপ্তাহ, কারণ প্রতিটি টেবিলে সেটি স্তূপের নিচে অপেক্ষা করে। Software-এও প্রতিটি handoff (এক দল থেকে আরেক দলে কাজ যাওয়া) মানে আরেকটি সারি।

নিচের stepper-এ একটি কাল্পনিক অনলাইন বাজার অ্যাপের ছোট পরিবর্তন দেখুন, যা আগে আলাদা চারটি দল ঘুরে যায়, তারপর একটিমাত্র দলে। সব সংখ্যা উদাহরণের জন্য ধরা, হিসাব পরের simulator-এর মতোই।

  1. Devকোড শেষ
  2. Reviewঅন্য দল
  3. QA৯০% ব্যস্ত
  4. Security৮৫% ব্যস্ত
  5. Ops ticket৯৫% ব্যস্ত
পরিবর্তনটির হিসাব (ঘণ্টা)
পথ
অন্য দলে হাতবদল
কাজ
অপেক্ষা
মোট ঘড়ি
  1. শুরু। ডেভেলপারের কোড লেখা শেষ, ঘড়ি চালু। ব্যবহারকারী এখনো কিছু পাননি, আর সব হিসাব শূন্য।
  2. Review. অন্য দলের একজন ৮ ঘণ্টা পরে সময় পান, কাজে লাগে ২ ঘণ্টা। মোট ১০ ঘণ্টা।
  3. QA. QA দল ৯০% ব্যস্ত, তাই ৩৬ ঘণ্টা সারি, তারপর ৪ ঘণ্টা কাজ। অপেক্ষা এখন ৪৪, মোট ৫০ ঘণ্টা।
  4. Security. সারি প্রায় ১১.৩ ঘণ্টা, কাজ ২ ঘণ্টা। মোট ৬৩.৩ ঘণ্টা, অথচ আসল কাজ মাত্র ৮ ঘণ্টা।
  5. Ops ticket. Deploy-এ কাজ ১ ঘণ্টা, কিন্তু ৯৫% ব্যস্ত দলে সারি ১৯ ঘণ্টা। শেষে ৮৩.৩ ঘণ্টা, যার ৭৪.৩ ঘণ্টাই অপেক্ষা (প্রায় ৮৯%). এখানেই আলাদা দলের পথ শেষ।
  6. এবার এক দল: review. ঘড়ি আবার শূন্য থেকে। একই দলের সহকর্মী ১.৫ ঘণ্টা পরে ১ ঘণ্টা review করেন। মোট ২.৫ ঘণ্টা।
  7. স্বয়ংক্রিয় pipeline. Test আর নিরাপত্তা scan pipeline-এ চলে: অপেক্ষা ০.৫, কাজ ০.৫ ঘণ্টা। মোট ৩.৫ ঘণ্টা। QA আর Security-র জ্ঞান এখন pipeline-এ বসানো, মানুষের সারিতে নয়।
  8. নিজে deploy. দল নিজেই বোতাম চাপে, মোট কাজ ১.৭ ঘণ্টা আর অপেক্ষা ২.১ ঘণ্টা, অর্থাৎ ৩.৮ ঘণ্টা। আগের চেয়ে প্রায় ২২ গুণ কম। মনে রাখুন, এই pipeline বানাতেও আগে শ্রম লেগেছে।

কেন ব্যস্ত দলে সারি এত লম্বা হয়? The Phoenix Project বইয়ে একটি সহজ নিয়ম আছে: অপেক্ষা ব্যস্ততার হারের সাথে বাড়ে, আর খালি থাকার হারের সাথে কমে। সারি-তত্ত্বের (queueing theory) সরল একটি মডেলে, এলোমেলোভাবে কাজ আসা একজন কর্মীর জন্য:

গড় অপেক্ষা ≈ কাজের সময় × ব্যস্ততা ÷ (১ − ব্যস্ততা)
৪ ঘণ্টার কাজ, ৯০% ব্যস্ত → ৪ × ০.৯ ÷ ০.১ = ৩৬ ঘণ্টা

এই সূত্র মোটা হিসাব, নির্ভুল পূর্বাভাস নয়। তবু আকারটি সত্য: ব্যস্ততা ১০০%-এর কাছে গেলে অপেক্ষা হঠাৎ লাফিয়ে বাড়ে। Flow efficiency মানে মোট সময়ের কত ভাগ আসল কাজ। নিচের simulator-এ সংখ্যা বদলে নিজে দেখুন।

// Lead time = work + queues. Change the numbers and press Run again.
// Rough queue model: wait = work * busy / (1 - busy), 8-hour working day.
const silos = [
  { step: "Code review",  work: 2, busy: 0.80 },
  { step: "QA team",      work: 4, busy: 0.90 },
  { step: "Security",     work: 2, busy: 0.85 },
  { step: "Ops ticket",   work: 1, busy: 0.95 },
];
const oneTeam = [
  { step: "Peer review",  work: 1.0, busy: 0.60 },
  { step: "Auto pipeline", work: 0.5, busy: 0.50 },
  { step: "Self deploy",  work: 0.2, busy: 0.30 },
];
function report(title, steps) {
  let work = 0, wait = 0;
  console.log("--- " + title + " ---");
  console.log("step           work  busy    wait");
  for (const s of steps) {
    const q = s.work * s.busy / (1 - s.busy);
    work += s.work; wait += q;
    console.log(s.step.padEnd(14) + s.work.toFixed(1).padStart(4) +
      (Math.round(s.busy * 100) + "%").padStart(6) + q.toFixed(1).padStart(8));
  }
  const lead = work + wait;
  console.log(`lead ${lead.toFixed(1)} h = ${(lead / 8).toFixed(1)} days, ` +
    `flow efficiency ${(100 * work / lead).toFixed(0)}%`);
}
report("Separate silos", silos);
report("One product team", oneTeam);
console.log("--- QA queue alone (4 h of work) ---");
for (const b of [0.5, 0.7, 0.8, 0.9, 0.95, 0.98]) {
  const q = 4 * b / (1 - b);
  console.log(`busy ${Math.round(b * 100)}% -> wait ${q.toFixed(0)} h`);
}

আলাদা দলের পথে আউটপুট বলে lead 83.3 h = 10.4 days, flow efficiency 11%; এক দলের পথে lead 3.8 h = 0.5 days, flow efficiency 45%. শেষ অংশটি সবচেয়ে শিক্ষণীয়: একই ৪ ঘণ্টার কাজে busy 50% -> wait 4 h, busy 90% -> wait 36 h, আর busy 98% -> wait 196 h. তাই “সবাইকে সারাক্ষণ ব্যস্ত রাখা” দক্ষতা নয়; এটি সারি বানানোর উপায়। ইচ্ছা করে কিছু ফাঁকা সময় রাখলে পরিবর্তন দ্রুত এগোয়।

৩ · CALMS আর three ways — প্রতিষ্ঠানকে পড়ার দুটি চশমা

“আমরা DevOps করি” কথাটি যাচাই করবেন কীভাবে? দুটি প্রচলিত কাঠামো কাজে লাগে। CALMS হলো পাঁচটি দিকের একটি তালিকা। প্রচলিত বর্ণনায় John Willis আর Damon Edwards ২০১০-এর দিকে CAMS বলেন, পরে Jez Humble Lean-এর L যোগ করেন। সূত্রভেদে কৃতিত্বের বর্ণনা একটু আলাদা।

দিকসুস্থ লক্ষণভুয়া লক্ষণ
CultureDev আর Ops একই alert আর একই লক্ষ্য ভাগ করেনদেয়ালে পোস্টার, কিন্তু ভুল হলে দোষী খোঁজা
Automationবারবারের কাজ পুনরুৎপাদনযোগ্য পথে চলেনতুন tool কেনা, প্রক্রিয়া আগের মতোই
Leanছোট batch, কম WIP, সারি চোখে দেখাসবাই ১০০% ব্যস্ত, কাজ শেষ হয় না
Measurementদল নিজের উন্নতির জন্য মাপেসংখ্যা দিয়ে দলকে র‍্যাংক করা
Sharingখোলা postmortem, একই runbookজ্ঞান একজনের মাথায় আটকে থাকা

দ্বিতীয় চশমাটি three ways (তিন পথ)। Gene Kim ২০১২-র দিকে এটি লেখেন, আর Kim, Kevin Behr ও George Spafford-এর উপন্যাস The Phoenix Project (২০১৩) ও Kim, Humble, Debois ও Willis-এর The DevOps Handbook (২০১৬) একে ছড়িয়ে দেয়।

Three ways — তিন পথ

Flow left to right, feedback right to left, and a loop of learning

Three ways: flow, feedback আর ধারাবাহিক শেখা Dev Ops ব্যবহারকারী ১ · Flow: কাজ দ্রুত এগোয় ২ · Feedback: খবর ফেরে ৩ · শেখা আর পরীক্ষা, প্রতিদিন
ছবি ৭.২ — প্রথম পথ সারি কমায়, দ্বিতীয় পথ ভুল দ্রুত ধরে, তৃতীয় পথ প্রতিটি ভুলকে স্থায়ী উন্নতিতে বদলায়।

এখানে প্রশ্নটি ব্যবস্থাপনার। প্রথম পথে জিজ্ঞেস করুন: কাজ কোথায় আটকে থাকে? দ্বিতীয় পথে: production-এর সমস্যা ডেভেলপার কত দ্রুত জানেন? তৃতীয় পথে: উন্নতির জন্য কি নির্দিষ্ট সময় রাখা আছে, নাকি শুধু “সময় পেলে”? উত্তরগুলো tool নয়, সিদ্ধান্ত।

৪ · SRE — error budget দিয়ে গতি আর স্থিতির ভারসাম্য

DevOps বলে দেয়াল ভাঙুন, কিন্তু ঠিক কীভাবে, তা বলে না। SRE (Site Reliability Engineering) তার একটি নির্দিষ্ট উত্তর। Ben Treynor (পরে Ben Treynor Sloss) ২০০৩ সালে Google-এ এর শুরু করেন বলে প্রচলিত, আর তাঁর বিখ্যাত বর্ণনা: একজন software engineer-কে একটি operations দল নকশা করতে বললে যা হয়, SRE তাই। Google-এর বই Site Reliability Engineering (২০১৬, সম্পাদনা Betsy Beyer ও সহকর্মীরা) ধারণাগুলো প্রকাশ্যে আনে। নিচের নিয়মগুলো Google-এর নিজের বর্ণনা; সব প্রতিষ্ঠানে হুবহু খাটে না।

প্রথম ধাপে দল ঠিক করে “যথেষ্ট ভালো” কত। সেটি হলো SLO (service level objective), যেমন মাসে ৯৯.৯% সময় ঠিক সাড়া। ১০০% লক্ষ্য নয়, কারণ ব্যবহারকারীর ফোন আর network-ই ততটা ভালো নয়, আর শেষ কয়েকটি ৯ খুব দামি। বাকি অংশটিই error budget, অর্থাৎ ভুলের অনুমোদিত পরিমাণ।

Error budget = ১ − SLO
৯৯.৯%, ৩০ দিন: ০.০০১ × ৪৩,২০০ মিনিট = ৪৩.২ মিনিট

মাসের হাতখরচের মতো ভাবুন। টাকা থাকলে নতুন কিছু কেনেন; ফুরিয়ে গেলে মাসের বাকিটা সাবধানে চলেন। Error budget থাকলে দল নতুন feature-এর ঝুঁকি নেয়। ফুরিয়ে গেলে স্থিতির কাজ আগে। তর্কটি আর “Dev বনাম Ops” থাকে না; দুই পক্ষ একই সংখ্যা দেখে।

সূত্রটি শুধু হিসাব নয়, একটি চুক্তি। Google-এর The Site Reliability Workbook (২০১৮) একটি উদাহরণ নীতিতে বলে, budget শেষ হলে গুরুতর সমস্যা আর নিরাপত্তা সংশোধন ছাড়া পরিবর্তন থামবে। নিচের simulator-এ একটি কাল্পনিক দলের সরল নীতি চলছে। এই সীমাগুলো কোনো মান নয়, উদাহরণ।

// Error budget: release or hold? SLO 99.9% over a 30-day window.
const SLO = 0.999, WINDOW_MIN = 30 * 24 * 60;
const BUDGET = (1 - SLO) * WINDOW_MIN;         // allowed bad minutes
// Toy policy for this fictional team, not a standard:
// used under 50% normal; 50-100% only low-risk; 100%+ reliability fixes only.
const log = [                                  // day, what happened
  { day: 3,  bad: 6,  ask: "new search page", risk: "high", cost: 8 },
  { day: 9,  bad: 12, ask: "new cart page",   risk: "high", cost: 8 },
  { day: 14, bad: 5,  ask: "text fix",        risk: "low",  cost: 1 },
  { day: 18, bad: 9,  ask: "payment rewrite", risk: "high", cost: 8 },
  { day: 22, bad: 14, ask: "text fix",        risk: "low",  cost: 1 },
  { day: 25, bad: 3,  ask: "db timeout fix",  risk: "fix",  cost: 1 },
];
let used = 0;
console.log(`budget = ${BUDGET.toFixed(1)} bad minutes in 30 days`);
console.log("day  used   used%  pace%  request            decision");
for (const e of log) {
  used += e.bad;
  const pct = 100 * used / BUDGET, pace = 100 * e.day / 30;
  const left = BUDGET - used;
  let verdict;
  if (e.risk === "fix") verdict = "RELEASE (reliability fix)";
  else if (pct >= 100) verdict = "HOLD (budget gone)";
  else if (pct >= 50 && e.risk === "high") verdict = "HOLD (only low risk now)";
  else if (e.cost > left) verdict = "HOLD (could burn the rest)";
  else verdict = "RELEASE";
  console.log(String(e.day).padStart(3) + String(used).padStart(6) +
    pct.toFixed(0).padStart(7) + pace.toFixed(0).padStart(7) + "  " +
    e.ask.padEnd(17) + "  " + verdict);
}
const bad10M = (1 - SLO) * 10_000_000;
console.log(`same SLO by requests: ${bad10M.toFixed(0)} failures allowed per 10M`);

আউটপুটের প্রথম লাইন budget = 43.2 bad minutes in 30 days. ১৮ দিনে ৩২ মিনিট গেছে, অর্থাৎ used% ৭৪, অথচ সময় গেছে ৬০% (pace%); তাই বড় payment কাজটি HOLD (only low risk now). ২২ দিনে ৪৬ মিনিট, ১০৬%, তাই ছোট লেখার সংশোধনও HOLD (budget gone). কিন্তু ২৫ দিনে db timeout fix যায়, কারণ এটি স্থিতি বাড়ায়। শেষ লাইনে একই SLO অনুরোধের হিসাবে: ১ কোটিতে 10000টি ব্যর্থতা। বাস্তবে window সাধারণত rolling হয়, তাই পুরোনো খারাপ মিনিট বেরিয়ে গেলে budget ফেরে। Burn rate alert আসবে পর্ব ৬৬-এ, আর SLO-র তত্ত্ব System Design-এর Observability পর্বে।

৫০% সীমা আর “class SRE implements DevOps”

SRE বইয়ের আরেকটি পরিচিত নিয়ম: Google তার SRE-দের সামগ্রিক ops কাজে (ticket, on-call, হাতের কাজ) ৫০% সীমা রাখে, যাতে বাকি সময় প্রকৌশলে যায়। বই অনুযায়ী এই সীমা বারবার ভাঙলে বাড়তি ops কাজ ফেরত যায় ডেভেলপার দলের কাছে, যাতে তাঁরাও নিজের কোডের ঝামেলা টের পান। ৫০% সংখ্যাটি Google-এর নিয়ম, প্রকৃতির সূত্র নয়, তবে “সীমা থাকতে হবে” ভাবনাটি সব জায়গায় খাটে।

২০১৮ সালের দিকে Google-এর Seth Vargo আর Liz Fong-Jones একটি কথা জনপ্রিয় করেন: class SRE implements DevOps. প্রোগ্রামিংয়ের ভাষায়, DevOps যেন একটি interface (কী করতে হবে তার তালিকা), আর SRE তার একটি নির্দিষ্ট implementation. কথাটি Google-এর দৃষ্টিভঙ্গি; সবাই এই সম্পর্কটি এভাবে দেখেন না, আর SRE-র কিছু চর্চা DevOps শব্দটির আগেই শুরু হয়েছিল।

৫ · Toil — মাপা, বাজেট রাখা আর কমানো

বাড়ির ছাদের ট্যাংক ভাবুন। প্রতিদিন কেউ নিচে গিয়ে মোটর চালান, ত্রিশ মিনিট পরে বন্ধ করেন। কাজটি কঠিন নয়, কিন্তু কখনো শেষ হয় না, আর পরিবার বড় হলে বাড়ে। একবার অটো সুইচ বসালে কাজটিই নেই। Toil হলো এই মোটর চালানো।

SRE বইয়ে toil-এর ছয়টি লক্ষণ আছে: হাতে করতে হয় (manual), বারবার ফেরে (repetitive), যন্ত্র করতে পারত (automatable), শুধু তাৎক্ষণিক আগুন নেভায় (tactical), স্থায়ী কোনো উন্নতি রেখে যায় না (no enduring value), আর service বড় হলে সমানুপাতে বাড়ে (scales with growth). সব বিরক্তিকর কাজ toil নয়: সভা বা ফাইলপত্র হলো overhead, আর নকশা বা postmortem লেখা প্রকৌশল।

মাপার উপায় সহজ। ভেতরের ticket আর on-call log-এ একটি tag দিন, আর প্রতি তিন মাসে দলের কাছে সংক্ষিপ্ত হিসাব নিন। একটি toil খাতা রাখুন: কাজের নাম, কী কারণে শুরু হয়, কতবার, প্রতিবার কত মিনিট। Google-এর SRE বইয়েও নিয়মিত জরিপে toil মাপার কথা আছে। সূত্র একটিই: toil% = toil-এর ঘণ্টা ÷ দলের মোট ঘণ্টা। যেমন ৪ জন × ১২ সপ্তাহ × ৪০ ঘণ্টা = ১,৯২০ ঘণ্টা, এর মধ্যে ৮০০ ঘণ্টা toil হলে প্রায় ৪১.৭%.

খাতায় দুটি কাজ উঠল। কোনটি আগে automate করবেন? হিসাব ছাড়া সিদ্ধান্ত নিলে প্রায়ই মজার কাজটি জেতে, দামি কাজটি নয়।

  1. খাতাকতবার, কত সময়
  2. যাচাইtoil কি না
  3. হিসাবখরচ আর ফেরত
  4. সিদ্ধান্তকারণ দূর করা
দুটি কাজ, পাশাপাশি
A · worker চালু
B · TLS কনফিগ
  1. খাতা থেকে দুটি কাজ। A: queue worker আটকে গেলে হাতে চালু করা, সপ্তাহে ৬ বার, প্রতিবার ২৫ মিনিট। B: একটি পুরোনো TLS কনফিগ হালনাগাদ, বছরে ২ বার, প্রতিবার ৩ ঘণ্টা।
  2. এটি কি toil? A ছয়টি লক্ষণেই মেলে, ট্রাফিক বাড়লে আরও বাড়বে। B হাতের কাজ আর যন্ত্র করতে পারত, কিন্তু খুব কম ফেরে আর service বড় হলে বাড়ে না; ধরে নিলাম ৪টি লক্ষণ মেলে।
  3. বছরে কত ঘণ্টা? A: ৬ × ২৫ মিনিট = সপ্তাহে ২.৫ ঘণ্টা, ৫২ সপ্তাহে ১৩০ ঘণ্টা। B: ২ × ৩ = ৬ ঘণ্টা। A প্রায় ২২ গুণ বড়।
  4. Automation-এর দাম। শুধু বানানোর খরচ নয়, রক্ষণাবেক্ষণও ধরুন। A: বানাতে ৪০ ঘণ্টা, বছরে ১২ ঘণ্টা দেখাশোনা। B: বানাতে ৪০ ঘণ্টা, বছরে ২ ঘণ্টা।
  5. কবে টাকা উঠবে? A-তে সপ্তাহে নিট সাশ্রয় ২.৫ − ১২÷৫২ ≈ ২.২৭ ঘণ্টা, তাই ৪০ ÷ ২.২৭ ≈ ১৭.৬ সপ্তাহ। প্রথম বছরের নিট লাভ ১৩০ − ৪০ − ১২ = ৭৮ ঘণ্টা। B-তে বছরে নিট (৬ − ২) = ৪ ঘণ্টা, তাই ৪০ ÷ ৪ = ১০ বছর।
  6. সিদ্ধান্ত। A-র জন্য আগে জিজ্ঞেস করুন, worker আটকায় কেন। হয়তো একটি timeout নেই। কারণ দূর হলে স্বয়ংক্রিয় restart-এর দরকারই কমে। B-র জন্য ভালো একটি runbook যথেষ্ট, যাতে ধাপগুলো মাথায় না থেকে লেখা থাকে।
  7. আবার মাপুন। ১২ সপ্তাহ পরে খাতা খুলুন। A-র ঘণ্টা কি সত্যিই কমেছে, নাকি শুধু সরে গেছে? না মাপলে “automate করেছি” একটি অনুভূতি মাত্র।

একটি কাজের হিসাব তো হলো; পুরো দলের কয়েক ত্রৈমাসিকে কী হয়? ধরুন ৪ জনের দল, toil শুরুতে ৮০০ ঘণ্টা, আর ট্রাফিকের সাথে প্রতি তিন মাসে ১০% বাড়ে। দল প্রথম তিন ত্রৈমাসিকে তিনটি automation কাজ করে; প্রতিটির একটি বানানোর খরচ আর রক্ষণাবেক্ষণের খরচ আছে।

// Toil budget: 4 engineers, 8 quarters. Does automation pay back?
const CAPACITY = 4 * 12 * 40;     // 4 people x 12 weeks x 40 h = hours a quarter
const TOIL_START = 800;           // manual hours in quarter 1
const GROWTH = 1.10;              // toil grows 10% a quarter with traffic
const UPKEEP = 0.05;              // upkeep per quarter, as a share of build cost
const projects = [                // built in quarter q, works from q + 1
  { q: 1, cost: 300, cut: 0.30 },
  { q: 2, cost: 240, cut: 0.25 },
  { q: 3, cost: 200, cut: 0.20 },
];
function simulate(plan) {
  const rows = [];
  let left = 1, sunk = 0;         // share of toil still manual, total built
  for (let q = 1; q <= 8; q++) {
    const toil = TOIL_START * GROWTH ** (q - 1) * left;
    const build = plan.filter(p => p.q === q).reduce((a, p) => a + p.cost, 0);
    const upkeep = sunk * UPKEEP;
    const free = Math.max(0, CAPACITY - toil - build - upkeep);
    rows.push({ q, toil, free });
    sunk += build;
    for (const p of plan) if (p.q === q) left *= 1 - p.cut;
  }
  return rows;
}
const none = simulate([]), auto = simulate(projects);
let gain = 0, payback = null;
console.log("Q   toil% none   toil% auto   free none   free auto   total gain");
for (let i = 0; i < 8; i++) {
  gain += auto[i].free - none[i].free;
  if (payback === null && gain >= 0) payback = i + 1;
  const pc = r => (100 * r.toil / CAPACITY).toFixed(0).padStart(9) + "%";
  console.log(String(i + 1) + pc(none[i]) + "   " + pc(auto[i]) +
    none[i].free.toFixed(0).padStart(12) + auto[i].free.toFixed(0).padStart(12) + gain.toFixed(0).padStart(13));
}
console.log("Automation has paid for itself by quarter " + payback);

Automation ছাড়া toil ৪২% থেকে শুরু করে ৩ নম্বর ত্রৈমাসিকে ৫০% ছুঁয়ে শেষে ৮১%-এ যায়; হাতে থাকে মাত্র ৩৬১ ঘণ্টা। Automation থাকলে প্রথম ত্রৈমাসিকে হাতের সময় কমে (১,১২০-এর বদলে ৮২০ ঘণ্টা), মোট লাভ -300. এই বিনিয়োগের ধাপটিই ব্যবস্থাপকদের কঠিন লাগে। কিন্তু শেষ লাইন বলে Automation has paid for itself by quarter 4, আর ৮ নম্বরে মোট লাভ 3527 ঘণ্টা। লক্ষ্য করুন, ৪ নম্বরের পরে automation থাকলেও toil% আবার বাড়ে (২৩ থেকে ৩৪), কারণ ট্রাফিক থামেনি। Toil কমানো একবারের কাজ নয়। GROWTH-কে 1.25 করে দেখুন কী হয়। পরে পর্ব ১০-এ নিরাপদ Bash automation আর পর্ব ৫১-এ Infrastructure as Code পাবেন, যা এই বিনিয়োগের হাতিয়ার।

৬ · DevOps, SRE আর platform team — কে কী করে

তিনটি শব্দ প্রায়ই গুলিয়ে যায়। সংজ্ঞা প্রতিষ্ঠানভেদে আলাদা, চাকরির বিজ্ঞপ্তিতে তো আরও। তবু একটি কাজ চালানোর মতো তুলনা:

বিষয়DevOpsSREPlatform team
এটি কীসংস্কৃতি আর চর্চার আন্দোলনreliability-র প্রকৌশল শাখা, প্রায়ই আলাদা ভূমিকাএকটি দলের ধরন
মূল প্রশ্নDev আর Ops কীভাবে এক হবে?কতটা নির্ভরযোগ্য হওয়া যথেষ্ট?অন্য দলকে কীভাবে নিজে চলতে দেব?
মূল মাপDORA metricSLO, error budget, toil%ব্যবহারকারী দলের গ্রহণ আর সন্তুষ্টি
গ্রাহকশেষ ব্যবহারকারীব্যবহারকারী আর service-এর দলভেতরের product দল
ঝুঁকিশুধু স্লোগান হয়ে যাওয়া“reliability দল” নামে নতুন Opsকেউ না চাইলেও platform বানানো

Platform team pipeline, cluster আর monitoring-কে একটি ভেতরের পণ্যের মতো বানায়, যাতে product দল ticket না খুলে নিজেই কাজটি করতে পারে। বিস্তারিত পর্ব ৬২-তে।

“You build it, you run it” — আর তার দাম

২০০৬ সালে ACM Queue-এর একটি সাক্ষাৎকারে Amazon-এর CTO Werner Vogels এই কথাটি বলেছিলেন বলে বহুল-উদ্ধৃত: you build it, you run it. যে দল service বানায়, সেই দলই production-এ চালায় আর alert পায়। রাত ৩টায় নিজের ফোন বাজলে ডেভেলপার হঠাৎ log আর timeout নিয়ে যত্নবান হন। এটিই সবচেয়ে সরাসরি feedback.

দামও আছে। On-call ক্লান্তি আনে, প্রত্যেকের ওপর বাড়তি জ্ঞানের বোঝা পড়ে, আর ৩ জনের দলে সাপ্তাহিক পালা মানে প্রতি তৃতীয় সপ্তাহে ঘুম নষ্ট। ছোট দলে তাই on-call-এর সময়, ক্ষতিপূরণ আর alert-এর মান নিয়ে নিয়ম লাগে। বিস্তারিত পর্ব ৬৬ আর ৬৭-তে।

“DevOps engineer” পদ নিয়ে সমালোচনা। DevOps একটি সম্পর্কের নাম ছিল, পদের নয়। Dev আর Ops-এর মাঝে “DevOps দল” বসালে দেয়াল দুটি হয়, আর ডেভেলপার আগের মতোই production থেকে দূরে থাকেন। Matthew Skelton-এর “DevOps Topologies” লেখায় এমন নকশাকে anti-pattern বলা হয়েছে। তবু বাজারে পদটি আছে, আর সাধারণত এর মানে হলো pipeline, cloud আর automation-এর প্রকৌশলী। চাকরি খোঁজার সময় শিরোনাম নয়, কাজ পড়ুন: আপনি কি অন্য দলকে সক্ষম করবেন, নাকি তাদের ticket সারবেন?

৭ · Team Topologies আর Conway's law — দলের নকশাই system-এর নকশা

১৯৬৮ সালে Melvin Conway Datamation পত্রিকায় “How Do Committees Invent?” প্রবন্ধে একটি পর্যবেক্ষণ লেখেন, যা পরে Fred Brooks-এর The Mythical Man-Month বইয়ের মাধ্যমে Conway's law নামে ছড়ায়: যে প্রতিষ্ঠান একটি system নকশা করে, সেই নকশা হয় প্রতিষ্ঠানের যোগাযোগের কাঠামোর নকল। একটি পরিচিত রসিকতা আছে: চারটি দল মিলে compiler বানালে চার ধাপের compiler পাবেন। Frontend, backend আর database দল আলাদা থাকলে ছোট একটি feature-ও তিন দলের সারি পার হয়।

এর উল্টো প্রয়োগকে বলে inverse Conway maneuver: যে system চান, আগে সেই আকারে দল সাজান। Matthew Skelton আর Manuel Pais-এর বই Team Topologies (২০১৯) এই ভাবনাকে একটি ব্যবহারিক কাঠামো দেয়। মূল শব্দ cognitive load: একটি দল একসাথে কতটা মাথায় রাখতে পারে। দলের দায়িত্ব সেই সীমার মধ্যে রাখতে হবে। বইটি চার ধরনের দল বলে:

লঞ্চঘাটের কথা ভাবুন। প্রতিটি লঞ্চের ক্রু যাত্রীকে গন্তব্যে নেন (stream-aligned). ঘাট কর্তৃপক্ষ পন্টুন আর টিকিট ব্যবস্থা দেন, যাতে প্রতিটি লঞ্চকে নিজের ঘাট বানাতে না হয় (platform). একজন প্রশিক্ষক কিছুদিন ক্রুদের নতুন নিরাপত্তা নিয়ম শেখান, তারপর চলে যান (enabling). আর ইঞ্জিনের জটিল মেরামত করেন বিশেষজ্ঞ মিস্ত্রি (complicated-subsystem).

Team Topologies-এর চার ধরনের দল

Stream-aligned teams carry the flow; the others reduce their load

Stream-aligned, enabling, complicated-subsystem আর platform দল Stream-aligned দল · flow ব্যবহারকারীর দিকে কেনাকাটা ডেলিভারি বিক্রেতা অ্যাপ Enabling দল facilitating Complicated- subsystem দল Platform দল pipeline, cluster, monitoring: স্ব-সেবা X-as-a-Service
ছবি ৭.৩ — Stream-aligned দলই মূল কাজ বহন করে। বাকি তিন ধরনের দলের কাজ তাদের বোঝা কমানো। উদাহরণের দলগুলো কাল্পনিক।

Stream-aligned

একটি ব্যবহারকারী-মুখী কাজের ধারা শুরু থেকে শেষ পর্যন্ত সামলায়। বেশিরভাগ দল এই ধরনের হওয়ার কথা।

Platform

ভেতরের সেবা পণ্যের মতো দেয়। মাপ হলো অন্য দল স্বেচ্ছায় ব্যবহার করে কি না।

Enabling

নির্দিষ্ট দক্ষতা অন্য দলে পৌঁছে দিয়ে সরে যায়। স্থায়ী হাতবদলের জায়গা নয়।

Complicated-subsystem

গভীর বিশেষজ্ঞ জ্ঞানের একটি অংশ সামলায়, যেমন ভিডিও codec বা জটিল গণিতের engine.

বইটি তিন ধরনের মিথস্ক্রিয়াও বলে: collaboration (কিছুদিন একসাথে কাজ), X-as-a-Service (একটি পরিষ্কার সেবা ব্যবহার) আর facilitating (শিখিয়ে সরে যাওয়া)। দল গঠনের বিস্তারিত আছে Software Engineering কোর্সের দলগত কাজ পর্বে। এই পর্বে মূল কথাটি হলো: দল ভাগ করার সিদ্ধান্ত একটি architecture-এর সিদ্ধান্ত।

৮ · Blameless culture — দোষী নয়, কারণ খোঁজা

তৃতীয় পথের প্রাণ হলো ব্যর্থতা থেকে শেখা। আর মানুষ তখনই সত্য বলেন, যখন সত্য বললে শাস্তি হয় না। John Allspaw ২০১২ সালে Etsy-র একটি লেখায় postmortem-কে “blameless” করার যুক্তি দেন, Sidney Dekker-এর “just culture” ভাবনার ওপর দাঁড়িয়ে। Blameless culture মানে দায়হীনতা নয়। দল দায় নেয়, কিন্তু প্রশ্নটি “কে?” থেকে সরে “ব্যবস্থাটি কেন এটি হতে দিল?”-তে যায়।

নিচের কাল্পনিক ঘটনাটি দুই রকম প্রতিষ্ঠানে দেখুন।

ঘটনা ও পর্যালোচনা
সংস্কৃতি
মূল প্রশ্ন
যা জানা গেল
পরের ঝুঁকি
  1. ঘটনা। একটি বাজার অ্যাপে ১৪:০৫-এ config বদলের সময় database connection-এর সীমা 200-এর বদলে 20 লেখা হয়। Checkout ব্যর্থ হতে থাকে। ১৪:০৯-এ alert, ১৪:৪৩-এ ফেরানো। মোট ৩৮ মিনিট: ধরতে ৪, সারতে ৩৪।
  2. দোষারোপের পথ: কে করল? ব্যবস্থাপক খুঁজে বের করেন, config বদলেছিলেন নাদিয়া। ঘটনার বিবরণ শেষ, উত্তরও পাওয়া গেল বলে মনে হয়।
  3. শাস্তি আর নতুন নিয়ম। নাদিয়াকে সতর্ক করা হয়, আর সব পরিবর্তনে এখন ব্যবস্থাপকের সই লাগবে। সারি বাড়ে। অন্যরা শেখেন, ভুল হলে লুকোতে হয়। প্রায় ভুলের (near miss) খবর আসা বন্ধ হয়।
  4. তিন মাস পরে। অন্য একজন আরেকটি service-এ একই ধরনের ভুল করেন। Config-এ এখনো কোনো যাচাই নেই, কারণ কেউ ব্যবস্থাটি দেখেননি। ঘটনাটি আবার ঘটে।
  5. Blameless পথ: প্রসঙ্গ বোঝা। এবার একই ঘটনা। দল log থেকে timeline বানায় আর নাদিয়া নির্ভয়ে বলেন, কী দেখছিলেন, কী ভাবছিলেন। প্রশ্নটি হলো, সেই মুহূর্তে তাঁর কাছে কাজটি কেন ঠিক মনে হয়েছিল।
  6. ব্যবস্থার ফাঁক। তিনটি ফাঁক বেরোয়: config-এ মানের সীমা যাচাই নেই; config একসাথে সব server-এ যায়, ধাপে ধাপে নয়; আর ফেরানোর runbook পুরোনো, তাই সারতে ৩৪ মিনিট লাগল। নাদিয়া ছাড়া যে কেউ এই ভুল করতে পারতেন।
  7. কাজের তালিকা। প্রতিটি কাজের একজন মালিক আর তারিখ: pipeline-এ config যাচাই, config ধাপে ধাপে ছাড়া, runbook হালনাগাদ। Postmortem সবার জন্য খোলা। নাদিয়া নিজেই একটি কাজের দায়িত্ব নেন। দায় আছে, শাস্তি নেই।

কয়েকটি ব্যবহারিক নিয়ম: লেখায় মানুষের নামের বদলে ভূমিকা ব্যবহার করুন (“on-call প্রকৌশলী”); “মূল কারণ একটি” ধরে নেবেন না, জটিল system-এ কারণ অনেক (contributing factors); প্রতিটি কাজের মালিক আর তারিখ রাখুন; আর কাজগুলো শেষ হলো কি না পরে দেখুন। Blameless মানে ইচ্ছাকৃত ক্ষতি মেনে নেওয়া নয়; “just culture”-এ অসাবধান ঝুঁকি আর সৎ ভুল আলাদা করে দেখা হয়। Ron Westrum-এর সংস্কৃতির তিন ধরন (pathological, bureaucratic, generative) Accelerate বইয়েও উদ্ধৃত। Incident চালানোর পূর্ণ নিয়ম পর্ব ৬৭-তে।

৯ · একটি সরল maturity view — আপনি এখন কোথায়

নিচের ছকটি এই কোর্সের একটি সরল দৃষ্টি, কোনো মান বা সনদ নয়। একই প্রতিষ্ঠানের ভিন্ন দল ভিন্ন ধাপে থাকতে পারে, আর ছোট দলের জন্য সবচেয়ে ওপরের ধাপ জরুরিও নয়। লক্ষ্য নম্বর পাওয়া নয়, পরের একটি উন্নতি বেছে নেওয়া।

ধাপDeployOn-callভুলের পরেToil
১ · দেয়ালticket, মাসে একবারশুধু Opsদোষী খোঁজামাপা হয় না
২ · Automation-এর দ্বীপকিছু script, মানুষ-নির্ভরOps, Dev-কে ডাকা হয়ব্যক্তিগত আলাপঅনুভূতিতে জানা
৩ · যৌথ মালিকানাদল নিজে, pipeline-এservice-এর দলblameless postmortemমাপা হয়, বাজেট আছে
৪ · স্ব-সেবা আর শেখাপ্রয়োজনমতো, ধাপে ধাপেSLO-ভিত্তিক alertশিক্ষা পুরো প্রতিষ্ঠানে যায়নিয়মিত কমে

ছোট দলের জন্য শুরুটি সহজ। এক মাস toil খাতা রাখুন। একটি service-এর জন্য একটি SLO লিখুন। পরের outage-এ একটি blameless postmortem করুন। তিনটির কোনোটিতেই tool কিনতে হয় না, cloud account-ও লাগে না।

আরও গভীরে: Google-এর Site Reliability Engineering (২০১৬) আর The Site Reliability Workbook (২০১৮) অনলাইনে পড়া যায় (লেখার সময়ে বিনামূল্যে); toil-এর অধ্যায় আর error budget নীতির উদাহরণ দিয়ে শুরু করতে পারেন। Team Topologies-এর পরিপূরক হিসেবে Skelton-এর “DevOps Topologies” দেখুন। সারি-তত্ত্বের দিকটি Donald Reinertsen-এর The Principles of Product Development Flow (২০০৯) বইয়ে গভীরভাবে আছে, আর Lean-এর দিকটি Software Engineering কোর্সের Kanban আর lean পর্বে।

পরীক্ষা ও ইন্টারভিউতে সাধারণত যে ধরনের প্রশ্ন আসে:

  • DevOps আর SRE-র পার্থক্য? — DevOps সংস্কৃতি ও চর্চার আন্দোলন; SRE তার একটি প্রকৌশলভিত্তিক রূপ, যার হাতিয়ার SLO, error budget আর toil-এর সীমা।
  • ৯৯.৯% SLO-র ৩০ দিনের error budget? — ০.০০১ × ৪৩,২০০ = ৪৩.২ মিনিট।
  • Toil কী? — হাতে করা, বারবারের, automate করা যায়, স্থায়ী মূল্যহীন কাজ, যা service-এর সাথে বাড়ে।
  • Team Topologies-এর চার ধরনের দল? — stream-aligned, platform, enabling, complicated-subsystem.
  • Blameless postmortem কেন? — শাস্তির ভয় থাকলে তথ্য লুকায়; ব্যবস্থার ফাঁক খুঁজলে একই ভুল কমে।

১০ · AI-এর যুগে — DevOps-এর পরামর্শে AI-কে যাচাই

AI একটি postmortem-এর খসড়া বা toil-এর তালিকা দ্রুত বানাতে পারে। কিন্তু AI আপনার দল, প্রতিষ্ঠানের চাপ আর ইতিহাস জানে না। তার ওপর এই বিষয়ে সে প্রায়ই আত্মবিশ্বাসে ভুল বলে।

AI-এর সাধারণ ভুলযাচাই
বানানো পরিসংখ্যান: “elite দল X গুণ দ্রুত”মূল report-এর বছর আর সংজ্ঞা খুঁজে মেলানো; না পেলে বাদ
“Google এভাবে করে”, কোনো সূত্র ছাড়াSRE বই বা Google-এর প্রকাশিত লেখায় খোঁজা
সমস্যা না শুনে tool-এর তালিকাআগে সারি আর toil মাপা, তারপর tool
Postmortem-এ ব্যক্তিকে দোষ দেওয়া ভাষাভূমিকা আর ব্যবস্থার ফাঁকে লেখা বদলানো
Runbook-এ terraform destroy, kubectl delete বা rm -rf, সতর্কতা ছাড়াterraform plan আর --dry-run, পরীক্ষার environment-এ আগে চালানো
Automation-এ * অনুমতি, 0.0.0.0/0 খোলা, public storage, কোডে বসানো secret, latest tagDiff পড়া; least privilege; secret manager; নির্দিষ্ট version
নেই এমন flag বা বাতিল API version, খরচের কথা না বলাঅফিশিয়াল docs মেলানো, budget alert রাখা

নিচের prompt-এ AI-কে সংখ্যা আর সূত্র দিতে বাধ্য করা হয়েছে। Incident log দেওয়ার আগে secret, ব্যক্তিগত তথ্য আর গ্রাহকের ডেটা অবশ্যই মুছে দিন।

তুমি একজন অভিজ্ঞ SRE. আমাদের ৫ জনের দলের toil খাতা নিচে দিলাম (কাজ, কতবার, প্রতিবার কত মিনিট): [এখানে তালিকা দিন; কোনো secret বা গ্রাহকের তথ্য দেবে না] ১. প্রতিটি কাজ toil কি না, ছয়টি লক্ষণ ধরে বলো। না হলে কেন নয়। ২. বছরে কত ঘণ্টা যায়, হিসাব দেখিয়ে লেখো। ৩. কোনটির automation কবে নিজের খরচ তুলবে, রক্ষণাবেক্ষণসহ হিসাব করো। ধারণা করলে লিখে দাও। ৪. Automation-এর আগে মূল কারণ দূর করা যায় কি না, প্রথমে বলো। ৫. কোনো পরিসংখ্যান বা “Google করে” ধরনের দাবি দিলে সূত্র দাও; নিশ্চিত না হলে "নিশ্চিত নই" লেখো। ৬. কোনো মুছে ফেলার কমান্ড দিলে আগে সতর্ক করো, আর dry-run-এর উপায় বলো।

AI-এর পরামর্শ কাজে লাগানোর আগে

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন, তারপর “→ উত্তর” চাপুন। এগুলোর একক সঠিক উত্তর নেই; যুক্তিটিই আসল।

প্র ০১২০০৯ সালে “দিনে ১০-এর বেশি deploy” শুনে অনেকে কেন অবাক হয়েছিলেন, আর Flickr-এর বক্তৃতার আসল বার্তা কি সংখ্যাটিই ছিল?

সেই সময় অনেক প্রতিষ্ঠানে release ছিল বড়, বিরল আর ভীতিকর ঘটনা: মাসে বা ত্রৈমাসিকে একবার, রাত জেগে, আলাদা Ops দলের হাতে। তখনকার সাধারণ ধারণা ছিল, বেশি পরিবর্তন মানে কম স্থিতি। Velocity ২০০৯-এ John Allspaw আর Paul Hammond একজন Ops আর একজন Dev নেতা হিসেবে একসাথে মঞ্চে দাঁড়ালেন। সেটিই ছিল একটি বার্তা।

বক্তৃতার সংখ্যাটি শিরোনাম হয়েছিল, কিন্তু ভেতরের কথা ছিল দুই ভাগে। Tool-এর ভাগে ছিল স্বয়ংক্রিয় infrastructure, এক ধাপে build আর deploy, feature flag, ভাগ করা metric আর chat-এ যুক্ত bot. সংস্কৃতির ভাগে ছিল পারস্পরিক সম্মান, আস্থা, ব্যর্থতা নিয়ে সুস্থ মনোভাব আর দোষ না চাপানো। বক্তৃতায় দুটি অংশই গুরুত্ব পেয়েছিল, কিন্তু পরে অনেক প্রতিষ্ঠান শুধু tool-এর অংশটি নকল করে, কারণ tool কেনা সহজ আর আস্থা গড়া কঠিন।

আরেকটি যুক্তি ছিল সূক্ষ্ম: ছোট আর ঘন ঘন পরিবর্তনে প্রতিটির ঝুঁকি কম, আর ভাঙলে কারণ খুঁজে পাওয়া সহজ। অর্থাৎ পরিবর্তন আটকে রাখলে ঝুঁকি কমে না, জমে। পরে DORA-র জরিপও গতি আর স্থিতি একসাথে পাওয়া সম্ভব বলে দেখায়, যদিও সেটি সম্পর্ক, প্রতিটি দলে নিশ্চিত কারণ নয়।

আজ একটি দল যদি “দিনে ১০ deploy” লক্ষ্য বানায়, সে আসল কথাটি হারাবে। একটি ব্যাংকের core system আর একটি photo site-এর ঝুঁকি এক নয়। Deploy কত ঘন হওয়া উচিত, তা ঠিক করে ব্যবসা আর ঝুঁকি।

মূল উপলব্ধি: সংখ্যাটি ছিল ফল, লক্ষ্য নয়। আসল বার্তা ছিল, দুই দল যখন একই সমস্যাকে নিজের ভাবে, তখন গতি আর স্থিতির মধ্যে বাধ্যতামূলক লড়াই থাকে না।

প্র ০২Google-এর SRE বইয়ের ৫০% সীমা কেন দরকার ছিল? আমাদের ৮ জনের ছোট প্রতিষ্ঠান কি নিয়মটি হুবহু নেবে?

সীমাটির পেছনে একটি অর্থনৈতিক যুক্তি আছে। প্রচলিত Ops মডেলে service বড় হলে কাজও বাড়ে, তাই মানুষও বাড়াতে হয়। Service দ্বিগুণ হলে দলও দ্বিগুণ, এই হিসাব Google-এর মাপে টেকে না। Ben Treynor-এর বর্ণনায় SRE শুরু হয়েছিল এই ভাবনায় যে software engineer-রাই operations-এর কাজ যন্ত্রে তুলে দেবেন। কিন্তু সময় না থাকলে তাঁরা শুধু আগুন নেভাবেন। ৫০% সীমা সেই প্রকৌশলের সময়কে রক্ষা করে।

সীমার দ্বিতীয় কাজটি হলো সংকেত দেওয়া। SRE বই অনুযায়ী, ops কাজ বারবার সীমা পেরোলে সেটি ডেভেলপার দলে ফিরিয়ে দেওয়া যায়, বা দলে ডেভেলপারকে যুক্ত করা যায়। এতে চাপের খবর শুধু একটি দলে আটকে থাকে না। লক্ষ্য শাস্তি নয়, feedback.

একটি ৮ জনের প্রতিষ্ঠানে আলাদা SRE দলই হয়তো নেই। তাই সংখ্যাটি হুবহু না নিয়ে ভাবনাটি নেওয়া ভালো। প্রথমত, toil মাপুন, কারণ না মাপলে সীমার অর্থ নেই। দ্বিতীয়ত, একটি সীমা লিখে ঠিক করুন, হতে পারে ৩০% বা ৪০%. তৃতীয়ত, সীমা ভাঙলে কী হবে, সেটি আগেই বলুন: যেমন পরের দুই সপ্তাহের feature কাজ কমিয়ে automation. ছোট দলে managed service ব্যবহারও একটি উত্তর, কারণ cloud provider তখন কিছু toil নিজের ঘাড়ে নেন, যদিও খরচ বাড়ে।

একটি সতর্কতাও আছে। শুরুর দিকের startup-এ কিছু হাতের কাজ সঠিক সিদ্ধান্ত হতে পারে, কারণ পণ্যটিই আগামী বছর থাকবে কি না, তা অজানা। Automation-এর ফেরত পেতে সময় লাগে, তাই অনিশ্চয়তাও হিসাবে ধরতে হয়।

মূল উপলব্ধি: ৫০% একটি নির্দিষ্ট প্রতিষ্ঠানের নির্দিষ্ট মাপের নিয়ম। নকল করার জিনিস সংখ্যাটি নয়, বরং “প্রকৌশলের সময় রক্ষা করার একটি লিখিত সীমা” থাকার ভাবনাটি।

প্র ০৩“DevOps engineer” পদটি অনেকে ভুল বলেন, অথচ বাজারে হাজারো বিজ্ঞপ্তি। আপনি নিজের কর্মজীবনে এই দ্বন্দ্ব কীভাবে সামলাবেন?

সমালোচনার মূলে আছে শব্দটির জন্ম। DevOpsDays-এর আলোচনা ছিল দুটি পেশার সহযোগিতা নিয়ে। Agile-কে যেমন “Agile engineer” পদে নামানো যায় না, তেমনি সহযোগিতাকেও একজন মানুষের ঘাড়ে চাপানো যায় না। প্রতিষ্ঠান যখন “DevOps দল” বানিয়ে বলে “DevOps হয়ে গেল”, তখন ডেভেলপাররা production থেকে আগের মতোই দূরে থাকেন, আর ticket-এর একটি নতুন সারি তৈরি হয়। Skelton-এর DevOps Topologies-এ এই ধরনের নকশা anti-pattern হিসেবে আছে, যদিও সেখানে কিছু অস্থায়ী, সীমিত সময়ের “DevOps দল” কার্যকর হতে পারে বলেও ধারণা দেওয়া হয়েছে।

অন্যদিকে বাজার নিজের মতো শব্দ বানায়। চাকরির বিজ্ঞপ্তিতে “DevOps engineer” সাধারণত বোঝায় এমন কাউকে, যিনি Linux, cloud, container, pipeline আর Infrastructure as Code জানেন। পদটি ধারণাগতভাবে অশুদ্ধ হলেও দক্ষতার ঝুড়িটি বাস্তব। তাই একজন প্রার্থীর জন্য শব্দ নিয়ে তর্ক করার চেয়ে কাজ বোঝা বেশি দরকারি।

ইন্টারভিউতে কয়েকটি প্রশ্ন করতে পারেন। Production-এর alert কার কাছে যায়? ডেভেলপাররা কি নিজে deploy করেন? আপনার দলের কাজের কত ভাগ ticket থেকে আসে, আর কত ভাগ automation? Postmortem কি খোলা? উত্তর থেকে বুঝবেন, পদটি আসলে platform প্রকৌশল, পুরোনো sysadmin কাজ, নাকি সবকিছুর দায় একজনের ঘাড়ে।

কর্মজীবনের দিক থেকে নিরাপদ পথ হলো মৌলিক দক্ষতা গড়া, যা নাম বদলালেও টেকে: Linux, network, একটি প্রোগ্রামিং ভাষা, আর সমস্যা খোঁজার অভ্যাস। “Platform engineer”, “SRE”, “cloud engineer” শব্দগুলোর মধ্যেও একই রকম ঝাপসা রেখা আছে, আর আগামী দশকে নতুন শব্দও আসবে।

মূল উপলব্ধি: পদের নাম একটি লেবেল, কাজের বর্ণনা নয়। নিজের জীবনবৃত্তান্তে tool-এর তালিকার বদলে দেখান, আপনি কোন সারি কমিয়েছেন, কোন toil মুছেছেন আর কোন দলকে স্বাবলম্বী করেছেন।

প্র ০৪১৯৬৮ সালের একটি পর্যবেক্ষণ আজকের microservices আর cloud প্রতিষ্ঠানে এত প্রাসঙ্গিক কেন? দল বদলে কি সত্যিই system বদলানো যায়?

Melvin Conway তাঁর প্রবন্ধটি Datamation-এ প্রকাশ করেন ১৯৬৮ সালে; তাঁর নিজের বর্ণনায়, এর আগে Harvard Business Review লেখাটি ফেরত দিয়েছিল, প্রমাণের অভাবে। পর্যবেক্ষণটি সরল: একটি system-এর দুটি অংশ জোড়া লাগাতে হলে সেগুলোর নকশাকারীদের কথা বলতে হয়। তাই যাঁরা নিয়মিত কথা বলেন না, তাঁদের অংশের মাঝে interface শক্ত হয়, আর যাঁরা একসাথে বসেন, তাঁদের কোড জড়িয়ে যায়। এটি প্রকৃতির সূত্র নয়, একটি শক্তিশালী প্রবণতা। পরে কিছু গবেষণাতেও product আর সংগঠনের কাঠামোর মিল দেখা গেছে বলে বলা হয়।

Microservices-এ এটি আরও স্পষ্ট। একটি প্রতিষ্ঠান যদি একই কেন্দ্রীয় database দল রেখে দেয়, আর কোড ভাগ করে ৪০টি service বানায়, তাহলে পাওয়া যায় “distributed monolith”: বিতরণের সব জটিলতা, কিন্তু স্বাধীন deploy নেই। কোড বদলেছে, যোগাযোগ বদলায়নি।

Inverse Conway maneuver শব্দটি ThoughtWorks-এর প্রকৌশলীদের লেখা থেকে ২০১০-এর দিকে ছড়িয়েছে বলে প্রচলিত, আর Team Topologies একে কেন্দ্রীয় হাতিয়ার করে। তবে দল সাজানো জাদু নয়। পুরোনো কোড একদিনে বদলায় না, তাই নতুন দলকে কিছুদিন পুরোনো নকশার সাথে লড়তে হয়। আর ঘন ঘন পুনর্গঠন মানুষের আস্থা নষ্ট করে, কারণ দল গড়ে উঠতে সময় লাগে। ব্যবস্থাপক যদি প্রকৌশলীদের না জিজ্ঞেস করেই দল ভাগ করেন, তিনি আসলে অজান্তেই architecture ঠিক করছেন।

Cloud-এ এর সরাসরি প্রয়োগ আছে। Account আর project-এর সীমা, network-এর ভাগ আর IAM role প্রায়ই দলের কাঠামো অনুসরণ করে। পর্ব ৩৫-এর governance-এ এটি আবার দেখবেন।

মূল উপলব্ধি: Org chart আর architecture diagram একই ছবির দুটি রূপ। একটি বদলাতে চাইলে অন্যটির কথা ভাবতেই হবে, আর দল ভাগ করার সিদ্ধান্তে প্রকৌশলীদের যুক্ত করতে হবে।

প্র ০৫একজন প্রকৌশলীর একটি কমান্ডে বড় outage হলো। Blameless culture কি এখানে দায় এড়ানোর অজুহাত, নাকি আসলেই বেশি নিরাপত্তা আনে?

দুটি প্রকাশিত ঘটনা ভাবুন। ২০১৭ সালের ফেব্রুয়ারিতে Amazon S3-এর একটি অঞ্চলে বড় বিভ্রাট হয়। প্রতিষ্ঠানের প্রকাশিত সারাংশ অনুযায়ী, একজন অনুমোদিত কর্মীর একটি কমান্ডের ভুল input অনেক বেশি server সরিয়ে দেয়। সারাংশে জোর ছিল tool-এর ওপর: তারা জানায়, tool বদলানো হচ্ছে, যাতে capacity ধীরে সরে আর ন্যূনতম সীমার নিচে না নামে।

একই বছরের জানুয়ারির শেষে GitLab-এ চাপের মধ্যে কাজ করা একজন প্রকৌশলী ভুল server-এ একটি database folder মুছে ফেলেন। Backup-এর কয়েকটি পথও তখন কাজ করেনি, আর প্রকাশিত হিসাবে কয়েক ঘণ্টার তথ্য হারায়। GitLab সর্বসমক্ষে postmortem লেখে আর উদ্ধারের কাজ সরাসরি সম্প্রচার করে। আলোচনা ঘুরেছিল backup যাচাই না থাকার দিকে, ব্যক্তির দিকে নয়। (দুটিই সরল করা বিবরণ; বিস্তারিত মূল প্রকাশনায়।)

প্রশ্নটি হলো, ব্যক্তিকে সরালে কি ফাঁক বন্ধ হয়? হয় না। পরের মানুষটিও একই tool-এর সামনে বসবেন। বিমান চলাচলে এই শিক্ষা পুরোনো: NASA-র Aviation Safety Reporting System (১৯৭৬ থেকে) পাইলটদের গোপনে ভুলের খবর দিতে দেয়, কারণ শাস্তির ভয়ে খবর চাপা পড়লে পুরো ব্যবস্থা অন্ধ হয়।

তবে blameless মানে সীমাহীন ক্ষমা নয়। Sidney Dekker-এর just culture-এ সৎ ভুল, ঝুঁকিপূর্ণ আচরণ আর ইচ্ছাকৃত অসদাচরণ আলাদা। কেউ জেনেশুনে নিরাপত্তা নিয়ম ভাঙলে বা ক্ষতি করলে সেটি অন্য প্রক্রিয়ার বিষয়। আর এই সীমা কে ঠিক করবেন, সেটিও একটি ন্যায্যতার প্রশ্ন, কারণ ক্ষমতাবানেরা নিজের সুবিধামতো ব্যাখ্যা দিতে পারেন।

মূল উপলব্ধি: Blameless দায় মুছে দেয় না, দায়ের রূপ বদলায়। “কেন করলেন” ধরনের অভিযোগ ছেড়ে দায়টি হয় “আমরা কী বদলাব”, যা অনেক বেশি কঠিন, আর অনেক বেশি কার্যকর।

অনুশীলন

এগুলোর জন্য কোনো cloud account লাগবে না। কাগজে হিসাব করুন, তারপর উত্তর মেলান।

  1. হিসাব: (ক) একটি service-এর SLO ৯৯.৯৫%, ৩০ দিনের window. Error budget কত মিনিট? মাসে ৬ আর ৯ মিনিটের দুটি বিভ্রাটের পরে budget-এর কত শতাংশ গেছে? (খ) ৫ জনের দলে ১২ সপ্তাহে, সপ্তাহে ৪০ ঘণ্টা করে কাজ, toil ১,৩২০ ঘণ্টা। Toil% কত? ৫০%-এর নিচে আনতে কত ঘণ্টার বেশি কমাতে হবে?

    (ক) Budget = ০.০০০৫ × ৪৩,২০০ = ২১.৬ মিনিট। ব্যবহার = ৬ + ৯ = ১৫ মিনিট, অর্থাৎ ১৫ ÷ ২১.৬ ≈ ৬৯.৪%; বাকি ৬.৬ মিনিট।

    (খ) মোট = ৫ × ১২ × ৪০ = ২,৪০০ ঘণ্টা। Toil% = ১,৩২০ ÷ ২,৪০০ = ৫৫%. ৫০% মানে ১,২০০ ঘণ্টা, তাই ১২০ ঘণ্টার বেশি কমাতে হবে।

  2. আউটপুট অনুমান করুন: handoff_lead_time.js-এ QA team-এর busy 0.90 থেকে 0.75 করা হলো, আর কিছু বদলাল না। “Separate silos” অংশের lead লাইনটি হুবহু কী ছাপবে? চালানোর আগে কাগজে হিসাব করুন, তারপর চালিয়ে মেলান।

    QA-র অপেক্ষা ৪ × ০.৭৫ ÷ ০.২৫ = ১২ ঘণ্টা (আগে ৩৬)। মোট অপেক্ষা ৮ + ১২ + ১১.৩৩ + ১৯ = ৫০.৩৩ ঘণ্টা, কাজ ৯ ঘণ্টা, lead ৫৯.৩৩ ঘণ্টা। ৮ দিয়ে ভাগ করলে ৭.৪ দিন, আর ৯ ÷ ৫৯.৩৩ ≈ ১৫%. ছাপা হবে:

    lead 59.3 h = 7.4 days, flow efficiency 15%

    শুধু একটি দলের ব্যস্ততা ১৫ শতাংশ-বিন্দু কমিয়েই ২৪ ঘণ্টা বাঁচল, অথচ কাজের সময় এক মিনিটও কমেনি।

  3. নকশা ও সমালোচনা: ৬০ জনের একটি কাল্পনিক প্রতিষ্ঠান। Dev দল কোড লিখে “DevOps দল”-কে ticket দেয়, DevOps দল Ops দলকে server-এর ticket দেয়। QA আলাদা। Deploy মাসে দুবার, প্রতিটি outage-এ Dev আর Ops তর্ক করেন। নকশাটির সমালোচনা করুন, আর Team Topologies দিয়ে একটি নতুন গঠন প্রস্তাব করুন।

    সমালোচনা: DevOps দল নতুন একটি দেয়াল: হাতবদল বেড়েছে, ডেভেলপার production থেকে দূরে, আর লক্ষ্য আলাদাই আছে। QA আলাদা থাকায় feedback দেরিতে আসে। Outage-এর তর্ক দেখায়, যৌথ মাপ নেই।

    প্রস্তাব: Product-এর ধারা অনুযায়ী কয়েকটি stream-aligned দল, যার ভেতরে test-এর দক্ষতা থাকবে আর তারা নিজের service-এর alert নেবে। DevOps আর Ops-এর মানুষ মিলে একটি platform দল, যারা pipeline আর পরিবেশ স্ব-সেবায় দেবে। কিছুদিনের জন্য একটি enabling দল on-call আর test শেখাবে। প্রতিটি service-এ একটি SLO, আর blameless postmortem. বদলটি ধাপে ধাপে করুন, একটি দল দিয়ে শুরু করে। সব একদিনে নয়।

  4. Toil না অন্য কিছু? শ্রেণিবিভাগ করুন: (ক) প্রতি সপ্তাহে হাতে log folder পরিষ্কার (খ) নতুন service-এর নকশা পর্যালোচনা (গ) alert এলেই একই service হাতে restart (ঘ) দলের সাপ্তাহিক সভা (ঙ) একটি বড় outage-এর postmortem লেখা।

    (ক) আর (গ) toil: হাতে করা, বারবারের, automate করা যায়, স্থায়ী মূল্য নেই। (গ)-তে আগে মূল কারণ খুঁজুন। (খ) প্রকৌশল: স্থায়ী মূল্য রাখে। (ঘ) overhead: দরকারি হতে পারে, কিন্তু toil-এর সংজ্ঞায় পড়ে না। (ঙ) প্রকৌশল: এটি ভবিষ্যতের ঝুঁকি কমায়। তবে যদি একই রকম postmortem বারবার লিখতে হয়, সেটি সতর্কসংকেত, কারণ কাজের তালিকা শেষ হচ্ছে না।

নিজেকে যাচাই করুন

ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।

ক্রমএকটি outage-এর পরের কাজগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)

  1. ব্যবহারকারীর সেবা ফিরিয়ে আনা
  2. Log দেখে ঘটনার timeline বানানো
  3. ব্যবস্থার ফাঁক আর contributing factor খোঁজা
  4. প্রতিটি কাজের মালিক আর তারিখ ঠিক করা
  5. Postmortem খোলা রাখা আর কাজ শেষ হলো কি না পরে দেখা

DevOps-এর three ways-এ দ্বিতীয় পথটি মূলত কী নিয়ে?

  • কাজ বাঁ থেকে ডানে দ্রুত চলা
  • ডান থেকে বাঁয়ে দ্রুত feedback
  • ব্যর্থতা থেকে শেখা আর পরীক্ষা চালানো
  • DevOps engineer পদ তৈরি করা

একটি service-এর SLO ৯৯.৯%, window ৩০ দিন। মাসের ২০তম দিনে খারাপ সময় হয়েছে ৪৫ মিনিট। একটি error budget নীতি অনুযায়ী বড় নতুন feature নিয়ে স্বাভাবিক সিদ্ধান্ত কী?

  • স্বাভাবিকভাবে পাঠানো, কারণ মাসের ১০ দিন বাকি
  • SLO কমিয়ে ৯৯% করে পাঠানো
  • Feature আটকে রেখে আগে স্থিতি বাড়ানোর কাজ করা
  • যে দল ভুল করেছে, তার বেতন কাটা

SRE-এর সংজ্ঞা অনুযায়ী নিচের কোনটি toil নয়?

  • প্রতিদিন হাতে একই report ফাইল কপি করা
  • নতুন প্রতিটি গ্রাহকের জন্য হাতে একই configuration বসানো
  • Disk ভরলেই হাতে পুরোনো log মোছা
  • একটি service-এর নতুন autoscaling নীতি নকশা করা

একটি প্রতিষ্ঠানে ভিডিও সংকোচনের গণিতভিত্তিক একটি জটিল অংশ সামলাতে গভীর বিশেষজ্ঞ লাগে। Team Topologies-এ এই দলের উপযুক্ত ধরন কোনটি?

  • Complicated-subsystem দল
  • Enabling দল
  • Platform দল
  • প্রতিটি stream-aligned দলে একজন করে গণিতবিদ

গড় অপেক্ষা ≈ কাজের সময় × ব্যস্ততা ÷ (১ − ব্যস্ততা) মডেলে, ২ ঘণ্টার একটি কাজ ৮০% ব্যস্ত একটি দলে এলে মোট কত ঘণ্টায় শেষ হবে?

  • ২ ঘণ্টা
  • ৮ ঘণ্টা
  • ১০ ঘণ্টা
  • ২.৫ ঘণ্টা

একটি প্রতিষ্ঠানে frontend, backend আর database-এর তিনটি আলাদা দল। Conway's law অনুযায়ী কোন ফলটি সবচেয়ে সম্ভাব্য?

  • প্রতিটি feature তিন গুণ দ্রুত শেষ হবে
  • System তিনটি স্তরে ভাগ হবে, আর একটি feature তিন দলের হাত ঘুরবে
  • সব interface আপনা-আপনি পরিষ্কার হয়ে যাবে
  • প্রতিষ্ঠান একটি cloud provider-এ আটকে যাবে

শব্দকোষ

লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন, অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:

মনে রাখুন

  1. Dev আর Ops-এর দেয়ালের মূলে উল্টো লক্ষ্য; DevOps মানে লক্ষ্য, তথ্য আর দায় এক করা, নতুন পদ বা tool নয়।
  2. Lead time = কাজ + সারি। বেশি ব্যস্ত দল মানে লম্বা সারি; ৯০% ব্যস্ততায় অপেক্ষা কাজের প্রায় ৯ গুণ।
  3. Error budget = ১ − SLO. ৯৯.৯% মানে ৩০ দিনে ৪৩.২ মিনিট। Budget গতি আর স্থিতির সিদ্ধান্তকে সংখ্যায় আনে।
  4. Toil মাপুন আর হিসাব করে কমান। Google-এর ৫০% সীমা একটি উদাহরণ, মূল ভাবনা হলো প্রকৌশলের সময় রক্ষা করা।
  5. Conway's law বলে দলের গঠনই system-এর গঠন; Team Topologies-এর চার ধরনের দল আর blameless সংস্কৃতি এর ব্যবহারিক উত্তর।

পরের পর্বে: এই পর্বে দেখলেন মানুষ আর দল। এবার যন্ত্রের ভেতরে ঢোকার পালা: মডিউল ২ শুরু হবে server-এর Linux দিয়ে, যেখানে filesystem, user, permission আর package আসবে।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

এই পর্বটি শেয়ার করুন:
এই পর্বে ভুল পেয়েছেন? জানান