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

Cloud-এর ভৌগোলিক কাঠামো — region, availability zone, edge আর data residency

Cloud Global Infrastructure — Regions, Availability Zones, Edge & Data Residency

Taught in Bangla, this lesson explains regions, availability zones, edge locations and local zones, computes minimum delay from distance and the speed of light in fibre, and shows how to choose a region for users in Bangladesh. It works through series and parallel availability and downtime, correlated failure, multi-AZ versus multi-region trade-offs, and the difference between data residency and data sovereignty.

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

  • Region, zone, edge location আর local zone-এর পার্থক্য, আর provider-ভেদে নামের ফারাক
  • দূরত্ব থেকে সর্বনিম্ন delay হিসাব করা, আর বাংলাদেশের ব্যবহারকারীর জন্য region বাছাইয়ের ধাপ
  • Availability আর downtime হিসাব করা, সাথে স্বাধীনতার অনুমান কোথায় ভাঙে তা বোঝা
  • Multi-AZ আর multi-region-এর মধ্যে খরচ, জটিলতা আর ঝুঁকির হিসাবে সিদ্ধান্ত নেওয়া
  • AI-এর দেওয়া “high availability” নকশা হিসাব দিয়ে যাচাই করা

১ · Cloud মেঘে থাকে না — region, zone আর ভবন

“Cloud” শব্দটি শুনলে মনে হয়, জিনিসটি আকাশে ভাসছে। আসলে এটি মাটির ওপর দাঁড়ানো বিশাল ভবন, যেখানে সারি সারি সার্ভার, জেনারেটর, ব্যাটারি আর ঠান্ডা রাখার যন্ত্র চলে। আপনি যখন একটি VM চালু করেন, তখন provider জিজ্ঞেস করে, “কোথায়?” এই প্রশ্নের উত্তরই ঠিক করে দেয় আপনার অ্যাপ কত দ্রুত সাড়া দেবে, বিল কত হবে, কোন আইন খাটবে, আর একটি ভবনে আগুন লাগলে আপনার ব্যবসা বাঁচবে কি না।

একটি বড় পাইকারি ব্যবসার কথা ভাবুন। ব্যবসায়ী এক শহরে সব মাল রাখেন না। চট্টগ্রাম এলাকায় তিনটি আলাদা গুদামঘর, প্রতিটি আলাদা বিদ্যুৎ লাইনে, কিন্তু ট্রাকে আধা ঘণ্টার পথ। এক গুদামে আগুন লাগলে বাকি দুটি থেকে মাল যায়। এই এলাকাটি হলো region, প্রতিটি গুদাম একটি availability zone. আর পাড়ার মোড়ের ছোট ডিপো, যেখানে সবচেয়ে বেশি বিক্রি হওয়া পণ্য রাখা থাকে, সেটি edge location.

তিনটি স্তর ছবিতে দেখা যাক। খেয়াল করুন, ব্যবহারকারীর সবচেয়ে কাছে যে ঘাঁটি, সেটি region-এর ভেতরে নয়, বাইরে।

একটি region, তিনটি zone আর একটি edge

One region, three availability zones and an edge location

Region-এর ভেতরে তিনটি availability zone, আর বাইরে একটি edge location ব্যবহারকারী, ঢাকা Edge location দীর্ঘ পথ, provider-এর backbone Region AZ-aAZ-bAZ-c Data centerData center Data centerData center Data centerData center আলাদা বিদ্যুৎআলাদা বিদ্যুৎআলাদা বিদ্যুৎ আলাদা networkআলাদা networkআলাদা network উচ্চগতির fibre, RTT সাধারণত কয়েক ms
ছবি ৫.১ — Zone-গুলো একই region-এ, কিন্তু একই ভবনে নয় বলেই আলাদা ঝুঁকি ভাগ করে। Edge শুধু ছোট কিছু কাজ করে।

এক লাইনে সংজ্ঞা: Region হলো একটি ভৌগোলিক এলাকায় provider-এর স্বাধীন স্থাপনা। Availability zone (সংক্ষেপে AZ) হলো region-এর ভেতরের একটি বিচ্ছিন্ন অংশ, যাতে এক বা একাধিক data center থাকতে পারে। কিন্তু প্রতিটি provider একই নাম একই অর্থে ব্যবহার করে না। লেখার সময়ের নামগুলো এমন, আর এগুলো বদলাতে পারে:

ধারণাAWSAzureGoogle Cloud
ভৌগোলিক এলাকাRegionRegion, অনেকের সাথে paired regionRegion
Region-এর ভেতরের বিচ্ছিন্ন অংশAvailability ZoneAvailability zone, সব region-এ নেইZone
শহরের কাছে region-এর সম্প্রসারণLocal ZoneExtended Zoneসরাসরি একই পণ্য নেই, Distributed Cloud ধরনের পণ্য আছে
ব্যবহারকারীর কাছের ঘাঁটিCloudFront edge locationFront Door-এর edge siteCloud CDN-এর edge location

Zone-এর নাম আর আসল জায়গা এক নয়

একটি ছোট ফাঁদ আছে। AWS-এ ap-south-1a নামটি আপনার account-এ যে ভৌত zone বোঝায়, অন্য account-এ অন্য zone বোঝাতে পারে। এভাবে provider সব গ্রাহককে একই “a” zone-এ জড়ো হতে দেয় না। দুই account-এর মধ্যে আসল zone মেলাতে হলে zone ID দেখতে হয়, যেমন aps1-az1. Azure-এও logical zone আর ভৌত zone-এর map subscription-ভেদে আলাদা হতে পারে।

# উদাহরণ (এখানে চলবে না; AWS CLI আর account লাগবে)
aws ec2 describe-availability-zones --region ap-south-1 \
  --query 'AvailabilityZones[].[ZoneName,ZoneId]' --output text

# নমুনা আউটপুট — account-ভেদে মিল আলাদা হতে পারে
ap-south-1a   aps1-az1
ap-south-1b   aps1-az3
ap-south-1c   aps1-az2

হাতে-কলমে করতে আপনার account থাকা বাধ্যতামূলক নয়, এই কোর্সে পড়ে বুঝলেই চলবে। Account আর CLI নিরাপদে ব্যবহারের নিয়ম পর্ব ০৬-এ আছে। এই list কমান্ডটি শুধু তথ্য পড়ে, কোনো resource তৈরি করে না।

২ · Availability zone-এর আসল অর্থ — isolation কী, কী নয়

Zone-এর মূল কথাটি একটি শব্দে: isolation, মানে বিচ্ছিন্নতা। এখানে প্রশ্নটি হলো, কোন ঘটনা এক zone পেরিয়ে অন্য zone-এ যেতে পারবে না? প্রকৌশলীরা এই সীমাকে বলেন failure domain. একটি ব্যর্থতা কতদূর ছড়ায়, তাকে বলে blast radius.

স্তরকী বিকল হলেপ্রতিরক্ষা
একটি সার্ভারdisk, RAM বা বোর্ড নষ্টএকাধিক VM, স্বয়ংক্রিয় পুনরুদ্ধার
একটি rackrack-এর switch বা বিদ্যুৎ লাইনVM আলাদা rack-এ ছড়ানো
একটি zoneভবনের বিদ্যুৎ, ঠান্ডা, আগুন, বন্যাMulti-AZ
একটি regionবড় সফটওয়্যার ভুল, বড় প্রাকৃতিক দুর্যোগMulti-region
পুরো providerবিশ্বজুড়ে ছড়ানো configuration বা identity ভুলMulti-cloud বা অন্য প্রস্তুতি, খুব ব্যয়বহুল

AWS তার নথিতে বলে, একই region-এর AZ-গুলো এত দূরে রাখা হয় যাতে correlated ব্যর্থতার ঝুঁকি কমে, আবার এত কাছে রাখা হয় যাতে synchronous replication চলে। তাদের দেওয়া সীমা প্রায় ১০০ km এর মধ্যে। এখানে একটি প্রকৌশলের টানাপোড়েন লুকিয়ে আছে। Zone বেশি দূরে হলে একই বন্যা বা ভূমিকম্প দুটিকে ধরবে না, কিন্তু delay বাড়বে। বেশি কাছে হলে delay কমবে, কিন্তু একসাথে ক্ষতির ঝুঁকি বাড়বে।

“AZ” শব্দটি সব provider-এ একই নিশ্চয়তা দেয় না। Zone-এর সংখ্যা, দূরত্ব আর ভবনের বিচ্ছিন্নতা provider ও region-ভেদে আলাদা। Google Cloud-এর নথিতে zone-কে একটি deployment এলাকা আর একক failure domain হিসেবে দেখার কথা বলা হয়, কিন্তু সব zone আলাদা ভবনে কি না, সেই নিশ্চয়তা সব জায়গায় একভাবে লেখা নেই। তাই অনুমান না করে নির্দিষ্ট region-এর সর্বশেষ নথি পড়ুন।

Zone কী থেকে বাঁচায় না, সেটিও জানা দরকার। Zone বিচ্ছিন্ন হলেও region-এর কিছু জিনিস ভাগ করা থাকে: একই সফটওয়্যার, একই deployment প্রক্রিয়া, একই control plane, একই শহরের ঝড়। আপনার নিজের অ্যাপের ভুল, ডেটা মুছে ফেলা বা ভুল configuration তো সব zone-এ একসাথে পৌঁছে যায়। Replication ভুলটিকেও দ্রুত কপি করে। এজন্য multi-AZ backup-এর বিকল্প নয়।

৩ · Edge location আর local zone — region-এর বাইরের ছোট ঘাঁটি

Region সংখ্যায় কম, কিন্তু ব্যবহারকারী সব জায়গায়। এই ফাঁক পূরণ করে দুটি জিনিস। এদের কাজ আলাদা, তাই গুলিয়ে ফেলবেন না।

Edge location

পাড়ার ডিপোর মতো। CDN cache, TLS সংযোগ শেষ করা, DNS উত্তর দেওয়া, ছোট edge function চালানো হয়। আপনি এখানে সাধারণ VM বা database রাখতে পারেন না।

দেখুন: পর্ব ৩০ · CDN, WAF আর DDoS সুরক্ষা

Local zone

মূল গুদামের শহরের শাখার মতো। সীমিত VM, disk আর কিছু সার্ভিস ব্যবহারকারীর শহরের কাছে চলে। কিন্তু নিয়ন্ত্রণ আর বাকি সার্ভিস মূল region থেকেই আসে।

কাজে লাগে: অনলাইন গেম, ভিডিও সম্পাদনা, খুব কম delay
প্রশ্নRegionLocal zoneEdge location
সংখ্যাকমমাঝারিসবচেয়ে বেশি
পূর্ণ সার্ভিসহ্যাঁনা, সীমিতনা, বিশেষ কাজ
Database রাখা যায়?হ্যাঁকিছু ক্ষেত্রেসাধারণত না
প্রধান সুবিধাপূর্ণতা, availabilityশহরের কাছে computeদ্রুত প্রথম সাড়া
Zone-এর মতো একাধিক কপিআছেসাধারণত একটি জায়গা, তাই ঝুঁকি বেশিProvider নিজে সামলায়

একটি বিষয় মনে রাখুন। Edge শুধু পড়ার কাজ বা cache করা জিনিসে সবচেয়ে কার্যকর। ব্যাংকের ব্যালান্সের মতো লেখা-নির্ভর কাজকে শেষ পর্যন্ত region-এর database-এ যেতেই হয়। Cache-এর ভেতরের কৌশল জানতে দেখুন System Design-এর CDN পর্ব আর Web caching ও CDN.

৪ · আলোর গতির দেয়াল — দূরত্ব থেকে delay-এর হিসাব

কোনো সার্ভারই আলোর চেয়ে দ্রুত উত্তর পাঠাতে পারে না। শূন্যে আলোর গতি সেকেন্ডে প্রায় ৩ লাখ km. কাচের fibre-এ সে ধীর হয়ে যায়, গতি হয় প্রায় দুই-তৃতীয়াংশ, মানে সেকেন্ডে ২ লাখ km. তাই মনে রাখার মতো একটি সংখ্যা:

fibre-এ আলো ≈ ২০০ km প্রতি ms
RTT (ms) ≈ পথের দৈর্ঘ্য (km) ÷ ১০০

এই সময়টিকে বলে propagation delay. আসল latency এর চেয়ে বেশি হয়, কারণ router-এর প্রক্রিয়া, ভিড়ে queue আর পথের ঘোরাঘুরি যোগ হয়। তবুও এই হিসাব অত্যন্ত কাজের, কারণ এটি একটি নিচের সীমা দেয়। “এর চেয়ে কম সম্ভব নয়” জানলে অনেক নকশার ভুল আগেই ধরা পড়ে। পুরো delay-এর ভাগগুলো পড়তে পারেন Computer Networks-এর delay ও throughput পর্বে।

পুরো হিসাবের উদাহরণ

ধরুন ঢাকা থেকে একটি region পর্যন্ত fibre পথ ৪,০০০ km (এটি ধরে নেওয়া সংখ্যা)।
একমুখী propagation = ৪,০০০ ÷ ২০০ = ২০ ms
RTT = ২ × ২০ = ৪০ ms
প্রথম HTTPS সাড়ায় লাগে ৩টি RTT: TCP-তে ১টি, TLS 1.3-এ ১টি, অনুরোধ আর উত্তরে ১টি। তাই ৩ × ৪০ = ১২০ ms, সার্ভারের নিজের সময় ছাড়া। RTT একবার নয়, বারবার গুণ হয়। দূরত্বের খরচ এখানেই বড় হয়ে দেখা দেয়।

এবার সংখ্যাগুলো ধাপে ধাপে দেখি। ধরে নিই একটি দূরের region-এর মোট fibre পথ ১৫,০০০ km, বাড়ির সংযোগ থেকে ISP পর্যন্ত একমুখী ৫ ms, সার্ভারের কাজ ২০ ms. এগুলো সবই হিসাবের জন্য ধরে নেওয়া মান, কোনো মাপা ফল নয়।

  1. ঢাকাbrowserঅনুরোধ শুরু
  2. ISP5 msaccess network
  3. স্থলপথ400 km2 ms
  4. সাগরতল14,600 km73 ms
  5. Region1 msভেতরের পথ
ঘড়ি (হিসাবের জন্য ধরে নেওয়া মান)
মোট সময়
এখন যা ঘটছে
RTT গোনা
  1. শুরু। ঢাকার একটি ফোন TCP-র প্রথম packet (SYN) পাঠাল। ঘড়ি 0 ms. DNS উত্তর আগেই cache-এ আছে বলে ধরা হলো।
  2. বাড়ি থেকে ISP. ওয়াইফাই বা মোবাইল সংযোগ পেরোতে ধরে নেওয়া 5 ms. এখানে দূরত্ব নয়, সংযোগের ধরনই সময় ঠিক করে।
  3. স্থলপথ। Fibre-এ ৪০০ km ধরে উপকূল পর্যন্ত: ৪০০ ÷ ২০০ = ২ ms. ঘড়ি 7 ms.
  4. সাগরতলের কেবল। ১৪,৬০০ ÷ ২০০ = ৭৩ ms. ঘড়ি 80 ms. মোট সময়ের বড় অংশ এখানেই। বাংলাদেশের আন্তর্জাতিক সংযোগের জন্য SEA-ME-WE 4 আর SEA-ME-WE 5-এর মতো সাবমেরিন কেবল আর স্থলপথের সংযোগ কাজে লাগে।
  5. Region-এর ভেতরে। Provider-এর network হয়ে load balancer পর্যন্ত ধরে নেওয়া ১ ms. একমুখী মোট 81 ms.
  6. TCP সংযোগ শেষ। উত্তর একই পথে ফিরে এলো। ২ × ৮১ = 162 ms. এটি ১টি RTT, আর এখনো কোনো ডেটাই আদান-প্রদান হয়নি।
  7. TLS 1.3. আরও ১টি RTT: ১৬২ + ১৬২ = 324 ms. এনক্রিপশনের চাবি ঠিক হলো।
  8. আসল অনুরোধ আর উত্তর। আরও ১টি RTT আর সার্ভারের ২০ ms: ৩২৪ + ১৬২ + ২০ = 506 ms. ব্যবহারকারী অর্ধেক সেকেন্ড অপেক্ষা করলেন, অথচ সার্ভার কাজ করেছে মাত্র ২০ ms.
  9. Edge-এ cache hit. ধরুন ১,০০০ km পথে একটি edge আছে। একমুখী ৫ + ৫ = ১০ ms, RTT ২০ ms. তিনটি RTT-তে 60 ms, আর ফাইলটি edge-এই ছিল। Origin পর্যন্ত যেতেই হলো না।
  10. Edge-এ cache miss. Edge আগে থেকে খোলা সংযোগ দিয়ে origin-এ যায়। বাকি ১৪,০০০ km-এর RTT ১৪০ ms, সার্ভার ২০ ms: ৬০ + ১৪০ + ২০ = 220 ms. Miss হলেও ৫০৬ ms-এর চেয়ে অনেক ভালো, কারণ handshake কাছেই শেষ হয়েছে।

এবার নিজে হিসাব করে দেখুন। নিচের estimator-এ ঢাকা থেকে কয়েকটি শহরের সরল রেখার দূরত্ব বের করা হয়েছে, তারপর ধরে নেওয়া হয়েছে কেবলের পথ তার ১.৫ গুণ। PATH_FACTOR বা SERVER_MS বদলে আবার চালান।

// Fibre round-trip estimator: physics floor only, not a measured ping.
const FIBRE_KM_PER_MS = 200;   // light in glass, about 2/3 of c
const PATH_FACTOR = 1.5;       // ASSUMPTION: cable path / straight line
const ROUND_TRIPS = 3;         // TCP + TLS 1.3 + HTTP request
const SERVER_MS = 20;          // ASSUMPTION: time inside the app
const dhaka = [23.81, 90.41];
const cities = [               // approximate city coordinates
  ["Mumbai", 19.08, 72.88], ["Singapore", 1.35, 103.82],
  ["Tokyo", 35.68, 139.69], ["Frankfurt", 50.11, 8.68],
  ["N. Virginia", 39.04, -77.49],
];
function greatCircleKm(a, b) {  // haversine formula, earth radius 6371 km
  const rad = (d) => d * Math.PI / 180;
  const dLat = rad(b[0] - a[0]), dLon = rad(b[1] - a[1]);
  const h = Math.sin(dLat / 2) ** 2 +
    Math.cos(rad(a[0])) * Math.cos(rad(b[0])) * Math.sin(dLon / 2) ** 2;
  return 2 * 6371 * Math.asin(Math.sqrt(h));
}
console.log("city         line_km  path_km  rtt_ms  first_response_ms");
for (const [name, lat, lon] of cities) {
  const line = greatCircleKm(dhaka, [lat, lon]);
  const path = line * PATH_FACTOR;
  const rtt = 2 * path / FIBRE_KM_PER_MS;
  const first = ROUND_TRIPS * rtt + SERVER_MS;
  console.log(name.padEnd(12), line.toFixed(0).padStart(7), path.toFixed(0).padStart(8),
    rtt.toFixed(1).padStart(7), first.toFixed(0).padStart(11));
}
for (const budget of [2, 5, 10]) {     // how far can synchronous replication reach?
  const km = budget * FIBRE_KM_PER_MS / 2;
  console.log("RTT budget " + budget + " ms -> fibre path at most " + km + " km");
}

আউটপুট:

city         line_km  path_km  rtt_ms  first_response_ms
Mumbai          1887     2831    28.3         105
Singapore       2885     4328    43.3         150
Tokyo           4884     7326    73.3         240
Frankfurt       7426    11140   111.4         354
N. Virginia    12914    19371   193.7         601
RTT budget 2 ms -> fibre path at most 200 km
RTT budget 5 ms -> fibre path at most 500 km
RTT budget 10 ms -> fibre path at most 1000 km

এগুলো পদার্থবিজ্ঞানের অনুমান, কোনো ping-এর ফল নয়। শুধু PATH_FACTOR-এর অনুমান বদলালেই সংখ্যাগুলো বদলাবে। শেষ তিনটি লাইন পরে কাজে লাগবে: RTT-র বাজেট ৫ ms হলে fibre পথ ৫০০ km-এর বেশি হতে পারবে না। আসল ping এর চেয়ে বেশি হওয়ারই কথা। আর মানচিত্রে কাছে হলেই network-এ কাছে নয়: ঢাকা থেকে Mumbai-এর packet কোন দেশ ঘুরে যাবে, তা নির্ভর করে ISP-র চুক্তি আর কেবলের ওপর। তাই সিদ্ধান্তের আগে নিজের ব্যবহারকারীর দিক থেকে মাপতে হবে।

৫ · Region বেছে নেওয়া — বাংলাদেশের ব্যবহারকারীর চোখে

“সবচেয়ে কাছের region নিন” কথাটি অর্ধেক সত্য। Region বেছে নিতে পাঁচটি প্রশ্নের উত্তর লাগে, আর এগুলোর গুরুত্ব অ্যাপ অনুযায়ী বদলায়।

প্রশ্নকী দেখবেনধরন
ডেটার নিয়মআইন, ব্যাংক বা সরকারি নির্দেশনা, চুক্তি কী বলেকঠিন শর্ত
সার্ভিস আছে?যে database, GPU বা সার্ভিস দরকার, তা ওই region-এ আছে কি নাকঠিন শর্ত
Latencyব্যবহারকারীর দিক থেকে মাপা RTTওজন দিয়ে তুলনা
খরচএকই সার্ভিসের দাম region-ভেদে আলাদা, data transfer-ওওজন দিয়ে তুলনা
DR-এর সঙ্গীকত zone, কাছে দ্বিতীয় region আছে কি নাওজন দিয়ে তুলনা

লক্ষ্য করুন, প্রথম দুটি প্রশ্ন আসলে ওজনের প্রশ্নই নয়। আইন না মানলে অন্য কোনো সুবিধা দিয়ে তা পূরণ হয় না। তাই আগে এগুলো দিয়ে ছেঁকে নিন, তারপর বাকি region-গুলোকে নম্বর দিন।

বাংলাদেশ থেকে বাস্তব ছবি

লেখার সময় আমাদের জানামতে AWS, Azure বা Google Cloud-এর কোনোটির পূর্ণ public region বাংলাদেশের ভেতরে নেই। এটি বদলাতে পারে, তাই provider-এর সর্বশেষ মানচিত্র দেখে নিন। ফলে অনেক দল ভারত বা সিঙ্গাপুরের region বিবেচনা করে, যেমন Mumbai বা Singapore. দেশের ভেতরের data center বা স্থানীয় hosting-ও একটি পথ, বিশেষ করে ডেটার নিয়ম কড়া হলে। তখন managed সার্ভিসের সংখ্যা কম হতে পারে, আর zone-এর মতো বিচ্ছিন্নতার নকশা আপনাকেই যাচাই করতে হবে।

কোনো provider-এর edge বা local zone ঢাকায় আছে কি না, তা-ও সর্বশেষ তালিকায় দেখবেন। আর একটি কথা: আপনার ব্যবহারকারী যদি বেশিরভাগ বিদেশে থাকেন, তবে “বাংলাদেশের কাছে” বিষয়টিই অর্থহীন। Region ঠিক হয় ব্যবহারকারী আর ডেটা যেখানে, সেখান থেকে; কোম্পানির অফিস যেখানে, সেখান থেকে নয়।

নিচের picker-এ সব region আর সংখ্যা কাল্পনিক। উদ্দেশ্য হলো পদ্ধতিটি দেখা। দুই ধরনের কাজের ওজন আলাদা বলে ফলও আলাদা আসবে।

// Region picker: hard rules first, weighted score second.
// All regions and numbers are FICTIONAL; use your own measurements.
const regions = [
  { name: "Local-E", rttMs: 15, cost: 130, services: 3, dr: 3, dataOk: true, hasNeeded: false },
  { name: "Near-A", rttMs: 40, cost: 112, services: 7, dr: 6, dataOk: true, hasNeeded: true },
  { name: "Near-B", rttMs: 70, cost: 100, services: 9, dr: 8, dataOk: true, hasNeeded: true },
  { name: "Far-C", rttMs: 180, cost: 85, services: 10, dr: 9, dataOk: true, hasNeeded: true },
  { name: "Far-D", rttMs: 210, cost: 80, services: 10, dr: 9, dataOk: false, hasNeeded: true },
];
const profiles = {
  "shop (people wait)": { latency: 0.45, cost: 0.20, services: 0.15, dr: 0.20 },
  "nightly batch": { latency: 0.05, cost: 0.60, services: 0.20, dr: 0.15 },
};
const ok = regions.filter((r) => r.dataOk && r.hasNeeded);       // hard filter
for (const r of regions) if (!ok.includes(r))
  console.log("rejected " + r.name + ": " + (r.dataOk ? "needed service missing" : "data rule fails"));
function scale(v, list) {       // lower is better: best = 10, worst = 0
  const lo = Math.min(...list), hi = Math.max(...list);
  return hi === lo ? 10 : 10 * (hi - v) / (hi - lo);
}
const rtts = ok.map((r) => r.rttMs), costs = ok.map((r) => r.cost);
for (const [label, w] of Object.entries(profiles)) {
  const rows = ok.map((r) => ({
    name: r.name,
    score: w.latency * scale(r.rttMs, rtts) + w.cost * scale(r.cost, costs) +
      w.services * r.services + w.dr * r.dr,
  })).sort((a, b) => b.score - a.score);
  console.log(label + ": " + rows.map((r) => r.name + " " + r.score.toFixed(2)).join("  "));
}

আউটপুট:

rejected Local-E: needed service missing
rejected Far-D: data rule fails
shop (people wait): Near-B 7.37  Near-A 6.75  Far-C 5.30
nightly batch: Far-C 9.35  Near-B 6.06  Near-A 2.80

Far-D সবচেয়ে সস্তা হলেও ডেটার নিয়মে বাদ পড়ল, নম্বরই পেল না। Local-E সবচেয়ে কাছে, কিন্তু দরকারি সার্ভিস নেই। মানুষ যেখানে অপেক্ষা করে, সেই দোকানের জন্য জিতল Near-B, আর রাতের batch কাজে দূরের সস্তা Far-C. মজার ব্যাপার, দোকানে সবচেয়ে কাছের Near-A জেতেনি, কারণ খরচ, সার্ভিস আর DR মিলিয়ে Near-B এগিয়ে। ওজন বদলে দেখুন, ফল কতটা সংবেদনশীল। তাই একই কোম্পানির দুটি কাজ দুই region-এ থাকতে পারে, তবে region পেরোনো ডেটার খরচও হিসাবে ধরবেন।

৬ · Availability-র অঙ্ক — গুণ আর 1 − (1 − a)ⁿ

Availability মানে মোট সময়ের কত অংশ সেবা চালু আছে। 99.9% শুনতে দারুণ, কিন্তু আসল অনুভূতি পাওয়া যায় downtime-এ হিসাব করলে। মান ধরা হলো ৩০ দিনে মাস, ৩৬৫ দিনে বছর:

মাসে মোট ৪৩,২০০ মিনিট · বছরে মোট ৫,২৫,৬০০ মিনিট
Downtime = (1 − A) × মোট সময়
Availabilityমাসে downtimeবছরে downtime
99%৪৩২ মিনিট (৭.২ ঘণ্টা)৮৭.৬ ঘণ্টা
99.5%২১৬ মিনিট (৩.৬ ঘণ্টা)৪৩.৮ ঘণ্টা
99.9%৪৩.২ মিনিট৮.৭৬ ঘণ্টা
99.95%২১.৬ মিনিট৪.৩৮ ঘণ্টা
99.99%৪.৩২ মিনিট৫২.৫৬ মিনিট
99.999%০.৪৩২ মিনিট (প্রায় ২৬ সেকেন্ড)৫.২৬ মিনিট

এবার দুটি সূত্র। ধরুন একটি রেলপথে কয়েকটি সেতু পরপর আছে। ট্রেন পার হতে সব কটি সেতু ঠিক থাকতে হবে। এটি series. আর নদী পারের দুটি ঘাট পাশাপাশি থাকলে, একটি বন্ধ হলেও অন্যটি দিয়ে লঞ্চ চলবে। এটি parallel.

মূল সূত্র

Series (সব লাগবে): A = a₁ × a₂ × … × aₖ. ফল সবচেয়ে দুর্বল অংশের চেয়েও কম হয়।
Parallel (একটি হলেই চলে): A = 1 − (1 − a)ⁿ. সব n কপি একসাথে বিকল হলেই শুধু সেবা বন্ধ।
Parallel সূত্রটির পেছনে একটি শর্ত: কপিগুলোর ব্যর্থতা পরস্পর স্বাধীন, যাকে বলে independence assumption.

তিন স্তরের অ্যাপের block diagram

Tiers in series, copies in parallel

Series-এ তিন স্তর, প্রতিটি স্তরের ভেতরে parallel কপি LB VM, AZ-aVM, AZ-b DB, AZ-aDB, AZ-b বাঁ থেকে ডানে সব স্তর লাগবে; এক স্তরে একটি কপি হলেই চলে
ছবি ৫.২ — স্তরগুলো গুণ হয়, প্রতিটি স্তরের ভেতরের কপি parallel সূত্র মানে।

এক এক করে অংশ যোগ করলে সংখ্যা কেমন বদলায়, দেখুন। এখানে প্রতিটি মান ধরে নেওয়া, কোনো provider-এর SLA নয়। Load balancer 99.99%, একটি VM 99.5%, একটি database কপি 99.9%, আর shared অংশ 99.95%.

হিসাবের খাতা
নকশা
Availability
মাসে downtime
বছরে downtime
  1. শুধু load balancer. 99.99% মানে মাসে প্রায় ৪.৩ মিনিট।
  2. একটি VM যোগ। Series: 0.9999 × 0.995 = 0.9949005. একটি দুর্বল অংশ পুরো সিস্টেমকে তার স্তরের নিচে নামিয়ে দিল, মাসে প্রায় ২২০ মিনিট।
  3. দুই zone-এ দুটি VM. Parallel: 1 − 0.005² = 0.999975. গুণফল 99.98750%. একটি কপি বাড়িয়ে downtime প্রায় চল্লিশ ভাগের এক ভাগ হলো।
  4. একটি database যোগ। আবার series: ০.৯৯৯ দিয়ে গুণ। ফল 99.88751%, মানে পুরো নকশা এখন database-এর স্তরে আটকে আছে।
  5. Database-এর দ্বিতীয় কপি। 1 − 0.001² = 0.999999. ফল 99.98740%. এবার সীমা ঠিক করছে সেই একা load balancer.
  6. Shared অংশ। দুই zone-ই যদি একটি 99.95% অংশের ওপর নির্ভর করে, তা series-এ বসে। ফল 99.93741%. কপি বাড়িয়ে এই সীমা পেরোনো যায় না।

নিচের composer-এ আপনি নিজের নকশা বসাতে পারেন। প্রতিটি স্তরের জন্য [নাম, একটি কপির availability, কপির সংখ্যা]। beta মানে হলো, একটি কপির ব্যর্থতার কত ভাগ এমন কারণে হয় যা সব কপিকে একসাথে ফেলে দেয়।

// Availability composer: copies in a tier, tiers in series, plus correlation.
const MONTH_MIN = 30 * 24 * 60, YEAR_MIN = 365 * 24 * 60;
const designs = {   // [name, availability of one copy, copies]
  "one AZ": [["dns", 0.9999, 1], ["lb", 0.9999, 1], ["app", 0.995, 1], ["db", 0.999, 1]],
  "multi-AZ": [["dns", 0.9999, 1], ["lb", 0.9999, 1], ["app", 0.995, 3], ["db", 0.999, 2]],
};
// beta = share of one copy's failures that take all copies down together
function tier(a, n, beta) {
  const u = 1 - a;
  return n === 1 ? a : 1 - (beta * u + ((1 - beta) * u) ** n);
}
function compose(tiers, beta) {
  return tiers.reduce((all, [, a, n]) => all * tier(a, n, beta), 1);
}
function show(label, a) {
  const m = ((1 - a) * MONTH_MIN).toFixed(1), y = ((1 - a) * YEAR_MIN / 60).toFixed(2);
  console.log(label.padEnd(24), ((a * 100).toFixed(5) + "%").padStart(10),
    (m + " min/mo").padStart(14), (y + " h/yr").padStart(11));
}
for (const [name, tiers] of Object.entries(designs)) {
  for (const [t, a, n] of tiers)
    console.log("  " + name + " / " + t + " x" + n + " = " + (tier(a, n, 0) * 100).toFixed(6) + "%");
  show(name + ", independent", compose(tiers, 0));
}
for (const beta of [0.01, 0.05, 0.10])
  show("multi-AZ, beta " + beta.toFixed(2), compose(designs["multi-AZ"], beta));
const region = 0.9995;     // a whole-region event hits every AZ at once
const failover = 0.9999;   // the switch between two regions can fail too
const oneRegion = compose(designs["multi-AZ"], 0) * region;
show("multi-AZ in one region", oneRegion);
show("two regions + failover", (1 - (1 - oneRegion) ** 2) * failover);

আউটপুট:

  one AZ / dns x1 = 99.990000%
  one AZ / lb x1 = 99.990000%
  one AZ / app x1 = 99.500000%
  one AZ / db x1 = 99.900000%
one AZ, independent       99.38062%   267.6 min/mo  54.26 h/yr
  multi-AZ / dns x1 = 99.990000%
  multi-AZ / lb x1 = 99.990000%
  multi-AZ / app x3 = 99.999988%
  multi-AZ / db x2 = 99.999900%
multi-AZ, independent     99.97989%     8.7 min/mo   1.76 h/yr
multi-AZ, beta 0.01       99.97389%    11.3 min/mo   2.29 h/yr
multi-AZ, beta 0.05       99.94991%    21.6 min/mo   4.39 h/yr
multi-AZ, beta 0.10       99.91993%    34.6 min/mo   7.01 h/yr
multi-AZ in one region    99.92990%    30.3 min/mo   6.14 h/yr
two regions + failover    99.98995%     4.3 min/mo   0.88 h/yr

তিনটি বিষয় লক্ষ্য করুন। এক: multi-AZ-এ downtime ২৬৭.৬ থেকে ৮.৭ মিনিটে নামল, যা বিশাল উন্নতি। দুই: এরপর সীমা ঠিক করছে DNS আর load balancer, কারণ এগুলো এখানে একটি করে অংশ। তিন: ব্যর্থতার মাত্র ১০% সব কপিতে একসাথে হলে (beta 0.10) মাসিক downtime ৮.৭ থেকে ৩৪.৬ মিনিট হয়ে যায়। শেষ লাইনে দুই region পেলেও ফল থেমে যায় ৪.৩ মিনিটে, কারণ failover-এর 99.99% অংশটি series-এ বসে আছে। কপি যত বাড়ান, সীমা সরে যায় যা শেয়ার করা হয়েছে তার দিকে।

৭ · স্বাধীনতার অনুমান যখন ভাঙে — correlated failure আর একটি বাস্তব ঘটনা

Parallel সূত্রে দুটি 99.9% কপি মিলে 99.9999% হয়। হিসাবটি ঠিক, যদি কপি দুটি কোনো কিছুই ভাগ না করে। কিন্তু বাস্তবে এক কারণে একসাথে বিকল হওয়া, মানে correlated failure, প্রায়ই ঘটে। বিয়েবাড়িতে দুটি বড় ডেকচি রান্না করছে, একটি পুড়ে গেলেও অন্যটি আছে। কিন্তু দুটিতেই যদি একই পচা মাংস দেওয়া হয়, দুই ডেকচিই নষ্ট।

এর সাধারণ উৎসগুলো: একই সময়ে একই ভুল configuration ছড়ানো, একই software bug, একই certificate-এর মেয়াদ শেষ হওয়া, একই shared control plane, একই ভবন বা একই বিদ্যুৎ-উৎস, আর zone পেরোনোর পরে অতিরিক্ত ভিড়ে বাকিদেরও পড়ে যাওয়া।

একটি হিসাব। ধরুন দুটি কপি, প্রতিটির ব্যর্থতার সম্ভাবনা u = 0.001. স্বাধীন হলে দুটির একসাথে পড়ার সম্ভাবনা u² = 0.000001, মানে 99.9999%. এবার ধরুন ব্যর্থতার ১০% সাধারণ কারণে হয় (β = 0.1). তখন সম্ভাবনা ≈ βu + ((1 − β)u)² = 0.0001 + 0.00000081 ≈ 0.0001008, মানে 99.98992%. প্রায় ১০০ গুণ খারাপ। হিসাবে ব্যর্থতার মূল অংশটি এখন সাধারণ কারণ থেকে আসছে। শিক্ষা হলো, হিসাব ততটাই ভালো, যতটা ভালো তার অনুমান।

কেস: Amazon S3-এর ফেব্রুয়ারি ২০১৭-এর ঘটনা

AWS-এর প্রকাশিত post-event summary অনুযায়ী, ২৮ ফেব্রুয়ারি ২০১৭ তারিখে Northern Virginia (us-east-1) region-এ একজন অনুমোদিত কর্মী billing-এর ধীর গতির সমস্যা খুঁজতে একটি কমান্ড চালান, আর একটি ভুল ইনপুটে উদ্দেশ্যের চেয়ে বেশি সার্ভার সরে যায়। এতে S3-এর দুটি গুরুত্বপূর্ণ অংশ, index আর placement subsystem, পুরো restart করতে হয়। সারাংশে বলা হয়েছিল, বড় region-গুলোতে এগুলো বহু বছর পুরো restart করা হয়নি। ফলে সেবা ফিরতে কয়েক ঘণ্টা লাগে।

S3-এর ওপর নির্ভরশীল আরও সার্ভিস, যেমন নতুন EC2 চালু করা আর Lambda, তখন প্রভাবিত হয়। সবচেয়ে শিক্ষণীয় অংশ: AWS-এর status dashboard-এর পরিচালনাও S3-এর ওপর নির্ভর করত, তাই শুরুর দিকে dashboard ঠিকমতো আপডেট করা যায়নি।

যা ঘটেছিলআপনার নকশায় শিক্ষা
একটি region-এর সার্ভিস সব zone-এ একসাথে বন্ধMulti-AZ হলেই region-স্তরের ঘটনা থেকে বাঁচা যায় না
নির্ভরশীল সার্ভিসেও প্রভাবনিজের dependency-র তালিকা লিখুন, লুকানো নির্ভরতা খুঁজুন
Dashboard-ও একই জিনিসের ওপর নির্ভরশীলMonitoring আর status পাতা, যা দেখছে তার ওপর নির্ভর করবে না
বহুদিন restart হয়নিপুনরুদ্ধারের পথও নিয়মিত পরীক্ষা করতে হবে

Provider-দের ক্ষেত্রেও এর পরে আরও ঘটনা হয়েছে। মার্চ ২০২১-এ OVHcloud-এর Strasbourg-এর একটি ভবনে আগুন লাগে, আর পাশাপাশি থাকা স্থাপনাও ক্ষতিগ্রস্ত হয়। Google Cloud-এর নিজের রিপোর্ট অনুযায়ী, এপ্রিল ২০২৩-এ Paris-এর europe-west9 region-এর একটি data center-এ পানির পাইপের ফুটো আর পরে আগুনের ঘটনায় শুধু একটি zone নয়, সাময়িকভাবে একাধিক zone প্রভাবিত হয়। এক zone-এর ক্ষতি সারতে অনেক বেশি সময় লাগে। একে “বিচ্ছিন্নতা ব্যর্থ” বলে না ভেবে বরং মনে রাখুন: বিচ্ছিন্নতা একটি সম্ভাবনা কমায়, শূন্য করে না।

৮ · Multi-AZ বনাম multi-region — কতটা, আর কী দামে

প্রথমে একটি zone-এর বিপর্যয়ে দুটি নকশার আচরণ পাশাপাশি দেখুন। ধরে নেওয়া ঘটনা: AZ-a-তে ৩ ঘণ্টার জন্য বিদ্যুৎ বিপর্যয়। একটি zone-এর নকশায় সব VM আর database AZ-a-তেই আছে। Multi-AZ নকশায় AZ-a আর AZ-b-তে ২টি করে মোট ৪টি VM, database primary AZ-a-তে আর synchronous standby AZ-b-তে। সব সময় হিসাবের জন্য ধরে নেওয়া, আসল সময় সেটিংস আর provider-ভেদে আলাদা।

ঘটনা শুরুর পর সময় (ধরে নেওয়া)
সময়
এক zone: সেবা
এক zone: VM
Multi-AZ: পড়া
Multi-AZ: লেখা
Multi-AZ: VM
Multi-AZ: DB
  1. স্বাভাবিক সময়। দুই নকশাই চলছে। বাইরে থেকে পার্থক্য বোঝা যায় না, শুধু multi-AZ-এর বিল বেশি।
  2. AZ-a বন্ধ। এক zone-এর নকশায় সব গেল। Multi-AZ-এ load balancer এখনো জানে না, তাই প্রায় অর্ধেক অনুরোধ মৃত VM-এ যাচ্ছে। লেখাও ব্যর্থ, কারণ primary নেই।
  3. ৩০ সেকেন্ডে health check. ১০ সেকেন্ড পরপর ৩ বার ব্যর্থ হলে load balancer AZ-a-র VM সরিয়ে দিল। Multi-AZ-এ পড়া স্বাভাবিক।
  4. ৬৫ সেকেন্ডে failover. Standby নতুন primary হলো। Synchronous ছিল বলে নিশ্চিত হওয়া কোনো লেখা হারায়নি, মানে RPO শূন্য। লেখার বিরতি ৬৫ সেকেন্ড, যা মাসিক ৪৩.২ মিনিট বাজেটের প্রায় ২.৫%. কিন্তু ক্ষমতা অর্ধেক, ব্যস্ত সময়ে ধীর হতে পারে।
  5. ৫ মিনিটে নতুন VM. Autoscaling AZ-b-তে ২টি VM চালু করল। সতর্কতা: বড় ঘটনায় একই সাথে অনেক গ্রাহক এখানে VM চাইবেন, ক্ষমতা নাও মিলতে পারে। তাই আগে থেকেই অতিরিক্ত VM রাখলে নিরাপদ। একে বলে static stability.
  6. ৩ ঘণ্টা পর। এক zone-এর নকশা ১৮০ মিনিট বন্ধ ছিল, যা মাসিক বাজেটের প্রায় ৪১৭%. আর ডেটা ফিরবে disk ঠিক থাকলে; না থাকলে শেষ backup-এর পরের ডেটা হারাবে। Multi-AZ-এ AZ-a এখন standby হয়ে ফিরে আসে।

Region পেরোলে কী বদলায়

Zone-এর মধ্যে কয়েক ms-এ যা সহজ, region পেরোলে তা ব্যয়বহুল হয়ে পড়ে। সবচেয়ে বড় কারণটি sync আর async-এর পুরোনো হিসাব, যা System Design-এর replication পর্বে বিস্তারিত আছে। এক লাইনে: synchronous হলে প্রতিটি লেখা অন্য কপির উত্তর পর্যন্ত অপেক্ষা করে, আর asynchronous হলে আগে “হয়েছে” বলে পরে পাঠায়।

একটি লেখার সময় (নিজের disk 2 ms ধরে)
ধাপ
Sync, zone (RTT 2 ms)
Sync, 3,000 km (RTT 30 ms)
Sync, 15,000 km (RTT 150 ms)
Async, যেকোনো দূরত্ব
  1. লেখা এলো। একটি অর্ডার primary database-এ পৌঁছাল। ঘড়ি সব সারিতে ০.
  2. নিজের log-এ লেখা। ২ ms. Async এখানেই “OK” বলে দেয়। Sync এখনো অপেক্ষায়।
  3. অন্য কপিতে পাঠানো। একমুখী যাত্রা RTT-র অর্ধেক: ১, ১৫ আর ৭৫ ms. দূরত্বের পার্থক্য এখানে চোখে পড়ে।
  4. Sync উত্তর ফিরল। মোট ২ + RTT: 4, 32, 152 ms. দূরের region-এ প্রতিটি লেখা zone-এর তুলনায় ৩৮ গুণ ধীর।
  5. এক সংযোগে ধারাবাহিক লেখা। এক সেকেন্ডে কত? ১০০০ ÷ ৪ = 250, ১০০০ ÷ ৩২ ≈ 31, ১০০০ ÷ ১৫২ ≈ 6.6, আর async-এ ১০০০ ÷ ২ = 500. Group commit আর একাধিক সংযোগ এই ফাঁক কিছুটা কমায়, কিন্তু প্রতিটি লেখার delay কমায় না।
  6. Region বিপর্যয়। Async-এ ধরুন lag ১ সেকেন্ড, আর প্রতি সেকেন্ডে ৫০০ লেখা হয়। তাহলে প্রায় ৫০০টি নিশ্চিত করা লেখা হারাতে পারে, মানে RPO প্রায় ১ সেকেন্ড। Sync-এ তা হয় না, কিন্তু দাম দিতে হয় প্রতিটি লেখায়। পছন্দটি আসলে delay বনাম হারানোর ঝুঁকির।

এজন্যই প্রচলিত নকশা হলো: region-এর ভেতরে zone-গুলোর মধ্যে synchronous, region পেরিয়ে asynchronous. এর কোনো ধরাবাঁধা সীমা নেই, তবে ওপরের হিসাবে RTT ৫ ms মানে fibre পথ ৫০০ km. এর বাইরে sync রাখতে চাইলে প্রতিটি লেখায় বড় দাম গুনতে হবে।

বিষয়Multi-AZMulti-region
কী থেকে বাঁচায়একটি ভবন বা zone-এর ঘটনাপুরো region-এর ঘটনা, বড় দুর্যোগ
ডেটা replicationসাধারণত synchronousসাধারণত asynchronous
ডেটা হারানো (RPO)প্রায় শূন্য সম্ভবAsync-এ সেকেন্ড বা তার বেশি
পুনরুদ্ধার (RTO)সাধারণত সেকেন্ড থেকে মিনিটমিনিট থেকে ঘণ্টা, প্রস্তুতি অনুযায়ী
খরচবেশি, কিন্তু সাধারণ বিষয়অনেক বেশি: দ্বিগুণ সার্ভার, region পেরোনো ডেটা-বিল
জটিলতাকম; অনেক managed সার্ভিস একটি সেটিংয়েই দেয়বেশি: নিজের failover, DNS, ডেটা সমন্বয়, মহড়া
কখন বেছে নেবেনপ্রায় সব production অ্যাপনিয়ম, RTO/RPO বা ব্যবসার ঝুঁকি দাবি করলে

Multi-region-এর দুটি সাধারণ ধরন আছে। Active-passive-এ একটি region চলে, অন্যটি প্রস্তুত থাকে; সহজ, কিন্তু failover কখনো পরীক্ষা না করলে দরকারের সময় নাও চলতে পারে। Active-active-এ দুটিই traffic নেয়; এতে ক্ষমতা নিয়মিত যাচাই হয়, কিন্তু ডেটার সংঘাত আর consistency সামলাতে হয়। সিদ্ধান্তের পুরো ধাপ আর চারটি DR কৌশল আসবে পর্ব ২৪ · Backup আর disaster recovery-তে, আর গভীর আলোচনা আছে System Design-এর disaster recovery পর্বে।

একটি ফাঁদ হলো failover-এর নিজের নির্ভরতা। ঘটনার সময় যদি আপনার পথ বন্ধ region-এর control plane-এর ওপর নির্ভর করে, যেমন DNS বদলানো বা নতুন VM চালু করা, তবে সেটিও আটকে যেতে পারে। তাই চলমান data plane-এর ওপর চলা পথ আগে থেকেই বানিয়ে রাখা ভালো। কিছু global সার্ভিসের control plane একটি নির্দিষ্ট region-এর ওপর নির্ভর করতে পারে, তাই নথিতে দেখে নিন।

৯ · Data residency বনাম sovereignty — ডেটার ঠিকানা আর ডেটার আইন

তিনটি শব্দ প্রায়ই একসাথে ব্যবহার হয়, কিন্তু অর্থ আলাদা।

শব্দপ্রশ্নটিউদাহরণ
Data residencyডেটা শারীরিকভাবে কোথায় আছে?আমরা Singapore region-এ ডেটা রাখি
Data localisationআইন কি দেশের ভেতরে রাখতে বাধ্য করে?নির্দিষ্ট শ্রেণির ডেটা দেশের ভেতরে রাখার শর্ত
Data sovereigntyএই ডেটার ওপর কার আইন আর কর্তৃপক্ষ খাটে?ডেটা এক দেশে, কিন্তু provider অন্য দেশের আইনের অধীন

গুদামঘরের মাল কোন জেলায় আছে, সেটি residency. কিন্তু গুদামের মালিক যদি অন্য দেশের কোম্পানি হন, তার দেশের আদালত তাঁকে কিছু আদেশ দিতে পারে। মাল এখানে থাকলেও সেই আদেশের প্রভাব পড়তে পারে। এটিই sovereignty-র প্রশ্ন।

তাই “ডেটা দেশে আছে” বললে কাজ শেষ হয় না। Backup, log, support-এর সুবিধা, পাশের region-এ replication, এমনকি global সার্ভিসের metadata কোথায় যাচ্ছে, সব দেখতে হয়। এনক্রিপশন আর নিজের নিয়ন্ত্রণে থাকা চাবি (পর্ব ৩৩) কিছু ঝুঁকি কমায়, কিন্তু আইনের প্রশ্ন পুরোপুরি মেটায় না।

বাংলাদেশের প্রসঙ্গ

এই অংশটি আইনি পরামর্শ নয়, আর নিয়ম দ্রুত বদলাচ্ছে। সরকারের আইন-ওয়েবসাইট bdlaws.minlaw.gov.bd অনুযায়ী, ২০২৫ সালের অধ্যাদেশের জায়গায় এখন ব্যক্তিগত উপাত্ত সুরক্ষা আইন, ২০২৬ (২০২৬ সনের ৬৩ নং আইন) আর জাতীয় উপাত্ত ব্যবস্থাপনা আইন, ২০২৬ (২০২৬ সনের ৮০ নং আইন) আছে। দুটিরই তারিখ ১০ এপ্রিল ২০২৬। প্রথম আইনটিতে উপাত্তের শ্রেণিবিভাগ আর দেশের বাইরে স্থানান্তরের শর্তের বিধান আছে, তবে কিছু ধারা পরে কার্যকর হওয়ার কথা, আর প্রবিধানেও বিস্তারিত আসতে পারে। তাই এখানে কোনো বিধান উদ্ধৃত করছি না; কোন ডেটার জন্য কী প্রযোজ্য, তা মূল লেখায় দেখুন।

ব্যাংক, আর্থিক প্রতিষ্ঠান, টেলিকম আর সরকারি কাজে খাতভিত্তিক নির্দেশনাও প্রযোজ্য হতে পারে, যেমন Bangladesh Bank-এর নির্দেশনা। করণীয় একটাই: সরকারের প্রকাশিত মূল লেখা পড়া, আর compliance বা আইনজীবীর সাথে কথা বলা। AI-এর মুখের কথায় কখনো এই সিদ্ধান্ত নেবেন না। Region বেছে নেওয়ার আগে একটি ছোট তালিকা বানান: কোন ডেটা আছে, কোন শ্রেণির, কার, কোথায় যাচ্ছে।

আরও গভীরে: Availability-র সূত্রগুলো reliability engineering থেকে এসেছে। সেখানে সমান্তরাল অংশের সাধারণ ব্যর্থতা ধরার একটি পরিচিত পদ্ধতি হলো beta-factor model, যা এই পর্বে সহজ করে ব্যবহার হয়েছে। Provider-দের কেউ কেউ cell-based নকশা আর ধীরে ধীরে zone ও region ধরে deployment ব্যবহার করেন, যাতে একটি খারাপ পরিবর্তনের blast radius ছোট থাকে। AWS-এর “Fault Isolation Boundaries” নথিতে control plane আর data plane-এর এই বিচ্ছিন্নতার আলোচনা আছে।

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

  • Region আর AZ-এর পার্থক্য কী? Region একটি ভৌগোলিক এলাকা; AZ তার ভেতরের বিচ্ছিন্ন অংশ।
  • Series-এ 99.9%-এর তিনটি অংশে availability? 0.999³ = 99.7003%, মাসে প্রায় ১২৯.৫ মিনিট।
  • Parallel-এ 99%-এর দুটি কপি? 1 − 0.01² = 99.99%, স্বাধীন হলে।
  • Fibre-এ ৩,০০০ km পথের RTT? ৩,০০০ ÷ ১০০ = ৩০ ms, এর কম সম্ভব নয়।
  • Residency আর sovereignty-র পার্থক্য? প্রথমটি ডেটার জায়গা, দ্বিতীয়টি ডেটার ওপর খাটা আইন।

১০ · AI-এর যুগে region আর availability-র নকশা যাচাই

AI “high availability” নকশা দ্রুত লিখে দিতে পারে, আর সেখানে 99.999%-এর মতো সংখ্যাও বসিয়ে দিতে পারে। কিন্তু সে আপনার ব্যবহারকারী, আইন বা বিল দেখে না। সাধারণ ভুলগুলো চিনে রাখুন।

AI-এর ভুলকেন বিপজ্জনকযাচাই
Parallel সূত্রে ৫ nine দাবিস্বাধীনতার অনুমান আর shared অংশ বাদShared dependency-র তালিকা বানিয়ে series-এ বসান
“Region ap-… সবচেয়ে কাছে” বা ভুল সার্ভিসের দাবিRegion বা সার্ভিস নাও থাকতে পারেProvider-এর region তালিকা দেখুন, নিজে মাপুন
Terraform-এ বানানো argument বা ভুল zone-এর নামApply-এ ব্যর্থ, বা ভুল আচরণProvider-এর নথি, terraform plan
সব security group 0.0.0.0/0, ডেটা public bucket-এ, IAM-এ *নিরাপত্তা দুর্বলLeast privilege, diff পর্যালোচনা
Region পেরোনো replication-এর ডেটা-খরচ বাদবিল হঠাৎ বেড়ে যায়নকশায় খরচ লিখুন, budget alert দিন
Failover মহড়ায় terraform destroy বা kubectl delete সতর্কতা ছাড়াআসল ডেটা মুছে যেতে পারেআলাদা পরিবেশ, --dry-run, backup আগে
দেশের আইনের নিশ্চিত ব্যাখ্যাপুরোনো বা বানানো তথ্য হতে পারেসরকারি মূল লেখা আর আইন বিশেষজ্ঞ

AI-কে সিদ্ধান্তের ভার না দিয়ে হিসাব দেখাতে বলুন, আর অনুমানগুলো আলাদা করতে বলুন। কোনো secret, account ID বা গ্রাহকের ডেটা prompt-এ দেবেন না।

আমার একটি কাল্পনিক অনলাইন বাজার অ্যাপ আছে: load balancer, ৩টি app VM, একটি managed database. ব্যবহারকারী বেশিরভাগ বাংলাদেশে। লক্ষ্য মাসে সর্বোচ্চ ২০ মিনিট downtime. ১. একটি availability হিসাব দাও, প্রতিটি সংখ্যা "provider-এর নথি থেকে" না "ধরে নেওয়া", তা আলাদা করে বলো। ২. কোন অংশগুলো shared dependency, সেগুলো series-এ বসাও। ৩. কোন ব্যর্থতা multi-AZ-এ ঠেকবে না, তার তালিকা দাও। ৪. Region-এর পরামর্শ দিলে কোন তথ্য আমাকে নিজে মাপতে ও যাচাই করতে হবে, তা বলো। ৫. আইন নিয়ে নিশ্চিত না হলে "জানি না" বলো, কোনো ধারা বানিও না। ৬. কোনো destructive কমান্ড দিও না। সব কমান্ড শুধু plan বা dry-run স্তরে রাখো।

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

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

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

প্র ০১Multi-region এত ভালো হলে সবাই কেন করে না? কখন multi-AZ-ই যথেষ্ট?

কারণ multi-region নিরাপত্তার একটি বিমা, আর বিমার একটি প্রিমিয়াম আছে। সেই প্রিমিয়াম শুধু টাকায় নয়, জটিলতাতেও দিতে হয়।

  • খরচ: দ্বিতীয় region-এ সার্ভার, database আর region পেরোনো ডেটার বিল যোগ হয়। Active-active-এ দুটি region-কেই একে অপরের ভার নেওয়ার মতো বড় রাখতে হয়।
  • ডেটার সমস্যা: আলোর গতির কারণে দূরে sync ব্যয়বহুল। Async নিলে ঘটনার সময় শেষের কিছু লেখা হারাতে পারে। দুই region-এ লেখা নিলে সংঘাত সমাধানের যুক্তি লিখতে হয়।
  • পরিচালনার ঝুঁকি: জটিল failover নিজেই ব্যর্থতার উৎস। ভুল সময়ে বা ভুলভাবে করা failover নিজেই নতুন বিপর্যয় ডেকে আনতে পারে।

তবুও ইতিহাস দেখায়, region-স্তরের ঘটনা ঘটে। S3-এর ২০১৭-এর ঘটনা ছাড়াও ডিসেম্বর ২০২১-এ AWS us-east-1-এ অভ্যন্তরীণ network-এর ভিড়ে বড় ঘটনা হয়। অক্টোবর ২০২৫-এ একই region-এ DynamoDB-র DNS ব্যবস্থাপনার একটি ত্রুটি থেকে আরেকটি বড় ঘটনার কথা AWS-এর সারাংশে আছে। প্রশ্নটি তাই “ঘটে কি না” নয়, “ঘটলে আমার কত ক্ষতি, আর তা ঠেকানোর খরচ কত”।

একটি ছোট অ্যাপের জন্য, ধরুন যার এক ঘণ্টা বন্ধ থাকার ক্ষতি ১ লাখ টাকা, বছরে কয়েক ঘণ্টার ঝুঁকির জন্য প্রতি মাসে আরও কয়েক লাখ টাকা খরচ করা অর্থহীন। তখন multi-AZ আর অন্য region-এ encrypted backup একটি ভালো মাঝামাঝি পথ। Payment বা হাসপাতালের মতো সেবায়, অথবা নিয়ম দাবি করলে, হিসাব আলাদা।

মূল উপলব্ধি: নকশা শুরু হয় ব্যবসার ক্ষতির সংখ্যা দিয়ে, ফ্যাশন দিয়ে নয়। RTO আর RPO ঠিক করুন, তারপর সবচেয়ে সরল নকশাটি বেছে নিন যা সেগুলো মেটায়।

প্র ০২নকশার কাগজে 99.9999% লেখা থাকলে কেন সন্দেহ করবেন?

কারণ সংখ্যাটি প্রায় নিশ্চিতভাবে স্বাধীনতার অনুমানের ফল, বাস্তবের মাপ নয়। 99.9999% মানে বছরে প্রায় ৩১.৫ সেকেন্ড downtime. একটি deployment, একটি certificate নবায়ন বা একটি DNS ভুলেই এর চেয়ে বেশি সময় চলে যায়।

Reliability engineering-এ এই সমস্যা পুরোনো। পারমাণবিক বিদ্যুৎ ও বিমানচালনায় common-cause failure বিশ্লেষণ বহু বছর ধরে হয়, কারণ দুটি একই পাম্প একই নকশার ত্রুটিতে একসাথে নষ্ট হতে পারে। তাই গুরুত্বপূর্ণ সিস্টেমে কখনো ইচ্ছা করে ভিন্ন নকশা ব্যবহার হয়। Cloud-এ correlated কারণের উদাহরণ:

  • একই সফটওয়্যার: সব zone-এ একই release, একই bug. একটি ভুল rollout সব কপিকে ফেলে দিতে পারে।
  • একই ভবন বা এলাকা: OVHcloud-এর Strasbourg ২০২১-এর আগুন দেখিয়েছিল, পাশাপাশি স্থাপনা একই ঘটনায় পড়তে পারে।
  • ভিড়ের ঢেউ: এক zone পড়লে তার traffic অন্যদের ওপর পড়ে। যথেষ্ট ক্ষমতা না থাকলে তারাও পড়ে যায়।
  • মানুষ: একজন অপারেটরের একটি কমান্ড সব zone-এ চলে যেতে পারে।

ভালো প্রকৌশলীরা তাই একটি সংখ্যা দিয়েই থামেন না। তাঁরা জিজ্ঞেস করেন: কোন একটি ঘটনা সব কপি একসাথে ফেলতে পারে? সেই তালিকা লেখেন, আর তার জন্য আলাদা প্রতিরক্ষা বানান: ধীরে ধীরে rollout, canary, region অনুযায়ী release, আগে থেকে রাখা ক্ষমতা।

মূল উপলব্ধি: Availability-র হিসাব নকশার ভুল ধরার হাতিয়ার, ভবিষ্যদ্বাণী নয়। এটি বলে কোন অংশ সবচেয়ে দুর্বল। আর শেষ কথা বলে আসল মাপা availability আর incident-এর ইতিহাস।

প্র ০৩দেশের ভেতরে hyperscale region না থাকলে একজন বাংলাদেশি প্রকৌশলী কীভাবে সিদ্ধান্ত নেবেন?

প্রথমে একটি ভুল ধারণা বাদ দিন: “দেশে সার্ভার মানেই সবচেয়ে দ্রুত”। অনেক ক্ষেত্রে এটি সত্য, কিন্তু সব সময় নয়। দেশের ভেতরের দুটি ISP-র মধ্যে পথ কেমন, তা-ও গুরুত্বপূর্ণ। আবার একটি ভিডিও বা ছবির ফাইল ঢাকার কাছের কোনো cache-এ থাকলে origin দূরে থাকলেও ব্যবহারকারী তা টের পান না।

সিদ্ধান্তের একটি পদ্ধতি:

  • ডেটা আগে: আইন বা খাতের নির্দেশনা কি দেশের ভেতরে রাখতে বলছে? বললে দেশের data center বা hybrid নকশা ধরতে হবে (পর্ব ০৩ দেখুন)। Hybrid-এ ব্যক্তিগত ডেটা দেশে, আর ছবি বা কম সংবেদনশীল কাজ cloud-এ থাকতে পারে।
  • মাপুন: Mumbai আর Singapore-এর মতো একাধিক region-এ ছোট পরীক্ষা চালান। ঢাকা, চট্টগ্রাম আর আপনার প্রধান ISP আর মোবাইল network থেকে মাপুন। গড় নয়, p95 দেখুন।
  • পথের ঝুঁকি: বাংলাদেশের আন্তর্জাতিক সংযোগ সাবমেরিন কেবল আর স্থলপথের ওপর নির্ভর করে। একটি কেবল কাটা গেলে কোনো region-এর delay হঠাৎ বদলাতে পারে। তাই দ্বিতীয় পথের কথা ভাবুন।
  • ডেটা পাঠাতে কম রাউন্ড ট্রিপ: HTTP/3, সংযোগ পুনর্ব্যবহার, CDN আর কম API call দূরত্বের কষ্ট অনেকটা কমায়। একটি পাতা ৩০ বার API ডাকলে ভালো region-ও ধীর লাগবে।
  • টিমের দক্ষতা: স্থানীয় provider-এ managed সার্ভিস কম হলে কাজ আপনার দলকেই করতে হবে। সেই সময়ের খরচও TCO-তে আসে, যা পর্ব ০৪-এ দেখেছেন।

মূল উপলব্ধি: বাংলাদেশের জন্য “সেরা region” বলে একটি উত্তর নেই। আছে আপনার ডেটার শ্রেণি, ব্যবহারকারীর ISP, প্রয়োজনীয় সার্ভিস আর বাজেট। অনুমান নয়, মাপা সংখ্যা দিয়ে সিদ্ধান্ত নিন, আর নির্দিষ্ট সময় পরপর আবার মাপুন।

প্র ০৪ডেটা দেশের ভেতরে রাখলেই কি sovereignty নিশ্চিত হয়?

না। ডেটা কোথায় আছে আর কার আদেশ খাটে, এই দুটি প্রশ্নের মধ্যে ফারাকটি আন্তর্জাতিক ঘটনা থেকেই সবচেয়ে ভালো বোঝা যায়।

  • CLOUD Act (যুক্তরাষ্ট্র, ২০১৮): এই আইনে যুক্তরাষ্ট্রের অধীন provider-কে নির্দিষ্ট শর্তে তার নিয়ন্ত্রণে থাকা ডেটা দিতে বলা যায়, ডেটা বিদেশে থাকলেও। তাই একটি মার্কিন provider-এর ইউরোপ region-এ থাকা ডেটা নিয়েও প্রশ্ন ওঠে।
  • Schrems II (ইউরোপের আদালত, ২০২০): এই রায়ে EU-US Privacy Shield বাতিল হয়, আর ইউরোপ থেকে ডেটা বাইরে পাঠানোর নিয়ম নিয়ে গভীর প্রশ্ন ওঠে।
  • GDPR (ইউরোপ, ২০১৮ থেকে কার্যকর): এটি সাধারণভাবে ডেটা ইউরোপে রাখতে বাধ্য করে না, বরং বাইরে পাঠানোর শর্ত দেয়। অনেকেই একে ভুল করে localisation আইন বলেন।
  • RBI-এর নির্দেশ (ভারত, ২০১৮): ভারতের কেন্দ্রীয় ব্যাংক payment system-এর ডেটা দেশের ভেতরে রাখার নির্দেশ দেয়। এটি খাতভিত্তিক localisation-এর পরিচিত উদাহরণ।

প্রকৌশলের দিক থেকে কয়েকটি স্তরের সুরক্ষা আছে: ডেটা এনক্রিপশন, গ্রাহকের নিয়ন্ত্রিত চাবি, স্থানীয় অপারেটর, audit log, “sovereign cloud” ধরনের পণ্য, আর সবচেয়ে কড়া ক্ষেত্রে দেশীয় provider বা নিজের data center. প্রতিটির সাথে দাম বাড়ে, আর সেবার মান বদলায়। Backup, log আর support-এর পথও যাচাই করতে হয়, কারণ শুধু database দেশে রাখলে কিন্তু log বিদেশে গেলে উদ্দেশ্য পূরণ হয় না।

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

মূল উপলব্ধি: Residency একটি প্রযুক্তিগত সেটিং, sovereignty একটি আইনি ও ক্ষমতার প্রশ্ন। প্রকৌশলী প্রথমটি বাস্তবায়ন করেন, দ্বিতীয়টির জন্য আইনজীবীর সাথে বসতে হয়।

প্র ০৫আলোর গতি যদি দেয়াল হয়, তাহলে পৃথিবীজোড়া একই ডেটাবেস কীভাবে সম্ভব?

দেয়ালটি পেরোনো যায় না, শুধু কোথায় ধাক্কা খাবেন সেটি বেছে নেওয়া যায়। ২০১২ সালে Google তাদের Spanner নিয়ে OSDI সম্মেলনে একটি paper প্রকাশ করে। সেখানে পৃথিবীজোড়া ডেটায় শক্ত consistency-র কথা বলা হয়। কৌশলটি ছিল Paxos দিয়ে একাধিক কপিতে একমত হওয়া, আর GPS ও atomic clock দিয়ে বানানো TrueTime, যা সময়ের অনিশ্চয়তার সীমা জানিয়ে দেয়।

কিন্তু এতেও আলোর গতি হারেনি। একটি লেখা নিশ্চিত হতে হলে কপিদের সংখ্যাগরিষ্ঠের উত্তর লাগে, তাই লেখার সময় নির্ভর করে কত দূরে সেই সংখ্যাগরিষ্ঠ। কপি কাছাকাছি রাখলে লেখা দ্রুত, কিন্তু একই এলাকার ঝুঁকি ভাগ করে। দূরে ছড়ালে নিরাপদ, কিন্তু ধীর। CAP theorem-এর সাথে যুক্ত PACELC ধারণা (Daniel Abadi) এই কথাটি সুন্দরভাবে বলে: network ভাগ হলে availability আর consistency-র মধ্যে বাছতে হয়, আর ভাগ না হলেও latency আর consistency-র মধ্যে বাছতে হয়।

বাস্তবে দলগুলো কয়েকটি পথ নেয়:

  • ডেটাকে ব্যবহারকারীর কাছে রাখা: বাংলাদেশের ব্যবহারকারীর ডেটা কাছের region-এ, ইউরোপের ডেটা ইউরোপে। পুরো পৃথিবীতে এক কপি নয়।
  • পড়া আর লেখা আলাদা: পড়া কাছের read replica থেকে, লেখা এক home region-এ।
  • দুর্বল consistency মেনে নেওয়া: লাইক সংখ্যা একটু পরে মিললেও ক্ষতি নেই, ব্যাংকের ব্যালান্সে আছে।
  • কাছাকাছি region-ত্রয়ী: শহর পেরিয়ে কিন্তু মহাদেশ পেরিয়ে নয়, যাতে সংখ্যাগরিষ্ঠের RTT কম থাকে।

লেখার সময় বিভিন্ন provider-এর multi-region database আছে, কিন্তু সেগুলোর আচরণ ও দাম একই নয়। তাই “global database” শব্দ দেখে সেটির লেখার delay আর consistency-র নথি পড়ুন।

মূল উপলব্ধি: পদার্থবিজ্ঞান একটি নকশার সীমা, কোনো bug নয়। ভালো নকশা কোন ডেটার জন্য কতটা consistency দরকার, তা আলাদা করে ঠিক করে, আর সেই অনুযায়ী দূরত্বের দাম দেয়।

অনুশীলন

হিসাবগুলো খাতায় করুন, তারপর উত্তর মেলান। মাস ৩০ দিন, বছর ৩৬৫ দিন।

  1. পূর্ণ হিসাব: একটি নকশায় DNS 99.99%, frontend-এর ২টি কপি (প্রতিটি 99.5%), API-র ৩টি কপি (প্রতিটি 99%), database-এর ২টি কপি (প্রতিটি 99.9%). সব স্তর series-এ, কপিগুলো স্বাধীন ধরুন। (ক) মোট availability, (খ) মাসে আর বছরে downtime কত? (গ) ঢাকা থেকে ৬,০০০ km fibre পথে প্রথম HTTPS সাড়া কত ms, যদি সার্ভারের সময় ৩০ ms হয় আর অন্য delay বাদ দেওয়া হয়?

    (ক) Frontend: 1 − 0.005² = 0.999975. API: 1 − 0.01³ = 0.999999. Database: 1 − 0.001² = 0.999999. গুণফল: 0.9999 × 0.999975 × 0.999999 × 0.999999 = 0.999873, মানে 99.9873%.

    (খ) 1 − A = 0.000127. মাসে ০.০০০১২৭ × ৪৩,২০০ ≈ ৫.৪৯ মিনিট, বছরে ০.০০০১২৭ × ৫,২৫,৬০০ ≈ ৬৬.৭৫ মিনিট, মানে প্রায় ১.১১ ঘণ্টা। খেয়াল করুন, DNS-ই এখানে সবচেয়ে বড় ভাগ।

    (গ) RTT = ৬,০০০ ÷ ১০০ = ৬০ ms. তিনটি RTT = ১৮০ ms, আর সার্ভারের ৩০ ms যোগে ২১০ ms.

  2. নকশা সমালোচনা: একটি দল বলছে, “আমাদের multi-AZ, তাই ঝুঁকি নেই।” তাদের নকশা: ৩টি VM তিন zone-এ, কিন্তু একটি NAT gateway আর database শুধু AZ-a-তে; backup একই region-এ একই account-এ; deployment একই সময়ে তিন zone-এ যায়; কোনো failover মহড়া হয়নি। সমস্যাগুলো ধরুন, আর উন্নতির পরামর্শ দিন।
    • Database আর NAT AZ-a-তে: VM তিন zone-এ হলেও AZ-a পড়লে পুরো অ্যাপ অচল হতে পারে। Database-এ multi-AZ standby, আর প্রতি zone-এ NAT বা বিকল্প পথ দরকার।
    • Backup একই জায়গায়: Region-স্তরের ঘটনা, ভুলে মোছা বা account compromise-এ backup-ও যেতে পারে। অন্য region আর আলাদা account-এ, immutable কপি রাখুন।
    • একসাথে deployment: একটি খারাপ release সব zone-এ একসাথে যাবে। ধাপে ধাপে, এক zone পরে এক zone rollout করুন।
    • মহড়া নেই: পরীক্ষা না করা failover একটি অনুমানমাত্র। নিয়মিত game day করুন।

    Availability-র হিসাবে AZ-a-র অংশগুলো series-এ বসে, তাই আসল ছবি কাগজের চেয়ে অনেক কম। আরও দেখুন পর্ব ২৪-এর backup কৌশল।

  3. আউটপুট অনুমান করুন: নিচের কোড না চালিয়ে আগে তিনটি লাইনের মান বলুন, আর ব্যাখ্যা করুন n = 2 থেকে n = 3-এ বৃদ্ধি কেন এত কম।
    const shared = 0.9995, a = 0.995;
    for (const n of [1, 2, 3]) {
      const total = shared * (1 - (1 - a) ** n);
      console.log(n, (total * 100).toFixed(4) + "%");
    }
    1 99.4503%
    2 99.9475%
    3 99.9500%

    n = 1 থেকে 2-তে বড় লাফ, কারণ ব্যর্থতার সম্ভাবনা ০.৫% থেকে ০.০০২৫% হলো। কিন্তু n = 3-তে ফল প্রায় 99.95%-এ থামে। কারণ shared = 0.9995 অংশটি সব কপির ওপরে series-এ বসে আছে, আর এটিই ছাদ। তৃতীয় কপি কিনলে খরচ বাড়ে, প্রায় কিছুই পাওয়া যায় না।

  4. নিজের সংযোগ মাপুন (ঐচ্ছিক, account লাগবে না, খরচ নেই): নিচের curl কমান্ডটি নিজের কম্পিউটারে চালান, আর ap-south-1 বদলে অন্য region দিয়েও দেখুন। Region-এর ঠিকানা থেকে আসা error বা redirect নিয়ে চিন্তা করবেন না, আমরা শুধু সময় মাপছি। তারপর পদার্থবিজ্ঞানের ন্যূনতম সময়ের সাথে তুলনা করুন।
    # উদাহরণ: সংযোগের সময় মাপা (সেকেন্ডে)
    curl -o /dev/null -s -w \
     "dns %{time_namelookup} tcp %{time_connect} tls %{time_appconnect}\n" \
     https://ec2.ap-south-1.amazonaws.com/
    
    # নমুনা আউটপুট — আপনার ফল আলাদা হবে
    dns 0.012 tcp 0.092 tls 0.178

    Tcp − dns ≈ এক RTT. নমুনায় ০.০৯২ − ০.০১২ = ০.০৮০ s, মানে ৮০ ms. Tls − tcp ≈ TLS handshake: ০.১৭৮ − ০.০৯২ = ০.০৮৬ s. এগুলো নমুনা সংখ্যা, আসল মান নিজেকে মাপতে হবে।

    আপনার RTT যদি estimator-এর ২৮ ms-এর (১.৫ গুণ পথ ধরে) অনেক ওপরে হয়, তবে ধরে নেওয়া যায় পথ বেশি ঘুরছে, বা ভিড় আছে, বা আপনার শেষ অংশের সংযোগ ধীর। কয়েকবার, আলাদা সময়ে মাপুন, আর একটি মাত্র সংখ্যায় সিদ্ধান্ত নেবেন না।

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

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

ক্রমএকটি অ্যাপের region বাছাইয়ের ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)

  1. ডেটার শ্রেণি আর প্রযোজ্য আইন বা নির্দেশনা জানা
  2. দরকারি সার্ভিস নেই এমন region বাদ দেওয়া
  3. ব্যবহারকারীর দিক থেকে latency মাপা
  4. খরচ আর DR-এর ওজন দিয়ে নম্বর দেওয়া
  5. ছোট পরীক্ষা চালিয়ে সিদ্ধান্ত নেওয়া, পরে আবার যাচাই করা

একটি availability zone-এর মূল উদ্দেশ্য কী?

  • বিল কমানো
  • একই region-এর ভেতরে ব্যর্থতাকে একটি অংশে আটকে রাখা
  • ব্যবহারকারীর পাড়ার কাছে ফাইল পৌঁছে দেওয়া
  • ডেটাকে অন্য দেশের আইন থেকে মুক্ত রাখা

ধরুন একটি সিস্টেমের তিনটি অংশ series-এ, প্রত্যেকটির availability 99.9%. মোট availability কত, ৩০ দিনের মাসে downtime প্রায় কত?

  • 99.9%, ৪৩ মিনিট
  • 99.9999999%, প্রায় শূন্য
  • 99.7003%, প্রায় ১২৯.৫ মিনিট
  • 99%, ৪৩২ মিনিট

দুটি স্বাধীন কপি, প্রতিটির availability 99%. Parallel-এ মোট availability কত, আর কোন অনুমান ভাঙলে সংখ্যাটি অনেক কমে যাবে?

  • 99.99%; কপিগুলো একই কারণে একসাথে বিকল না হওয়ার অনুমান
  • 98.01%; কপিগুলো একই region-এ থাকার অনুমান
  • 99.99%; দুটি কপির খরচ সমান হওয়ার অনুমান
  • 100%; কোনো অনুমান লাগে না

Fibre-এ আলো প্রতি ms-এ প্রায় ২০০ km যায়। ৪,৫০০ km fibre পথে propagation-এর হিসাবে সর্বনিম্ন RTT কত, আর ৫ ms RTT-র বাজেটে synchronous replication-এর পথ সর্বোচ্চ কত হতে পারে?

  • ২২.৫ ms; ৫০০ km
  • ৪৫ ms; ১,০০০ km
  • ৩০ ms; ৭৫০ km
  • ৪৫ ms; ৫০০ km

একটি অ্যাপ তিন zone-এ চলছে। কোনটি থেকে multi-AZ নকশা নিজে থেকে বাঁচাতে পারবে না?

  • একটি zone-এর ভবনে বিদ্যুৎ বিপর্যয়
  • একজন কর্মীর ভুলে production টেবিল মুছে ফেলা
  • একটি VM-এর হার্ডওয়্যার নষ্ট হওয়া
  • একটি zone-এর network বিচ্ছিন্ন হওয়া

একটি কোম্পানি সব ডেটা একটি দেশের region-এ রেখেছে, কিন্তু provider অন্য দেশে নিবন্ধিত, আর সেই দেশের আদালত provider-কে আদেশ দিতে পারে। এই পরিস্থিতিতে কোন বিষয়টি আলাদা করে ভাবতে হবে?

  • Latency
  • Data residency
  • Data sovereignty
  • Availability

শব্দকোষ

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

মনে রাখুন

  1. Region ভৌগোলিক এলাকা, AZ তার বিচ্ছিন্ন অংশ, edge ব্যবহারকারীর কাছের ছোট ঘাঁটি, আর local zone শহরের কাছে region-এর সীমিত সম্প্রসারণ।
  2. Fibre-এ RTT (ms) ≈ km ÷ ১০০, আর প্রথম HTTPS সাড়ায় লাগে প্রায় ৩টি RTT.
  3. Series-এ গুণ, parallel-এ 1 − (1 − a)ⁿ; মাসে ৪৩,২০০ মিনিট, বছরে ৫,২৫,৬০০ মিনিট।
  4. স্বাধীনতার অনুমান ভাঙলে কপির লাভ কমে। Shared dependency একটি ছাদ বসায়।
  5. Region পেরোলে সাধারণত async, zone-এ sync; আর residency আর sovereignty এক জিনিস নয়।

পরের পর্বে: জায়গা তো বুঝলেন, এবার cloud-এ ঢোকার পথ। Console, CLI, API, account-এর গঠন, আর ভুলে বড় বিল আসা ঠেকানোর নিয়ম দেখব।

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

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