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

Well-Architected — cloud নকশার স্তম্ভ, multi-cloud আর lock-in

Well-Architected — Cloud Design Pillars, Multi-Cloud and Lock-In

Taught in Bangla, this lesson compares the six Well-Architected pillars across AWS, Azure and Google Cloud as examples, explains the tensions between pillars, and reviews a three-tier app by questions, evidence and risk rather than scores. It weighs single-AZ, multi-AZ, multi-region and multi-cloud with correlated failure, then covers the true cost of multi-cloud, layers of lock-in, abstraction cost, exit plans and sustainability.

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

  • ছয়টি স্তম্ভ চেনা, আর AWS, Azure ও Google-এর কাঠামো মিলিয়ে দেখা
  • প্রশ্ন, প্রমাণ আর ঝুঁকির ক্রম ধরে একটি নকশা review করা
  • একটি তিন-স্তরের অ্যাপের দুর্বলতা খুঁজে একটি finding-কে fix পর্যন্ত নেওয়া
  • Correlated failure ধরে single-AZ, multi-AZ, multi-region আর multi-cloud তুলনা করা
  • Multi-cloud-এর আসল কারণ আর আসল দাম আলাদা করা
  • Lock-in-এর স্তর, abstraction-এর দাম আর exit plan-এর হিসাব করা

১ · অ্যাপ চলছে মানেই নকশা ভালো নয়

একটি কাল্পনিক অনলাইন বাজার অ্যাপের কথা ভাবুন। দুই বছর ধরে ভালোই চলছে। Dashboard সবুজ, বিল সহনীয়, গ্রাহকও খুশি। তারপর ঈদের সেলের রাতে একটি availability zone-এ সমস্যা হলো। অ্যাপের সব কিছু ছিল সেই একটি zone-এ। দল তখন প্রথমবার backup থেকে restore চেষ্টা করল, আর দেখল প্রক্রিয়াটি কেউ আগে করেনি। ছয় ঘণ্টা বিক্রি বন্ধ।

এখানে কোনো code-এর bug ছিল না। দুর্বলতা ছিল নকশায়, আর সেটি দুই বছর ধরে চুপচাপ ছিল। সুস্থ অবস্থায় দুর্বল নকশা আর ভালো নকশা দেখতে একই। পার্থক্য ধরা পড়ে চাপের দিনে। তাই চাপ আসার আগে নকশাকে প্রশ্ন করতে হয়। সেই প্রশ্নের গোছানো তালিকাই Well-Architected framework.

লঞ্চঘাটে একটি লঞ্চ বছরের পর বছর ঠিকঠাক যাতায়াত করতে পারে। তবু ফিটনেস পরীক্ষায় দেখা হয় লাইফ জ্যাকেট কত, অগ্নিনির্বাপক কাজ করে কি না, খোল কতটা মজবুত, ধারণক্ষমতা কত। পরিদর্শক লঞ্চ ডুবিয়ে দেখেন না। তিনি প্রশ্ন করেন, আর প্রমাণ চান। Design review-ও তাই: ব্যর্থতার আগে দেখা, ব্যর্থতা ঘটলে কী হবে।

এই পর্বটি আগের অনেক পর্বকে এক জায়গায় আনে। Availability-র হিসাব পর্ব ০৫, backup আর RTO পর্ব ২৪, governance পর্ব ৩৫, SLO পর্ব ৬৬, capacity পর্ব ৬৮. আর খরচের দিক পর্ব ৭২ ও পর্ব ৭৩-এ এসেছে। Well-Architected নতুন প্রযুক্তি শেখায় না। সে জিজ্ঞেস করে, এই শেখা জিনিসগুলো আপনার নকশায় আছে তো?

AWS ২০১৫ সালের দিকে Well-Architected whitepaper প্রকাশ করে। শুরুতে স্তম্ভ ছিল কম; operational excellence পরে যোগ হয়, আর sustainability যোগ হয় ২০২১ সালের শেষে। Azure ২০২০ সালের দিকে নিজের Well-Architected Framework আনে। Google-এর কাঠামো আগে Architecture Framework নামে পরিচিত ছিল, পরে নাম বদলে Well-Architected হয়েছে। সাল আর নাম ছোটখাটো বদলাতে পারে, তাই provider-এর বর্তমান দলিল দেখে নিন।

২ · ছয়টি স্তম্ভ, আর তিন provider-এর মিল

বাড়ির ছাদ দাঁড়িয়ে থাকে কয়েকটি থামের ওপর। একটি থাম দুর্বল হলে অন্য থাম যত মোটাই হোক, ছাদ নিরাপদ নয়। এই ছবি থেকেই pillar বা স্তম্ভ শব্দটি এসেছে। প্রতিটি স্তম্ভ নকশার একটি প্রশ্নের দিক।

স্তম্ভমূল প্রশ্নএকটি উদাহরণ
Operational excellenceনিরাপদে বদলাতে আর চালাতে পারি?স্বয়ংক্রিয় deploy, runbook, postmortem
Securityকে কী করতে পারে, ডেটা কি সুরক্ষিত?Least privilege, encryption, audit log
Reliabilityব্যর্থতার পরেও কাজ চলবে, নিজে সেরে উঠবে?একাধিক zone, পরীক্ষিত restore
Performance efficiencyকাজের সাথে মানানসই resource নিচ্ছি?Load test, cache, CDN, সঠিক instance
Cost optimizationটাকার বিনিময়ে যা পাওয়ার, তা পাচ্ছি?Tag, budget alert, rightsizing
Sustainabilityএকই কাজ কম শক্তিতে করা যায়?অলস server বন্ধ, পুরোনো ডেটা মোছা

ছয় স্তম্ভ, আর তাদের টানাপোড়েন

Six pillars carry the workload; arrows show common trade-offs

ছয়টি স্তম্ভ এবং তাদের মধ্যে টানাপোড়েনের তীর আপনার workload পরিচালনানিরাপত্তানির্ভরযোগ্যতাকর্মদক্ষতাখরচটেকসই Operational excellenceSecurityReliabilityPerformance efficiencyCost optimizationSustainability ভিত: ব্যবসার লক্ষ্য ও SLO A B C D E
  • A নির্ভরযোগ্যতা ↔ খরচ: বাড়তি copy, বাড়তি বিল।
  • B নিরাপত্তা ↔ গতি: প্রতি ধাপে যাচাই, দেরি বাড়ে।
  • C পরিচালনা ↔ নিরাপত্তা: বেশি gate, ধীর release.
  • D নির্ভরযোগ্যতা ↔ টেকসই: অলস copy-ও বিদ্যুৎ খায়।
  • E খরচ ↔ টেকসই: সবুজ তীর, এরা প্রায়ই একই দিকে যায়।
ছবি ৭৪.১ — স্তম্ভগুলো আলাদা, কিন্তু স্বাধীন নয়। লাল তীরে একদিকে টানলে অন্যদিকে দাম পড়ে।

তিন বড় provider-এর কাঠামো খুব কাছাকাছি। শব্দে সামান্য পার্থক্য, চিন্তায় প্রায় নেই। নিচের ছকটি লেখার সময়ের ধারণা; নাম ও সংখ্যা বদলাতে পারে, তাই দলিল মিলিয়ে নিন।

বিষয়AWSAzureGoogle Cloud
পরিচালনাOperational excellenceOperational excellenceOperational excellence
নিরাপত্তাSecuritySecuritySecurity, privacy and compliance
নির্ভরযোগ্যতাReliabilityReliabilityReliability
কর্মদক্ষতাPerformance efficiencyPerformance efficiencyPerformance optimization
খরচCost optimizationCost optimizationCost optimization
টেকসইআলাদা স্তম্ভমূল পাঁচ স্তম্ভের বাইরে আলাদা নির্দেশিকাআলাদা স্তম্ভ
নকশার সংগ্রহArchitecture CenterAzure Architecture CenterCloud Architecture Center

একটি শব্দের ফাঁদ: “WAF” বলতে Well-Architected Framework-ও বোঝাতে পারে, Web Application Firewall-ও। Azure-এর দলিলে দুটিই পাবেন। ইন্টারভিউতে প্রসঙ্গ না বুঝলে জিজ্ঞেস করে নিন।

বিশেষ কাজের জন্য lens, আর তৈরি নকশা

Serverless, machine learning বা SaaS-এর নিজস্ব প্রশ্ন থাকে। AWS এদের বলে lens: একই স্তম্ভ, কিন্তু সেই ধরনের কাজের জন্য বাড়তি প্রশ্ন। আরেকটি দরকারি জিনিস reference architecture: কোনো সাধারণ সমস্যার পরীক্ষিত নকশা, যেমন “তিন-স্তরের web অ্যাপ”।

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

৩ · স্তম্ভের টানাপোড়েন: সব একসাথে সর্বোচ্চ হয় না

নতুনরা প্রায়ই ভাবেন, সব স্তম্ভে পূর্ণ নম্বর পাওয়াই লক্ষ্য। তা নয়। প্রতিটি উন্নতির একটি দাম আছে, আর সেই দাম প্রায়ই আরেকটি স্তম্ভ থেকে কাটা যায়। এই লেনদেনের নাম trade-off.

বিয়েবাড়ির ক্যাটারিং ভাবুন। ৩০০ অতিথির জন্য ৩৫০ জনের খাবার রাখলে কম পড়ার ভয় নেই, কিন্তু টাকা আর খাবার দুটোই নষ্ট হতে পারে। ২৮০ জনের রাখলে সস্তা, কিন্তু শেষের অতিথিরা না খেয়ে ফিরতে পারেন। “ঠিক” সংখ্যা নির্ভর করে একজন অতিথি না খেয়ে ফিরলে আপনার কতটা ক্ষতি, তার ওপর।

সিদ্ধান্তযা পানযা দেন
দ্বিতীয় regionRegion হারানোর সুরক্ষাবিল, জটিলতা, ডেটার কিছুটা দেরি
Synchronous replicationRPO প্রায় শূন্যপ্রতি লেখায় বাড়তি latency
সব জায়গায় encryption ও যাচাইকম ঝুঁকিসামান্য latency, key-এর ব্যবস্থাপনা
কড়া approval gateভুল কম ঢোকেRelease ধীর, ছোট বদলও আটকে থাকে
Spot instanceকম বিলযেকোনো সময় কেড়ে নেওয়ার ঝুঁকি
Managed সেবার গভীর ব্যবহারকম পরিচালনা, বেশি গতিবেশি lock-in

ভালো নকশা মানে সেরা trade-off নয়, লিখিত trade-off রাখা। ছয় মাস পরে কেউ জিজ্ঞেস করবে, “এক region কেন?” উত্তর যদি হয়, “হিসাব করেছিলাম, ঘণ্টার ক্ষতি কম, তাই”, সেটি সিদ্ধান্ত। উত্তর যদি হয়, “কেউ ভাবেনি”, সেটি দুর্ঘটনা। এই কারণ লিখে রাখার ছোট দলিলের নাম architecture decision record বা ADR. Michael Nygard ২০১১ সালের একটি লেখায় এই ধারণাটি জনপ্রিয় করেন।

মূল ধারণা

Trade-off-এর উত্তর আসে ব্যবসার লক্ষ্য থেকে। তাই ছবির ভিতে আছে SLO আর ব্যবসার লক্ষ্য। হাসপাতালের রোগীর তথ্য আর শখের ব্লগের ছবির গ্যালারি, দুটিতে একই “সেরা অনুশীলন” খাটে না। লক্ষ্য না জেনে review করলে সেটি শুধু তালিকা মেলানো হয়।

৪ · Review মানে প্রশ্ন আর প্রমাণ, নম্বর নয়

Architecture review কোনো audit নয়। AWS-এর দলিলেও একে দোষ খোঁজার বদলে খোলা আলোচনা হিসেবেই বর্ণনা করা হয়। যাঁরা সিস্টেম বানিয়েছেন আর চালান, তাঁরা বসেন। উদ্দেশ্য ঝুঁকি খুঁজে পাওয়া, কাউকে ধরা নয়। ভালো প্রশ্নের তিনটি গুণ:

  • প্রমাণ চায়। “Backup আছে?” দুর্বল প্রশ্ন। “সর্বশেষ কবে restore করেছেন, কত সময় লেগেছিল?” ভালো প্রশ্ন।
  • ব্যর্থতার কথা বলে। “এই zone না থাকলে কী হবে?” উত্তর শুনলেই single point of failure দেখা যায়।
  • দায়িত্ব জিজ্ঞেস করে। “রাত ২টায় এটি ভাঙলে কে জানবে, আর কী করবে?”

Yes/no উত্তর থেকে একটি finding পাওয়া যায়, অর্থাৎ নকশার একটি নথিবদ্ধ দুর্বলতা। AWS-এর Well-Architected Tool এদের high ও medium ঝুঁকিতে ভাগ করে। আমরা একটি সহজ পদ্ধতি নিই: impact × likelihood, দুটোই ১ থেকে ৫. নিচের সিমুলেটর আমাদের কাল্পনিক অ্যাপের ১৩টি উত্তর নিয়ে কাজ করছে। উত্তর বদলে আবার চালিয়ে দেখুন।

// Pillar review: yes/no answers become a risk-ordered list. Sample data, ASSUMED.
// risk = impact x likelihood (1 to 5 each). It orders the work; it is not a grade.
const answers = [ // [pillar, question, yes?, impact, likelihood]
  ["reliability", "Restore tested this quarter?", false, 5, 4],
  ["reliability", "Database survives a zone loss?", false, 5, 3],
  ["reliability", "App runs in 2+ zones?", false, 4, 3],
  ["security", "No shared admin login?", false, 5, 3],
  ["security", "Secrets kept outside the code?", true, 5, 2],
  ["security", "Database has no public address?", true, 5, 2],
  ["operations", "Deploys are automated?", true, 3, 3],
  ["operations", "Runbook for the top 3 alerts?", false, 3, 3],
  ["performance", "Load tested at peak?", false, 3, 3],
  ["performance", "Static files served by a CDN?", true, 2, 2],
  ["cost", "Every resource tagged?", false, 2, 4],
  ["cost", "Budget alert set?", true, 3, 2],
  ["sustainability", "Dev servers stop at night?", false, 1, 4],
];
const risk = a => a[3] * a[4];
const open = answers.filter(a => !a[2]).sort((x, y) => risk(y) - risk(x) || y[3] - x[3]);
const level = r => (r >= 15 ? "HIGH" : r >= 8 ? "MED " : "LOW ");
for (const p of [...new Set(answers.map(a => a[0]))]) {
  const all = answers.filter(a => a[0] === p), no = open.filter(a => a[0] === p);
  const sum = no.reduce((s, a) => s + risk(a), 0);
  console.log(p.padEnd(15), `yes ${all.length - no.length}/${all.length}`, ` open risk ${sum}`);
}
console.log("\nOrdered findings:");
for (const a of open) console.log(String(risk(a)).padStart(3), level(risk(a)), a[1]);
const pct = yes => Math.round(100 * yes / answers.length);
const yes = answers.length - open.length;
const after = rest => (rest.length ? risk(rest[0]) : 0);
console.log(`\nYes score now: ${pct(yes)}%, top open risk ${after(open)}`);
console.log(`Fix 3 easiest: ${pct(yes + 3)}%, top open risk ${after(open.slice(0, -3))}`);
console.log(`Fix 3 riskiest: ${pct(yes + 3)}%, top open risk ${after(open.slice(3))}`);
reliability     yes 0/3  open risk 47
security        yes 2/3  open risk 15
...
 20 HIGH Restore tested this quarter?
 15 HIGH Database survives a zone loss?
 15 HIGH No shared admin login?
...
Yes score now: 38%, top open risk 20
Fix 3 easiest: 62%, top open risk 20
Fix 3 riskiest: 62%, top open risk 12

শেষ তিন লাইনই এই পর্বের মূল শিক্ষা। সবচেয়ে সহজ তিনটি কাজ (load test, tag, রাতে dev server বন্ধ) করলেও score ৬২%, আবার সবচেয়ে ঝুঁকির তিনটি (restore, database, shared admin) করলেও ৬২%. Score এক, কিন্তু প্রথম ক্ষেত্রে সবচেয়ে বড় ঝুঁকি ২০ রয়েই গেল। দ্বিতীয় ক্ষেত্রে সেটি নেমে ১২. তাই শতাংশ দেখিয়ে নয়, ঝুঁকির ক্রম ধরে কাজ করুন। Impact আর likelihood-এর নম্বরও মতামত, মাপ নয়; এরা শুধু আলোচনাকে সাজায়।

Review-এর ফল টিকিটে না গেলে কয়েক সপ্তাহে হারিয়ে যায়। অনেক দল তাই checklist-টি সাধারণ লেখায় রাখে, যাতে Git-এ বদল দেখা যায়। ছোট একটি shell কাজ দিয়ে সেখান থেকেই সারাংশ বের করা যায়। নিচের block-এ নমুনা ফাইল heredoc দিয়ে তৈরি হচ্ছে।

#!/bin/bash
# Summarise a review checklist kept as plain text. Sample data.
set -euo pipefail
export LC_ALL=C
cat > review.csv <<'EOF'
reliability,restore tested,no,20,rafi
reliability,database multi-zone,no,15,rafi
reliability,app in 2+ zones,no,12,mitu
security,no shared admin,no,15,sadia
security,secrets outside code,yes,10,sadia
operations,deploys automated,yes,9,mitu
operations,runbook for alerts,no,9,mitu
performance,load tested,no,9,tanvir
cost,all resources tagged,no,8,tanvir
cost,budget alert,yes,6,tanvir
EOF

echo "== answers =="
cut -d, -f3 review.csv | sort | uniq -c

echo "== open risk per pillar =="
awk -F, '$3 == "no" { n[$1]++; r[$1] += $4 }
  END { for (p in n) printf "%3d %-12s %d open\n", r[p], p, n[p] }' review.csv |
  sort -k1,1nr -k2,2

echo "== fix first (risk >= 15) =="
awk -F, '$3 == "no" && $4 >= 15 { print $4, $5 ": " $2 }' review.csv | sort -k1,1nr -k2,2

echo "== work per owner =="
awk -F, '$3 == "no" { print $5 }' review.csv | sort | uniq -c | sort -k1,1nr -k2,2
== answers ==
      7 no
      3 yes
== open risk per pillar ==
 47 reliability  3 open
 15 security     1 open
...
== fix first (risk >= 15) ==
20 rafi: restore tested
15 rafi: database multi-zone
15 sadia: no shared admin
== work per owner ==
      2 mitu
      2 rafi
      2 tanvir
      1 sadia

awk -F, কমা দিয়ে কলাম ভাগ করে। $3 == "no" শুধু খোলা finding নেয়, আর r[$1] += $4 pillar ধরে ঝুঁকি জমায়। for (p in n)-এর ক্রম awk-এ নিশ্চিত নয়, তাই শেষে sort লাগে; -k1,1nr সংখ্যা ধরে বড় থেকে ছোট সাজায়। শেষ অংশটি একটি বিপদও দেখায়: সবচেয়ে বড় দুটি কাজ এক জনের (rafi) ঘাড়ে। Review কাজের বণ্টনও দেখিয়ে দেয়।

৫ · একটি তিন-স্তরের অ্যাপের পূর্ণ review

এবার আমাদের কাল্পনিক অনলাইন বাজার অ্যাপ। এটি একটি three-tier নকশা: web স্তর (২টি VM), app স্তর (২টি VM), data স্তর (একটি managed database). সব কিছু একই zone-এ। মাসিক বিল ধরে নিই $১০,০০০, অর্থাৎ বছরে $১,২০,০০০. ব্যবসার লক্ষ্য: সেবা মাসে ৯৯.৯% সময় পাওয়া যাবে, ডেটা হারানো চলবে সর্বোচ্চ ১৫ মিনিটের, আর RTO ৬০ মিনিট।

স্তম্ভFindingঝুঁকিFix
ReliabilityRestore কখনো পরীক্ষা হয়নি২০ HIGHমাসিক restore মহড়া, সময় মাপা
ReliabilityDatabase এক zone-এ১৫ HIGHঅন্য zone-এ standby, failover পরীক্ষা
Securityসবাই একটি admin login ব্যবহার করে১৫ HIGHব্যক্তিভিত্তিক identity, MFA, role
ReliabilityWeb ও app এক zone-এ১২ MEDদুই বা তিন zone-এ instance group
OperationsAlert আছে, runbook নেই৯ MEDপ্রধান তিন alert-এর runbook
Performanceঈদের চাপে load test হয়নি৯ MEDপর্ব ৬৮-এর ধারায় load test
CostResource-এ tag নেই৮ MEDTag নীতি, FinOps report
SustainabilityDev server সারা রাত চলে৪ LOWরাতে স্বয়ংক্রিয় বন্ধ

লক্ষ করুন, sustainability-র ঝুঁকি কম হলেও কাজটি সহজ, আর খরচও কমায়। ক্রম ঝুঁকি দিয়ে ঠিক হয়, কিন্তু সস্তা আর সহজ কাজ পাশাপাশি সেরে ফেলা যায়। শুধু সেটিকে অগ্রগতি ভেবে ভুল করবেন না।

Review-এর আগে ও পরে

The same three tiers, spread across two zones

একই তিন স্তর, এক zone থেকে দুই zone-এ আগে: সব এক zone-এ, zone-ই SPOF web × ২app × ২database পরে: দুই zone, একটি হারালেও কাজ চলে load balancer Zone aZone b webwebappappdatabase primarystandby sync
ছবি ৭৪.২ — নকশা বদলাল, কিন্তু আরও একটি শর্ত আছে: একটি zone হারালে বাকিটির একা চাপ সামলানোর headroom থাকতে হবে।

নিচের stepper-এ তালিকার এক নম্বর finding-টি প্রশ্ন থেকে বন্ধ হওয়া পর্যন্ত নেওয়া হয়েছে। খেয়াল করুন, fix করতে গিয়েই একটি নতুন সত্য বেরিয়ে আসে।

Finding: restore পরীক্ষিত নয়
ধাপ
Impact
Likelihood
Risk
RTO মাপা
লক্ষ্য RTO
অবস্থা
  1. প্রশ্ন। পর্যালোচক জিজ্ঞেস করলেন, “সর্বশেষ কবে backup থেকে restore করেছেন?” দলের উত্তর, “Backup তো প্রতি রাতে সবুজ।” এটি অন্য প্রশ্নের উত্তর। উত্তর পরিষ্কার হলো: কখনো না।
  2. প্রমাণ। Log দেখা হলো। Backup job ২০০ রাত সফল, কিন্তু restore-এর কোনো রেকর্ড নেই। অর্থাৎ ডেটা লেখা হচ্ছে, পড়া যাচ্ছে কি না কেউ জানে না। RTO এখনো অজানা।
  3. ঝুঁকির নম্বর। Restore না হলে ব্যবসা থেমে যাবে, তাই impact ৫. কখনো পরীক্ষা হয়নি, তাই likelihood ৪. ৫ × ৪ = ২০, HIGH. একজন owner ঠিক হলো। Owner ছাড়া finding মানে শুধু দুশ্চিন্তা।
  4. Fix বাছাই। তিনটি পথ: কিছু না করা, প্রতি মাসে আলাদা পরিবেশে মহড়া, অথবা সরাসরি বড় রূপান্তর। মহড়া সবচেয়ে সস্তা আর সবচেয়ে বেশি শেখায়, তাই সেটিই বাছা হলো। Database-এর standby আলাদা finding হিসেবে থাকল।
  5. প্রথম মহড়া। ৪০০ GB database ফেরত এলো, ডেটা ঠিক আছে। তাই likelihood ৪ থেকে ৩, ঝুঁকি ৫ × ৩ = ১৫. কিন্তু সময় লাগল ২ ঘণ্টা ১০ মিনিট, লক্ষ্যের দ্বিগুণের বেশি। Fix ব্যর্থ, আর এই খবরটিই মহড়ার সবচেয়ে বড় লাভ।
  6. দ্বিতীয় মহড়া, বন্ধ। Restore-এর ধাপ script হলো, আর runbook-এ দ্রুততর storage বেছে নেওয়ার নিয়ম যোগ হলো। এবার ৪৮ মিনিট, লক্ষ্যের ভেতরে। Likelihood ১, ঝুঁকি ৫ × ১ = ৫, LOW. Impact বদলায়নি, কারণ fix ঘটনার সম্ভাবনা ও সেরে ওঠা বদলেছে, ব্যবসার গুরুত্ব নয়। মহড়া প্রতি মাসে চলবে।

৬ · আগে multi-AZ, multi-region কখন লাভের

বিদ্যুৎ চলে গেলে বাড়িতে IPS কাজ দেয়। পুরো এলাকায় ফিডার নষ্ট হলে সেটি কয়েক ঘণ্টা চলে। পুরো শহর অন্ধকার হলে দরকার অন্য শহরের ব্যবস্থা। প্রতিটি ধাপে সুরক্ষা বাড়ে, দামও অনেক বাড়ে। Cloud-এ এই ধাপগুলোর নাম failure domain: যা একসাথে ভাঙতে পারে।

সুরক্ষার সিঁড়ি: বড় ব্যর্থতা, বেশি দাম

Each step protects against a larger failure and costs more

  1. Multi-AZzone হারানো সামলায়
  2. অন্য region-এ backupডেটা বাঁচে, সময় লাগে
  3. Warm standbyছোট কপি প্রস্তুত
  4. Active-activeদুই region একসাথে
  5. Multi-cloudprovider-ই বদল
ছবি ৭৪.৩ — Backup, pilot light, warm standby আর active-active-এর বিস্তারিত পর্ব ২৪-এ আছে।

Multi-AZ প্রথম ধাপ, কারণ zone-গুলো কাছাকাছি। Synchronous replication চলে, RPO প্রায় শূন্য, আর managed database-এ সাধারণত একটি setting-এই কাজটি হয়। Zone-গুলোর মাঝে ডেটা আনা-নেওয়ার ফি লাগতে পারে। তবে multi-AZ সব ঠেকায় না। কেউ ভুলে table মুছলে সেই মুছে ফেলাও মুহূর্তে standby-তে পৌঁছে যায়। সেজন্য backup আলাদা বিষয়।

Multi-region অন্য জগৎ। দূরত্বের কারণে replication সাধারণত asynchronous, তাই failover-এ শেষের কিছু ডেটা হারাতে পারে। DNS, secret, config, quota সবই দুই জায়গায় মেলাতে হয়। আর data residency-র নিয়ম থাকলে দ্বিতীয় region বেছে নেওয়াও সহজ নয়। Multi-region যুক্তিসঙ্গত হয় চারটি ক্ষেত্রে: চুক্তি বা নিয়ন্ত্রকের শর্ত আছে; ব্যবহারকারী দূরে দূরে, তাই latency কমাতে হবে; region হারানোর ক্ষতি সত্যিই বিশাল; অথবা RTO এত কম যে backup থেকে ফেরা যায় না।

Copy যোগ করলে ঝুঁকি গুণ হয়, এই হিসাব কেন ভুল

পর্ব ০৫-এ দেখেছেন, স্বাধীন copy-র downtime গুণ হয়। যেমন দুটি copy-র প্রতিটি ০.২% সময় বন্ধ থাকলে দুটি একসাথে বন্ধ থাকার সম্ভাবনা ০.০০২ × ০.০০২ = ০.০০০০০৪. এটি “স্বাধীন” ধরে হিসাব। বাস্তবে একটি খারাপ deploy, একটি ভুল config বা মেয়াদ-উত্তীর্ণ certificate সব copy-কে একসাথে ফেলে দেয়। এটিই correlated failure.

Reliability engineering-এ একে ধরার একটি সরল উপায় আছে, beta-factor model নামে। ধরুন প্রতিটি copy-র downtime-এর অংশ u, copy-র সংখ্যা n, আর b হলো সেই অংশ যা সবার একসাথে ঘটে। তাহলে:

U = b × u + ((1 − b) × u)n + ops

প্রথম পদ একসাথে পড়ার ঝুঁকি, যা copy বাড়িয়ে কমে না। দ্বিতীয় পদ স্বাধীন ব্যর্থতা, যা copy বাড়লে দ্রুত কমে। তৃতীয় পদ ops আমরা যোগ করেছি: জটিলতা থেকে আসা বাড়তি ঝুঁকি, যেমন ভুল failover. উদাহরণ: u = ০.২%, n = ৩, b = ০.১ হলে প্রথম পদ ০.০০০২, দ্বিতীয় পদ (০.০০১৮)³ ≈ ০.০০০০০০০০৬. মোট U প্রায় পুরোটাই প্রথম পদ, অর্থাৎ ৯৯.৯৮%. স্বাধীন ধরলে ৯৯.৯৯৯৯৯৯%-এর বেশি পাওয়া যেত, যা কল্পনা।

// Four designs: availability and yearly cost, with a correlated-failure factor b.
// ALL numbers are ASSUMED, for teaching. Model: U = b*u + ((1-b)*u)^n + ops
const HOURS = 8760, BILL = 120000, LOSS = 5000; // base bill $/year, outage $/hour
const designs = [ // name, copies n, copy downtime share u, b, ops risk, bill x, people $
  ["single-AZ", 1, 0.002, 0, 0, 1.0, 0],
  ["multi-AZ", 3, 0.002, 0.10, 0, 1.5, 0],
  ["multi-region", 2, 0.0002, 0.20, 0.00002, 2.2, 30000],
  ["multi-cloud", 2, 0.0002, 0.10, 0.0001, 2.6, 150000],
];
const unavail = (n, u, b, ops) => b * u + ((1 - b) * u) ** n + ops;
const rows = designs.map(([name, n, u, b, ops, x, people]) => {
  const U = unavail(n, u, b, ops), h = U * HOURS, spend = BILL * x + people;
  return { name, A: 100 * (1 - U), h, spend, loss: h * LOSS, total: spend + h * LOSS };
});
console.log("design        avail%   down h/yr   spend $   outage $    total $");
for (const r of rows) console.log(r.name.padEnd(13), r.A.toFixed(4), r.h.toFixed(2).padStart(8),
  Math.round(r.spend).toString().padStart(10), Math.round(r.loss).toString().padStart(9),
  Math.round(r.total).toString().padStart(10));
console.log("\nOutage $/hour at which the next step pays for itself:");
const ladder = [[0, 1], [1, 2], [1, 3]];
for (const [a, b] of ladder) {
  const be = (rows[b].spend - rows[a].spend) / (rows[a].h - rows[b].h);
  console.log(` ${rows[a].name} -> ${rows[b].name}: $${Math.round(be)}`);
}
console.log("\nMore correlation (b) shrinks the gain from extra copies:");
for (const b of [0, 0.1, 0.3, 0.5, 1]) {
  const az = unavail(3, 0.002, b, 0), reg = unavail(2, 0.0002, b, 0.00002);
  console.log(` b=${b.toFixed(1)}  multi-AZ ${(az * HOURS).toFixed(2)} h/yr`,
    ` multi-region ${(reg * HOURS).toFixed(2)} h/yr`);
}
console.log("\nIf multi-cloud ops risk were 0:",
  (100 * (1 - unavail(2, 0.0002, 0.10, 0))).toFixed(4) + "%");
design        avail%   down h/yr   spend $   outage $    total $
single-AZ     99.8000    17.52     120000     87600     207600
multi-AZ      99.9800     1.75     180000      8760     188760
multi-region  99.9940     0.53     294000      2629     296629
multi-cloud   99.9880     1.05     462000      5257     467257

Outage $/hour at which the next step pays for itself:
 single-AZ -> multi-AZ: $3805
 multi-AZ -> multi-region: $92968
 multi-AZ -> multi-cloud: $402531

More correlation (b) shrinks the gain from extra copies:
 b=0.0  multi-AZ 0.00 h/yr  multi-region 0.18 h/yr
 b=0.1  multi-AZ 1.75 h/yr  multi-region 0.35 h/yr
 b=0.3  multi-AZ 5.26 h/yr  multi-region 0.70 h/yr
 b=0.5  multi-AZ 8.76 h/yr  multi-region 1.05 h/yr
 b=1.0  multi-AZ 17.52 h/yr  multi-region 1.93 h/yr

If multi-cloud ops risk were 0: 99.9980%

সব সংখ্যা ধরে নেওয়া, কোনো provider-এর SLA বা মাপা তথ্য নয়। তবু আকারটি শিক্ষণীয়। Bill গুণক: multi-AZ ১.৫ কারণ তিন zone-এ ১.৫ গুণ ক্ষমতা লাগে (পর্ব ৬৮); multi-region ২.২ মানে সেই ১.৫-এর সাথে ছোট দ্বিতীয় region ০.৫ আর replication ০.২; multi-cloud ২.৬ মানে ১.৫ + ০.৭ + ০.৪, কারণ দ্বিতীয় provider-এর সবকিছু আলাদা, আর দুই provider-এর মাঝের egress বেশি। মানুষের খরচ $১,৫০,০০০ মানে $৩,০০০ দরে ৫০ person-month.

ঘণ্টায় $৫,০০০ ক্ষতিতে multi-AZ সবচেয়ে সস্তা। ক্ষতি ঘণ্টায় $৩,৮০৫-এর কম হলে single-AZ-ই হিসাবে সস্তা, আর সেটি লজ্জার কিছু নয়। Multi-cloud-এর availability এখানে multi-region-এর চেয়ে কম, কারণ ops ঝুঁকি ধরা হয়েছে ০.০১%. ops শূন্য ধরলে সে ৯৯.৯৯৮%-এ সবার ওপরে উঠে যায়। অর্থাৎ ফল ঠিক হচ্ছে এই একটি অনুমান দিয়ে: দুই provider-এর জটিলতা আপনার দল সামলাতে পারবে কি না। শেষের সারিটি দেখুন: b = ১ হলে multi-AZ-এ downtime আবার ১৭.৫২ ঘণ্টা, অর্থাৎ copy-র কোনো লাভই নেই। আর সবচেয়ে বড় কথা, গড় ক্ষতির এই হিসাব বিরল বিশাল দুর্ঘটনার ভয় পুরোপুরি ধরে না।

এবার একই সংখ্যা দিয়ে cost আর reliability-র সিদ্ধান্তটি ধাপে ধাপে দেখুন।

বছরের হিসাব (সব সংখ্যা ধরে নেওয়া, ঘণ্টায় ক্ষতি $৫,০০০)
নকশা
Availability
Downtime
খরচ
গড় ক্ষতি
মোট
  1. এখনকার অবস্থা। Single-AZ বিল সবচেয়ে কম, $১,২০,০০০. কিন্তু ১৭.৫২ ঘণ্টা × $৫,০০০ = $৮৭,৬০০ গড় ক্ষতি। মোট $২,০৭,৬০০. বিলে ধরা না পড়া এই ক্ষতিটিই লুকানো খরচ। ৯৯.৮০% লক্ষ্য ৯৯.৯%-এর নিচে।
  2. Multi-AZ. বিল বাড়ল $৬০,০০০, কিন্তু ক্ষতি কমল $৭৮,৮৪০. মোট $১,৮৮,৭৬০, আগের চেয়ে $১৮,৮৪০ কম। এখানে reliability আর cost একই দিকে গেল। ৯৯.৯৮% লক্ষ্যও পূরণ করে।
  3. Multi-region. Downtime আরও প্রায় ১.২ ঘণ্টা কমল, ক্ষতি কমল মাত্র $৬,১৩১. কিন্তু খরচ বাড়ল $১,১৪,০০০. মোট $২,৯৬,৬২৯. প্রতিটি বাড়তি “নাইন” আগেরটির চেয়ে অনেক দামি।
  4. সিদ্ধান্ত। Multi-region লাভের হতে ঘণ্টার ক্ষতি প্রায় $৯২,৯৬৮ হতে হবে, এখন $৫,০০০. তাই multi-AZ-এ থামা। SLO পূরণ হচ্ছে, বাড়তি নাইন দিয়ে ব্যবসার কিছু কেনা হচ্ছে না। ADR-এ লেখা হলো: ক্ষতি ঘণ্টায় $৫০,০০০ ছাড়ালে আবার ভাবা হবে।
  5. সস্তা বিমা। Region পুরো হারালে ডেটাই হারাবে, আর গড়ের হিসাব সেই ভয় ধরে না। তাই অন্য region-এ backup-এর কপি রাখা হলো, ধরে নিই বছরে $৬,০০০. প্রতিদিনের availability একই, মোট $১,৯৪,৭৬০. Multi-region-এর মূল্য না দিয়েই সবচেয়ে ভয়ের ঝুঁকিটি অনেকটা কমল।

৭ · Multi-cloud: কারণ আর আসল দাম

পর্ব ০৩-এ দুটি জিনিস আলাদা করেছিলাম। Portfolio multi-cloud: এক কাজ এক provider-এ, আরেক কাজ অন্য provider-এ। এটি সাধারণ আর তুলনামূলক সহজ। Spanning multi-cloud: একটিই কাজ দুই provider-জুড়ে চলে বা মুহূর্তে সরে যেতে পারে। Multi-cloud নিয়ে তর্কের প্রায় সবটাই এই দ্বিতীয়টি নিয়ে।

দুই শহরে একই কোম্পানির দুটি গুদাম চালানো এক কথা। কর্মী, হিসাবের খাতা, ট্রাকের নিয়ম সব এক। কিন্তু দুটি সম্পূর্ণ আলাদা পরিবহন কোম্পানির সাথে একই পণ্য একই সময়ে চালাতে হলে দুই ধরনের রসিদ, দুই নিয়ম, দুই দল কর্মী লাগে। আর মাল এক কোম্পানি থেকে অন্যটিতে নিতে প্রতিবার ভাড়া লাগে।

কারণকখন সত্যিকারেরআসল দাম বা ফাঁক
নিয়ন্ত্রক বা চুক্তিলিখিত শর্ত থাকলেশর্তটি আসলে কী চায়, পড়ে দেখা দরকার
Best-of-breed সেবাএকটি সেবা সত্যিই এগিয়ে থাকলেডেটা সরানোর egress, দুই IAM
Merger বা acquisitionঅন্য কোম্পানি কিনলে আপনিই ঘটেসরানোর পরিকল্পনা না থাকলে স্থায়ী জটিলতা
দামের দরকষাকষিবড় অঙ্কের বিলেCommitment ভাগ হলে ছাড় কমতে পারে
Provider-এর outageক্ষতি বিশাল, দল বড়মহড়া ছাড়া failover কাজ করে না
Lock-in-এর ভয়Exit-এর হিসাব থাকলেPortability-র দাম প্রতিদিন দিতে হয়

আসল খরচ লুকিয়ে থাকে চারটি জায়গায়। ডেটা: egress ফি আর দুই ধরনের database-এর মধ্যে replication. ধরুন প্রতি মাসে ২০ TB ডেটা অন্য cloud-এ যায়, ধরে নিই $০.০৫ প্রতি GB: ২০,০০০ × ০.০৫ = মাসে $১,০০০, বছরে $১২,০০০. মানুষ: দুই provider-এর IAM, network, নিরাপত্তা, on-call. সেবার গভীরতা: দুই provider-এ মিলে এমন সাধারণ সেবাই ব্যবহার করা যায়, তাই প্রতিটির সেরা অংশ হাতছাড়া হয়। দুর্বলতম অংশ: DNS, identity provider, CI/CD আর আপনার নিজের code দুই পাশেই এক, তাই সেগুলো ভাঙলে দুই cloud-ই একসাথে পড়ে।

প্রস্তাব বনাম বিকল্প (ধরে নেওয়া সংখ্যা)
ধাপ
বাড়তি খরচ
কমে যাওয়া downtime
কমে যাওয়া ক্ষতি
রায়
  1. প্রস্তাব। একটি বড় outage-এর খবর পড়ে কেউ বললেন, “Provider পড়ে গেলে আমরা শেষ। দুই cloud-এ active-active চালাই।” ভয়টি যুক্তিসঙ্গত, কিন্তু প্রস্তাবটি এখনো সমাধানে লাফ দিচ্ছে, সমস্যায় নয়।
  2. কারণ যাচাই। কোনো নিয়ন্ত্রক বা চুক্তির শর্ত নেই, দ্বিতীয় provider-এর কোনো বিশেষ সেবারও দরকার নেই, দল ছয় জনের। বাকি থাকে দুটি ভয়: provider-এর outage আর ভবিষ্যতে আটকে পড়া। এবার সেগুলোর দাম মাপা হবে।
  3. খরচ। Multi-AZ-এর $১,৮০,০০০ থেকে multi-cloud-এর $৪,৬২,০০০: বছরে $২,৮২,০০০ বেশি। এর মধ্যে $১,৫০,০০০ মানুষের সময়, যা বিলে দেখা যায় না, আর ছয় জনের দলের পক্ষে জোগাড় করাও কঠিন।
  4. লাভ। Downtime ১.৭৫ থেকে ১.০৫ ঘণ্টা, ০.৭০ ঘণ্টা কম। × $৫,০০০ = বছরে প্রায় $৩,৫০৩ বাঁচে। $২,৮২,০০০ দিয়ে $৩,৫০৩! লাভের হতে ঘণ্টার ক্ষতি প্রায় $৪,০২,৫৩১ হতে হবে।
  5. ঝুঁকির বিকল্প। “Provider পুরো হারানো”-র ভয় বিরল হলেও ভয়ংকর, তাই উপেক্ষা নয়। সস্তা উত্তর: অন্য provider-এ ডেটার backup (ধরে নিই বছরে $৯,০০০), আর বছরে একবার exit মহড়া ($৪,০০০). মোট $১৩,০০০. সেবা তখনই ফিরবে না, কিন্তু ব্যবসার ডেটা বেঁচে থাকবে।
  6. ADR. সিদ্ধান্ত: এখন multi-cloud নয়। লেখা হলো কেন, আর কখন আবার ভাবা হবে: নিয়ন্ত্রকের নতুন শর্ত, কোনো বড় গ্রাহকের চুক্তি, অন্য কোম্পানি কেনা, বা ঘণ্টার ক্ষতি অনেক বেড়ে যাওয়া। “না” চিরকালের নয়, এই হিসাবের জন্য।

কিছু প্রতিষ্ঠানের জন্য উত্তর সত্যিই “হ্যাঁ” হতে পারে: খুব বড় ব্যাংক, জরুরি সরকারি সেবা, বা এমন SaaS যার গ্রাহকরা নিজের cloud-এ পণ্যটি চান। শেষের ক্ষেত্রটিতে multi-cloud ব্যবসার পণ্যের অংশ, নিছক বিমা নয়। দিকটি হলো: হিসাব করে হ্যাঁ বলুন, ভয় থেকে নয়।

৮ · Lock-in-এর স্তর, abstraction-এর দাম আর exit plan

ভাড়া বাড়িতে আপনি নিজের টাকায় রান্নাঘরে দেয়াল-ঘেঁষা আলমারি বানালেন। রান্না সহজ হলো, প্রতিদিন সময় বাঁচল। কিন্তু বাড়ি ছাড়লে আলমারি নেওয়া যাবে না। এতে আলমারি বানানো ভুল ছিল না; এর দাম কত, জেনে নেওয়াটাই বুদ্ধির কাজ। Vendor lock-in-ও তাই। Lock-in কোনো পাপ নয়, এটি একটি খরচ, যা সরার দিনে দিতে হয়।

ডেটা

Egress ফি, স্থানান্তরের সময়, বিশেষ format. ডেটা বড় হলে অ্যাপও তার পাশে থাকতে চায়, একে বলে data gravity.

মাপ: TB, দিন, টাকা

API আর সেবা

Serverless trigger, proprietary database, IAM policy, queue-এর নিজস্ব আচরণ। এসব code আর নকশায় মিশে থাকে।

মাপ: person-month

দক্ষতা

দলের সনদ, অভ্যাস, runbook, dashboard, on-call-এর স্মৃতি। সবচেয়ে কম হিসাবে আসে, অথচ ধীরে বদলায়।

মাপ: মাস, নিয়োগ

Abstraction-এর দাম

Lock-in কমানোর সহজ উত্তর শোনা যায়: সব provider-এর সামনে নিজের একটি স্তর বসান, হয়ে যান cloud-agnostic. শুনতে ভালো, কিন্তু এই স্তরের চারটি দাম আছে। সবচেয়ে ছোট সাধারণ অংশেই আটকে যেতে হয়। স্তরটি নিজে বানাতে আর চালাতে হয়। প্রতি provider-এর নতুন সুবিধা দেরিতে আসে। আর নিচের পার্থক্য ঠিকই বাইরে ফুটে বের হয়, যাকে বলে leaky abstraction: দুই database-এর transaction-এর আচরণ এক API-তে ঢাকা পড়ে না।

তাই সব জায়গায় সমান abstraction না করে যুক্তিসঙ্গত জায়গায় করুন। Container, Kubernetes, PostgreSQL-সামঞ্জস্য, OpenTelemetry আর IaC তুলনামূলক কম দামে অনেকটা portability দেয়। আপনার ব্যবসার code-এ provider-এর SDK সরাসরি না ডেকে একটি ছোট adapter রাখা প্রায়ই সস্তা বিমা। কিন্তু Terraform-এর code কখনো “provider বদলালেই চলবে” না; প্রতিটি resource আলাদা, পর্ব ৫২-এ দেখেছেন।

// Rough exit estimate: what would leaving this provider cost? ALL numbers ASSUMED.
const P = { perGB: 0.05, gbps: 1, util: 0.7, personMonth: 3000, trainPerHead: 2000,
  team: 6, parallelMonths: 3, monthlyBill: 10000, buffer: 0.3 };
function exitCost(dataTB, rewritePM) {
  const gb = dataTB * 1000;                      // decimal: 1 TB = 1000 GB
  const data = gb * P.perGB;
  const days = (gb * 1e9 * 8) / (P.gbps * 1e9 * P.util) / 86400;
  const rewrite = rewritePM * P.personMonth;
  const training = P.team * P.trainPerHead;
  const parallel = P.parallelMonths * P.monthlyBill;
  const total = (data + rewrite + training + parallel) * (1 + P.buffer);
  return { data, days, rewrite, training, parallel, total };
}
const show = (name, c) => console.log(name.padEnd(20), `data $${c.data}`,
  ` rewrite $${c.rewrite}`, ` total $${Math.round(c.total)}`);
const heavy = exitCost(50, 60), portable = exitCost(50, 18);
show("deep managed use", heavy);
show("portable design", portable);
console.log(`training $${heavy.training}, parallel run $${heavy.parallel}, buffer 30%`);

console.log("\nData size against one 1 Gbps link at 70%:");
for (const tb of [5, 50, 500, 5000]) {
  const c = exitCost(tb, 60);
  console.log(String(tb).padStart(5), "TB:", `$${c.data}`.padEnd(9),
    `${c.days.toFixed(1)} days,`, `${(100 * c.data / c.total).toFixed(1)}% of the total`);
}
const saved = heavy.total - portable.total, abstraction = 36000; // $ per year, ASSUMED
console.log(`\nPortability saves $${Math.round(saved)} if you ever leave.`);
console.log(`It costs $${abstraction} every year. Break-even chance of leaving:`,
  `${(100 * abstraction / saved).toFixed(1)}% a year`);
console.log("At a 5% yearly chance, expected saving:", `$${Math.round(0.05 * saved)} a year`);
deep managed use     data $2500  rewrite $180000  total $291850
portable design      data $2500  rewrite $54000  total $128050
training $12000, parallel run $30000, buffer 30%

Data size against one 1 Gbps link at 70%:
    5 TB: $250      0.7 days, 0.1% of the total
   50 TB: $2500     6.6 days, 0.9% of the total
  500 TB: $25000    66.1 days, 7.8% of the total
 5000 TB: $250000   661.4 days, 40.7% of the total

Portability saves $163800 if you ever leave.
It costs $36000 every year. Break-even chance of leaving: 22.0% a year
At a 5% yearly chance, expected saving: $8190 a year

হাতে মিলিয়ে নিন: ৫০ TB = ৫০,০০০ GB × $০.০৫ = $২,৫০০. গভীর managed ব্যবহারে ৬০ person-month × $৩,০০০ = $১,৮০,০০০. এদের সাথে training $১২,০০০ আর parallel run $৩০,০০০ যোগ করে $২,২৪,৫০০, ৩০% বাফারে $২,৯১,৮৫০. ৫০ TB-তে ডেটার ফি মোট খরচের ১%-এরও কম। আসল দাম code বদলানোয়। এজন্যই “egress ফি” lock-in-এর পুরো গল্প নয়। তবে ৫,০০০ TB-তে ছবি বদলায়: ফি ৪০.৭%, আর এক লিংকে ৬৬১ দিন! তখন data gravity সত্যিকারের বাধা, লাগে বেশি লিংক বা provider-এর ভৌত ডেটা-সরানোর সেবা।

শেষ অংশটি abstraction-এর সিদ্ধান্ত। Portable নকশা সরার দিনে $১,৬৩,৮০০ বাঁচায়, কিন্তু প্রতি বছর ধরে নেওয়া $৩৬,০০০ নেয়। বছরে চলে যাওয়ার সম্ভাবনা ২২%-এর বেশি না হলে এটি হিসাবে লাভের নয়। ৫% সম্ভাবনায় গড় সঞ্চয় মাত্র $৮,১৯০. সংখ্যাগুলো বদলে নিজের ক্ষেত্রে দেখুন।

Exit plan: বেরোনোর পথ লিখে রাখা

Exit plan মানে সত্যিই চলে যাওয়ার সিদ্ধান্ত নয়। এটি অগ্নিনির্বাপণের মহড়ার মতো: আশা করি লাগবে না, কিন্তু পথ জানা আছে। একটি ভালো exit plan এক-দুই পাতার, আর এতে থাকে:

  • কারণের তালিকা: কোন ঘটনায় এই plan চালু হবে, যেমন দাম হঠাৎ বাড়া, নিয়ন্ত্রকের নির্দেশ, বা সেবা বন্ধ।
  • ডেটার মানচিত্র: কী ডেটা কোথায়, কত বড়, কোন format-এ বের করা যায়। Backup-এর একটি কপি provider-স্বাধীন format-এ রাখা গেলে ভালো।
  • নির্ভরতার তালিকা: কোন সেবার বিকল্প কী, আর কোনটি বদলাতে কত person-month.
  • সময় আর দাম: উপরের মতো হিসাব, বছরে একবার হালনাগাদ।
  • মহড়া: অন্তত ডেটা এক ধাপ বের করে অন্য জায়গায় খুলে দেখা। পরীক্ষা না করা plan শুধু আশা।

৯ · Sustainability আর carbon, সংক্ষেপে

ডেটা সেন্টার বিদ্যুৎ আর ঠান্ডা করার ব্যবস্থায় চলে। Sustainability স্তম্ভের প্রশ্ন সহজ: একই কাজ কম শক্তিতে করা যায়? খরচের সাথে এর মিল অনেক, কারণ অলস server বন্ধ করলে টাকা আর বিদ্যুৎ দুটোই বাঁচে। ছবির তীর E সেটিই দেখায়।

  • Provider-এর দিক: PUE হলো ডেটা সেন্টারের মোট বিদ্যুৎ ÷ IT যন্ত্রের বিদ্যুৎ। মান ১.০-এর যত কাছে, cooling-এর মতো বাড়তি খরচ তত কম।
  • গ্রাহকের দিক: rightsizing, autoscaling, অদরকারি ডেটা মোছা, কম চলা dev পরিবেশ বন্ধ, দক্ষ code. ব্যাচের কাজ দিনের যে সময়ে সস্তা বা পরিষ্কার বিদ্যুৎ থাকে তখন চালানো যায়।
  • মাপ: Carbon footprint হিসাব করতে বিদ্যুতের সাথে carbon intensity গুণ করতে হয়। বিদ্যুৎ-উৎস দেশ ও সময়ভেদে আলাদা। তাই region বদলালেও সংখ্যা বদলাতে পারে।

তিন বড় provider-ই গ্রাহকের জন্য carbon হিসাবের কিছু সরঞ্জাম দেয়। সেগুলোর পদ্ধতি, দেরি ও ব্যাপ্তি এক নয়, তাই provider-ভেদে তুলনা সাবধানে করুন। “১০০% নবায়নযোগ্য” জাতীয় দাবিও প্রায়ই বছরের হিসাব বা সনদ কেনার ভিত্তিতে হয়; প্রতি মুহূর্তের সবুজ বিদ্যুৎ বোঝায় না। এই ক্ষেত্রের নিয়ম আর হিসাব দ্রুত বদলাচ্ছে, তাই দাবিগুলো যাচাই করে নিন।

আরও গভীরে: Treynor, Dahlin, Rau ও Beyer-এর “The Calculus of Service Availability” (ACM Queue, ২০১৭) দেখায়, কোনো সেবা তার অপরিহার্য নির্ভরতার চেয়ে বেশি available হতে পারে না, যদি না নির্ভরতার ব্যর্থতা সামলানোর ব্যবস্থা থাকে। Amazon Builders' Library-র লেখায় static stability ধারণাটি আছে: ব্যর্থতার সময়ে control plane থেকে কিছু না চেয়েই data plane যেন চলতে থাকে, তাই আগেই ক্ষমতা তুলে রাখা হয়। আর beta-factor ধারণা এসেছে পারমাণবিক বিদ্যুৎকেন্দ্রের ঝুঁকি বিশ্লেষণের ধারা থেকে। বড় সিস্টেমে blast radius কমাতে cell-ভিত্তিক নকশা হয়, যেখানে গ্রাহকদের ছোট ছোট স্বাধীন ভাগে রাখা হয়।

পরীক্ষা ও ইন্টারভিউতে:

  • AWS Well-Architected-এর ছয় স্তম্ভ? Operational excellence, security, reliability, performance efficiency, cost optimization, sustainability.
  • Multi-AZ আর multi-region-এর মূল পার্থক্য? Multi-AZ এক region-এ, সাধারণত synchronous; multi-region দূরে, সাধারণত asynchronous, তাই RPO শূন্যের বেশি হতে পারে।
  • Copy বাড়ালেই availability কেন বাড়ে না? Correlated failure: খারাপ deploy বা ভুল config সব copy-তে একসাথে লাগে।
  • Multi-cloud কখন যুক্তিসঙ্গত? লিখিত শর্ত, পণ্যের প্রয়োজন, acquisition, অথবা হিসাবে ক্ষতি খরচকে ছাড়ালে।
  • Lock-in কমাবেন কীভাবে? Container, খোলা format, পাতলা adapter আর পরীক্ষিত exit plan; সব কিছুতে abstraction নয়।

১০ · AI-এর যুগে নকশা review

AI খুব দ্রুত একটি review-র খসড়া দিতে পারে, আর সেটি পড়তেও সুন্দর লাগে। সমস্যা হলো, সে আপনার SLO, ঘণ্টার ক্ষতি, দলের আকার বা চুক্তি জানে না। তাই সে প্রায়ই “সেরা অনুশীলন” বলে সবচেয়ে দামি নকশা দেয়। Cloud-এর সাধারণ ভুলগুলোও আসে: * অনুমতি, 0.0.0.0/0 খোলা port, public storage, code-এ secret, latest tag, মুছে যাওয়া API version, আর বানানো flag ও resource argument. সাথে যোগ হয়: নিজে থেকে multi-region-এর পরামর্শ, স্বাধীন ধরে availability গুণ, egress বাদ দেওয়া, ভুল SLA সংখ্যা, আর সতর্কতা ছাড়া terraform destroy, kubectl delete বা rm -rf.

AI-কে সিদ্ধান্তদাতা নয়, প্রশ্নকর্তা হিসেবে ব্যবহার করুন। নিজের অ্যাপের নকশা দিন, আসল নাম, account id, IP বা secret বাদ দিয়ে, আর উত্তরে অনুমানগুলো আলাদা করে চান।

তুমি একজন cloud architecture reviewer. নিচে একটি three-tier অ্যাপের নকশা আছে। আসল নাম, account id আর secret সরিয়ে দিয়েছি। ব্যবসার লক্ষ্য: SLO ৯৯.৯%, RTO ৬০ মিনিট, RPO ১৫ মিনিট, ঘণ্টায় ক্ষতি আনুমানিক [সংখ্যা], দলে [সংখ্যা] জন। নকশা: [এখানে নকশা লিখুন] ১. ছয়টি স্তম্ভ ধরে প্রতিটিতে ৩টি করে প্রমাণ-চাওয়া প্রশ্ন দাও, শুধু yes/no নয়। ২. দুর্বলতাগুলো impact × likelihood ধরে সাজাও, আর প্রতিটির নম্বরের কারণ লেখো। ৩. প্রতিটি fix-এর দাম আর কোন স্তম্ভের ক্ষতি হবে, সেটি বলো। ৪. Multi-region বা multi-cloud বললে আগে ক্ষতির হিসাব দেখাও। সংখ্যা না জানলে অনুমান বলে চিহ্নিত করো, বানিও না। ৫. প্রতিটি provider-তথ্যের জন্য কোন official দলিল দেখব, তার নাম দাও। কোনো destructive কমান্ড লিখবে না।

AI-এর review হাতে পেলে যাচাইয়ের চেকলিস্ট

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

প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন, তারপর “→ উত্তর” চাপুন।

প্র ০১Review-তে ৯০% নম্বর পাওয়া দলকে কি নিরাপদ বলা যায়? নম্বর ছাড়া এত প্রশ্নের মানে কী?

নম্বর দুটি কারণে বিপজ্জনক। প্রথমত, সব প্রশ্নের ওজন সমান থাকে। “সব resource-এ tag আছে” আর “restore পরীক্ষিত”, দুটিই একটি করে নম্বর। আমাদের সিমুলেটরে তিনটি সহজ কাজে যা score বেড়েছে, তিনটি কঠিন কাজেও ততটাই। অথচ ঝুঁকিতে আকাশ-পাতাল পার্থক্য। ৯০% পাওয়া দলের বাকি ১০%-এর ভেতরেই থাকতে পারে “backup কখনো পরীক্ষা হয়নি”।

দ্বিতীয়ত, নম্বরকে লক্ষ্য বানালে মানুষ নম্বরের জন্যই কাজ করে। অর্থনীতিবিদ Charles Goodhart-এর নামে পরিচিত নিয়মটি (১৯৭৫ সালের একটি পর্যবেক্ষণ থেকে, পরে সংক্ষেপে বলা হয়) এটিই বলে: কোনো মাপকাঠি লক্ষ্য হয়ে গেলে সেটি ভালো মাপকাঠি থাকে না। Review-তে এর চেহারা হলো “yes” লিখে ফেলা, যেখানে প্রমাণ দুর্বল। দলকে যদি নম্বরের জন্য বিচার করা হয়, তারা দুর্বলতা লুকাবে। Review-এর পুরো মূল্য হলো খোলা স্বীকারোক্তি, তাই এটি চালানো হয় দোষ না খোঁজার ধরনে, যেমনটা পর্ব ৬৭-এর postmortem-এ।

তবে সংখ্যা পুরোপুরি বাদ দেওয়ার দরকার নেই। Impact × likelihood আলোচনাকে সাজায়, আর সময়ের সাথে “খোলা HIGH finding-এর সংখ্যা” একটি কাজের সূচক। পার্থক্যটি হলো, সংখ্যা এখানে অগ্রাধিকার ঠিক করে, দলের মূল্য নয়। নম্বরগুলো মতামত বলেই একা না বসিয়ে দুজনে মিলে দিন। মতভেদ হলেই আসল কথা বেরিয়ে আসে। একজন বলছেন likelihood ২, আরেকজন ৪? তাহলে দুজনের জানা তথ্য আলাদা, আর সেই পার্থক্যটিই review-এর সবচেয়ে দামি আলোচনা।

মূল উপলব্ধি: Review-এর ফল একটি সংখ্যা নয়, একটি সাজানো কাজের তালিকা, যার প্রতিটির একজন owner আর যাচাইয়ের প্রমাণ আছে।

প্র ০২Provider-এর বড় outage-গুলো থেকে multi-region-এর কী শেখার আছে? দুই region থাকলেই কি নিরাপদ?

২০১৭ সালের ফেব্রুয়ারিতে AWS-এর একটি region-এ S3-এর বড় বিভ্রাট হয়। Provider-এর প্রকাশিত ব্যাখ্যা অনুযায়ী, একটি ভুল কমান্ড পরিকল্পনার চেয়ে বেশি server সরিয়ে দিয়েছিল, আর পুনরায় চালু হতে কয়েক ঘণ্টা লেগেছিল। যেসব অ্যাপ এক region-এর ওপর নির্ভর করত, তারা প্রভাবিত হয়। এখানে multi-region-এর পক্ষে যুক্তি পরিষ্কার: ঘটনাটি ছিল একটি region-কেন্দ্রিক।

কিন্তু গল্পের আরেক দিক আছে। ২০২১ সালের মার্চে Azure Active Directory-র একটি বড় বিভ্রাট হয়, signing key-এর পরিবর্তনের সাথে যুক্ত। ২০২৫ সালের জুনে Google Cloud-এর একটি ব্যাপক বিভ্রাটের মূলে ছিল একটি control-plane সেবার ত্রুটি, যা বহু region-এ একসাথে ছড়িয়ে পড়ে। এসব ঘটনায় বিভিন্ন region আলাদা ছিল না, কারণ identity বা নীতি বিতরণের মতো সেবা অনেক সময় বৈশ্বিক। এটিই বড় মাপের correlated failure. বিস্তারিত provider-এর প্রকাশিত প্রতিবেদনে পড়ে নিন; এখানে শুধু আকারটি দেখুন।

এর সাথে আপনার নিজের অংশ যোগ করুন। একই pipeline একই খারাপ release দুই region-এ পাঠাতে পারে। তাই release ধাপে ধাপে, এক region পরে আরেক region, এই নিয়ম অনেক সময় দ্বিতীয় region-এর চেয়েও বেশি কাজ দেয়। Failover-ও নিজে একটি ঝুঁকি। DNS বা control plane ভাঙলে failover-এর পথই আটকে যেতে পারে, যেজন্য static stability গুরুত্বপূর্ণ।

মহড়াহীন multi-region প্রায়ই একটি দামি বিশ্বাস। দ্বিতীয় region-এ quota কম, certificate মেয়াদোত্তীর্ণ, পুরোনো config, এমন সমস্যা ঘটনার দিনেই ধরা পড়ে। তাই দ্বিতীয় region রাখলে নিয়মিত মহড়া দিন, পারলে সত্যিকারের traffic-এর একটি অংশ সেখানে পাঠান। যে পথ প্রতিদিন ব্যবহার হয়, সেটিই বিপদের দিনে কাজ করে।

মূল উপলব্ধি: Region সংখ্যা নয়, স্বাধীনতা গুরুত্বপূর্ণ। জিজ্ঞেস করুন, দুই copy-র মধ্যে কী কী এক, আর সেই জিনিস ভাঙলে কী হবে।

প্র ০৩Open source আর self-managed হলেই কি lock-in থাকে না?

Open source lock-in কমায়, কিন্তু মুছে দেয় না। সবচেয়ে বড় সুবিধা হলো code-এর ওপর কারও একক দখল নেই, আর একাধিক provider একই সফটওয়্যার চালাতে পারে। PostgreSQL এর ভালো উদাহরণ: অনেক provider-এর managed সংস্করণ আছে, আর ডেটা বের করার মানসম্মত পথও আছে।

কিন্তু লাইসেন্সও বদলায়। ২০২১ সালে Elastic তার Elasticsearch-এর লাইসেন্স বদলায়, পরে AWS-এর নেতৃত্বে OpenSearch নামের fork আসে। ২০২৩ সালে HashiCorp, Terraform-সহ নিজের পণ্য Business Source License-এ নেয়, পরে Linux Foundation-এর অধীনে OpenTofu আসে। ২০২৪ সালে Redis-এর লাইসেন্স বদলের পরে Valkey fork তৈরি হয়। পরে এই পণ্যগুলোর কিছু লাইসেন্সে আবার বদল এসেছে, তাই বর্তমান অবস্থা দেখে নিন। শিক্ষাটি হলো, “open source” চিরস্থায়ী প্রতিশ্রুতি নয়; ভালো খবর হলো, fork-এর পথ খোলা থাকে।

আরেকটি lock-in হলো দক্ষতা আর পরিচালনার। Kubernetes নিজে খোলা, কিন্তু একটি দল যদি একটি provider-এর load balancer, IAM আর storage-এর annotation ধরে সবকিছু বানায়, তবে সরতে গিয়ে সেগুলো আবার লিখতে হয়। আবার self-managed মানে আপনি provider-এর হাত থেকে মুক্ত হয়ে নিজের দলের হাতে বন্দি হলেন। যে দুইজন cluster বোঝেন, তাঁরা চলে গেলে কী হবে? এটিও এক ধরনের lock-in, তবে এখানে আটকে থাকা হয় মানুষের ওপর।

আর আছে সুযোগের খরচ। যে সময় দল database চালাতে দিল, সেই সময় পণ্যে যায়নি। ছোট দলের জন্য proprietary managed সেবা প্রায়ই সঠিক পছন্দ, যদি দাম জেনে নেওয়া হয়। পরিষ্কার সীমারেখা, খোলা ডেটা format আর নিয়মিত export থাকলে সেই সিদ্ধান্তের ঝুঁকিও অনেকটা কমে যায়।

মূল উপলব্ধি: প্রশ্নটি “lock-in আছে কি না” নয়। প্রশ্ন হলো “কার ওপর, কতটা, আর ছাড়াতে কত লাগবে”, আর সেই দামের বদলে আপনি প্রতিদিন কী পাচ্ছেন।

প্র ০৪যে exit plan হয়তো কখনো ব্যবহার হবে না, তার পেছনে সময় দেওয়া কি অপচয়?

অগ্নিনির্বাপক যন্ত্র বেশিরভাগ বাড়িতে কখনো ব্যবহার হয় না, তবু সেটি অপচয় নয়। Exit plan-এর মূল্য তিন জায়গায়। প্রথমত, এটি চলে যাওয়ার দিনের বাইরেও কাজ দেয়: ডেটার মানচিত্র আর নির্ভরতার তালিকা disaster recovery, নিরাপত্তা ও audit-এ লাগে। আপনার ডেটা কোথায়, কেউ না জানলে সেটি প্রথমে একটি পরিচালনার সমস্যা।

দ্বিতীয়ত, দরকষাকষি। Provider দাম বাড়ালে বা চুক্তি নবায়নের সময় “আমরা ছয় মাসে সরতে পারি, হিসাব আছে” আর “জানি না” এক অবস্থান নয়। হুমকি নয়, শুধু জানা বিকল্প। তৃতীয়ত, ভবিষ্যতের সিদ্ধান্ত। প্রতিটি নতুন proprietary সেবা নেওয়ার সময় exit-এর হিসাবে কত যোগ হলো, সেটি দেখা যায়। তখন “নেব না” নয়, “জেনে নেব” বলা যায়।

নিয়ন্ত্রকরাও এই দিকে তাকাচ্ছেন। ইউরোপীয় ইউনিয়নের আর্থিক খাতের Digital Operational Resilience Act বিধি (সংক্ষেপে DORA, DevOps-এর DORA metric নয়; ২০২৫ সাল থেকে প্রযোজ্য) গুরুত্বপূর্ণ ICT সেবার জন্য exit কৌশলের কথা বলে। EU Data Act-ও cloud বদলের বাধা কমানোর দিকে গেছে। বাংলাদেশসহ অন্যান্য দেশের নিয়ম আলাদা হতে পারে; আপনার খাতের বর্তমান নির্দেশনা দেখে নিন। লক্ষণীয় দিক হলো, cloud-নির্ভরতা এখন শুধু প্রকৌশলের নয়, ব্যবসা-ঝুঁকির প্রশ্ন।

তবে সীমা রাখতে হবে। ছোট দলের জন্য বিশাল plan নিজেই অপচয়। প্রথমে দুই পাতা, একটি হিসাব, আর ডেটা বের করার একটি ছোট মহড়াই যথেষ্ট। Plan লিখে ফেলে রাখলে দ্রুত পুরোনো হয়ে যায়, তাই বছরে একবার মেলানোর একজন owner দরকার। পূর্ণ migration মহড়ার দরকার সাধারণত হয় না, এক টুকরো নিলেই অনেক শেখা যায়।

মূল উপলব্ধি: Exit plan চলে যাওয়ার জন্য নয়; নিজের নির্ভরতা জেনে থাকার জন্য। আর জানা নির্ভরতা একটি সিদ্ধান্ত, না-জানা নির্ভরতা একটি ঝুঁকি।

প্র ০৫কম বিদ্যুতে বেশি কাজ করলে কি মোট carbon কমে যায়? Cloud কি নিশ্চিতভাবে পরিবেশের জন্য ভালো?

দক্ষতা বাড়লে মোট ব্যবহার সবসময় কমে না। ১৮৬৫ সালে William Stanley Jevons তাঁর The Coal Question বইয়ে দেখান, বাষ্প ইঞ্জিন দক্ষ হওয়ার পরে ব্রিটেনে কয়লার ব্যবহার কমেনি, বরং বেড়েছিল, কারণ কাজটি সস্তা হওয়ায় আরও বেশি কাজে সেটি লাগানো হলো। একে Jevons paradox বলা হয়। Cloud-এও একই প্রশ্ন ওঠে। প্রতি অনুরোধের শক্তি কমলে যদি অনুরোধ দশ গুণ বাড়ে, মোট শক্তি বাড়ে। AI-এর চাহিদা বাড়ার পরে ডেটা সেন্টারের বিদ্যুৎ নিয়ে আলোচনা এজন্যই জোরদার হয়েছে।

Cloud-এর পক্ষে যুক্তিও আছে। বড় ডেটা সেন্টারে PUE সাধারণত ভালো, আর অনেক গ্রাহকের কাজ এক জায়গায় থাকায় যন্ত্র কম অলস থাকে। নিজের ঘরের প্রায়-খালি server-এর তুলনায় এটি বাস্তব উন্নতি হতে পারে। কিন্তু তুলনা সব সময় সরল নয়। বিদ্যুতের উৎস, যন্ত্র বানানোর embodied carbon, পানির ব্যবহার, ডেটার দূরত্ব, সব মিলিয়ে উত্তর বদলায়। Provider-এর হিসাব কতটা পূর্ণ, সেটিও ভিন্ন। অনেক হিসাবে উৎপাদন আর সরবরাহ-শৃঙ্খলের নিঃসরণ (Scope 3) মাপা সবচেয়ে কঠিন।

তাই আপনি যা নিয়ন্ত্রণ করেন, সেদিকে তাকান। অলস server, চিরদিনের log, অকারণ দ্বিগুণ copy, দরকারের চেয়ে বড় instance, এসব বন্ধ করলে বিল আর শক্তি দুটোই কমে। আর এখানে স্তম্ভের টানাপোড়েন আছে: ৩ zone-এ দেড় গুণ ক্ষমতা মানে অলস থাকা যন্ত্রের শক্তিও ব্যবহার হচ্ছে। Reliability-র জন্য সেটি মূল্যবান হতে পারে। শুধু প্রশ্নটি করা দরকার, এই copy-টি আসলে কোন ঝুঁকি কমায়?

মূল উপলব্ধি: “Cloud মানেই সবুজ” বা “cloud মানেই অপচয়”, দুটিই অতি-সরল। দাবি মাপুন, উৎস জিজ্ঞেস করুন, আর আগে নিজের অপচয় বন্ধ করুন।

অনুশীলন

হিসাব, ভবিষ্যদ্বাণী আর সমালোচনা। কোনো cloud account লাগবে না।

  1. হিসাব: তিনটি copy-র প্রতিটি ০.৫% সময় বন্ধ থাকে। (ক) পুরো স্বাধীন ধরলে বছরে downtime কত? (খ) b = ০.০৫ ধরে U, availability আর বছরের downtime বের করুন। ৩৬৫ দিনের বছর ধরুন, ops = ০.

    (ক) U = ০.০০৫³ = ০.০০০০০০১২৫. বছরে ৮,৭৬০ ঘণ্টা × U ≈ ০.০০১১ ঘণ্টা, অর্থাৎ প্রায় ৩.৯ সেকেন্ড।

    (খ) প্রথম পদ ০.০৫ × ০.০০৫ = ০.০০০২৫. দ্বিতীয় পদ (০.৯৫ × ০.০০৫)³ = (০.০০৪৭৫)³ ≈ ০.০০০০০০১০৭. U ≈ ০.০০০২৫০১১, availability ≈ ৯৯.৯৭৫%, downtime ≈ ২.১৯ ঘণ্টা। মাত্র ৫% সম্পর্ক ধরতেই ৩.৯ সেকেন্ড হয়ে গেল ২ ঘণ্টার বেশি। প্রায় পুরো downtime এসেছে প্রথম পদ থেকে, তাই চতুর্থ copy যোগ করে আর লাভ নেই; b কমানোই পথ।

  2. আউটপুট অনুমান করুন: নিচের কমান্ডের আউটপুট কী হবে? cost কেন থাকবে বা থাকবে না?
    printf '%s\n' 'security,no,15' 'cost,yes,6' 'reliability,no,20' 'security,no,9' |
      awk -F, '$2=="no"{r[$1]+=$3} END{for(p in r) print r[p], p}' |
      sort -k1,1nr
    24 security
    20 reliability

    $2=="no" শুধু খোলা সারি নেয়, তাই cost,yes,6 বাদ। Security-র দুটি সারি জমে ১৫ + ৯ = ২৪. sort -k1,1nr বড় সংখ্যা আগে আনে। লক্ষ করুন, একটি ২০-এর finding থাকলেও security ওপরে, কারণ এখানে যোগফল দেখা হচ্ছে। তাই pillar-এর যোগফলের পাশাপাশি একক সর্বোচ্চ ঝুঁকিও দেখা দরকার।

  3. নকশা সমালোচনা: একটি কাল্পনিক ছোট ক্লিনিকের অ্যাপ। দলে তিন জন, দিনে ২০০ রোগী, ঘণ্টায় ক্ষতি আনুমানিক $২০০. একজন প্রস্তাব দিলেন: Kubernetes, দুই region, দুই cloud, আর সবার ওপরে নিজের abstraction স্তর। চারটি প্রশ্ন করে প্রস্তাবটির সমালোচনা করুন, আর একটি বিকল্প দিন।

    প্রশ্ন: (১) কোন ব্যবসার লক্ষ্য বা শর্ত এটি চায়? (২) ঘণ্টায় $২০০ ক্ষতিতে কত downtime কমালে খরচ উঠবে? এই পর্বের ধরে নেওয়া হিসাবে multi-AZ লাভের হতেও ঘণ্টায় প্রায় $৩,৮০৫ ক্ষতি লাগত, তাই দুই cloud দূরের কথা। (৩) রাত ২টায় তিন জনের দলের কে দুই cloud-এর on-call করবেন? (৪) রোগীর সংবেদনশীল ডেটা দুই provider-এ ছড়ালে নিরাপত্তা ও নিয়মের ক্ষেত্রে কী হবে?

    বিকল্প: একটি provider, একটি region, managed database-এ সম্ভব হলে multi-AZ, বা সরল PaaS. অন্য region-এ encrypted backup, মাসে একবার restore মহড়া, একটি দুই পাতার exit plan. Trade-off লিখে রাখুন, আর ক্লিনিকের কাজ বন্ধ থাকলে কাগজে চালানোর পথও ভাবুন; সব সমাধান প্রযুক্তিতে নয়।

  4. Exit-এর হিসাব: ২০০ TB ডেটা, ধরে নেওয়া $০.০৫ প্রতি GB, মোট ১০ Gbps লিংক ৭০% ব্যবহারে, আর code বদলাতে ৪০ person-month, $৩,০০০ দরে। ডেটার ফি, স্থানান্তরের সময় আর rewrite-এর খরচ বের করুন। কোনটি আপনার পরিকল্পনাকে সবচেয়ে বেশি প্রভাবিত করবে?

    ফি: ২,০০,০০০ GB × $০.০৫ = $১০,০০০. সময়: ২০০ × ১০¹² × ৮ বিট ÷ (১০ × ১০⁹ × ০.৭) ≈ ২,২৮,৫৭১ সেকেন্ড ≈ ২.৬ দিন। Rewrite: ৪০ × $৩,০০০ = $১,২০,০০০.

    টাকায় rewrite ১২ গুণ বড়, আর সময়েও ৪০ person-month মানে মাসের পর মাস। এই লিংকে ডেটা ২.৬ দিনেই সরে; কিন্তু চলন্ত database-এর জন্য replication চালিয়ে শেষ মুহূর্তে সরতে হবে, সেই পরিকল্পনাও লাগবে। তাই পরিকল্পনার কেন্দ্রে থাকবে code আর দলের দক্ষতা।

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

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

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

  1. Workload আর ব্যবসার লক্ষ্য (SLO, RTO) ঠিক করা
  2. স্তম্ভ ধরে প্রশ্ন করা, প্রমাণ চাওয়া
  3. Finding লিখে impact × likelihood দেওয়া
  4. ঝুঁকির ক্রমে সাজিয়ে owner আর fix ঠিক করা
  5. Fix করে মহড়া বা পরীক্ষায় যাচাই করা
  6. নির্দিষ্ট সময় পরে আবার review করা

নিচের কোনটি AWS Well-Architected Framework-এর ছয় স্তম্ভের একটি নয়?

  • Sustainability
  • Cost optimization
  • Portability
  • Reliability

দুটি দলের design review-এ একই ৬২% “yes” এসেছে। A দলের খোলা সর্বোচ্চ ঝুঁকি ২০, B দলের ১২. কোন সিদ্ধান্তটি সঠিক?

  • দুটি নকশার ঝুঁকি সমান
  • A দলের নকশায় বড় ঝুঁকি রয়ে গেছে; ক্রম ধরতে ঝুঁকি দেখা দরকার
  • দুই দলকেই আরও সহজ প্রশ্নে yes বাড়াতে হবে
  • B দল বেশি দক্ষ, A দল কম দক্ষ

দুটি copy-র প্রতিটি ১% সময় বন্ধ থাকে (u = ০.০১), একসাথে পড়ার অংশ b = ০.১. U = b×u + ((1−b)×u)² সূত্রে U প্রায় কত?

  • ০.১০৮%
  • ০.০১%
  • ১%
  • ০.০০১%

Synchronous standby-সহ multi-AZ database থাকলেও নিচের কোন ঘটনায় backup ছাড়া ডেটা ফিরবে না?

  • একটি zone-এর বিদ্যুৎ চলে যাওয়া
  • Primary database-এর host নষ্ট হওয়া
  • পরিকল্পিত maintenance
  • একজন অপারেটরের ভুলে table মুছে যাওয়া

ধরা যাক, ৫০ TB ডেটা বের করার ফি $০.০৫ প্রতি GB, আর code বদলাতে ৬০ person-month, $৩,০০০ দরে (১ TB = ১,০০০ GB). কোন বক্তব্যটি ঠিক?

  • ডেটার ফি rewrite-এর চেয়ে বড়
  • Rewrite ফি-র ৭২ গুণ
  • ডেটার ফি $২৫,০০০
  • দুটি খরচ প্রায় সমান

Spanning multi-cloud-এর আসল অর্থ কোনটি?

  • হিসাবের কাজ এক provider-এ, ওয়েবসাইট অন্য provider-এ
  • একই provider-এর দুই region-এ একটি অ্যাপ
  • একটিই কাজ দুই provider-জুড়ে চলা বা দ্রুত সরে যেতে পারা
  • নিজের ডেটা সেন্টার আর একটি public cloud-এর জোড়া

শব্দকোষ

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

মনে রাখুন

  1. Well-Architected হলো প্রশ্নের কাঠামো: ছয় স্তম্ভ, ব্যবসার লক্ষ্যের ভিতের ওপর।
  2. স্তম্ভের মধ্যে trade-off অবধারিত; কারণটি ADR-এ লিখে রাখুন।
  3. Review-এর ফল ঝুঁকির ক্রমে সাজানো কাজ, নম্বর নয়। প্রমাণ চান, owner রাখুন, মহড়ায় যাচাই করুন।
  4. আগে multi-AZ, তারপর হিসাব করে অন্য region. Copy বাড়ে, কিন্তু correlated failure b × u কমে না।
  5. Lock-in-এর স্তর ডেটা, API, দক্ষতা। Multi-cloud আর abstraction-এর দাম হিসাব করুন, আর ছোট, পরীক্ষিত exit plan রাখুন।

পরের পর্বে: নকশা জানলেন, এবার পুরোনো সিস্টেমকে সেই নকশায় আনার পালা। Cloud migration-এর 6R, ধাপে ধাপে স্থানান্তর আর ঝুঁকি দেখব পর্ব ৭৫-এ।

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

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