Multi-region ও Edge
- ●Multi-region deployment একাধিক ভৌগোলিক অঞ্চলে অ্যাপ চালায় — কম latency ও disaster recovery-র জন্য।
- ●Active-active-এ সব region traffic নেয়; active-passive-এ একটি প্রধান, অন্যটি backup; পছন্দ নির্ভর করে data consistency ও খরচের উপর।
- ●Cross-region data replication ও geo-routing জটিল; edge/CDN ব্যবহারকারীর কাছাকাছি content দিয়ে latency আরও কমায়।
সমস্যাটা কী?
ধরো তোমার অ্যাপের server শুধু সিঙ্গাপুরে। ঢাকার ব্যবহারকারীর জন্য মোটামুটি ঠিক, কিন্তু লন্ডন বা নিউইয়র্কের ব্যবহারকারীর প্রতিটি request-কে হাজার হাজার কিলোমিটার পাড়ি দিতে হয়। আলো যত দ্রুতই হোক, এই দূরত্ব মানে অতিরিক্ত latency — পৃষ্ঠা ধীরে লোড হয়, ব্যবহারকারী বিরক্ত হয়।
আরও বড় বিপদ — যদি সিঙ্গাপুরের পুরো data center কোনো দুর্যোগে (বিদ্যুৎ, আগুন, network কাটা) বন্ধ হয়ে যায়? তোমার পুরো অ্যাপ বিশ্বজুড়ে ডাউন। একটিমাত্র region মানে একটিমাত্র single point of failure।
এই দুটি সমস্যা — দূরবর্তী ব্যবহারকারীর latency আর একক region-এর ঝুঁকি — সমাধান করতে অ্যাপকে একাধিক ভৌগোলিক অঞ্চলে চালানো হয়, যাকে বলে multi-region deployment।
মূল ধারণা
Multi-region deployment হলো একটি অ্যাপ্লিকেশনকে একাধিক ভৌগোলিক region-এ (যেমন এশিয়া, ইউরোপ, আমেরিকা) একসাথে চালানো, যাতে কম latency ও উচ্চ availability নিশ্চিত হয়।
দুটি মূল চালিকাশক্তি:
- Latency: ব্যবহারকারীকে তার কাছের region থেকে সেবা দিলে দ্রুত।
- Disaster Recovery (DR): একটি region পুরো বন্ধ হলেও অন্য region সেবা চালু রাখে।
কিন্তু এর সবচেয়ে কঠিন অংশ — একাধিক region-এ data কীভাবে synchronize রাখা যায়। এখানেই আসল চ্যালেঞ্জ।
কীভাবে কাজ করে
Geo-routing
ব্যবহারকারীকে সঠিক (সাধারণত কাছের) region-এ পাঠানোর কাজ করে geo-routing — সাধারণত DNS-level-এ (যেমন AWS Route 53, Cloudflare)। ব্যবহারকারীর IP/অবস্থান দেখে নিকটতম বা সুস্থ region-এর server-এ পাঠানো হয়।
Architecture-র দুটি ধরন
| বৈশিষ্ট্য | Active-Passive | Active-Active |
|---|---|---|
| Traffic | শুধু primary region নেয় | সব region নেয় |
| Backup region | standby, ব্যর্থতায় চালু | সবসময় সক্রিয় |
| Latency সুবিধা | সীমিত | সব অঞ্চলে ভালো |
| জটিলতা | কম | বেশি (data sync কঠিন) |
| খরচ | তুলনামূলক কম | বেশি |
| Failover | কিছুটা সময় লাগে | প্রায় তাৎক্ষণিক |
- Active-Passive: একটি region প্রধান (traffic নেয়), অন্যটি standby। primary ব্যর্থ হলে passive-এ failover হয়। সরল, কিন্তু passive region-এর resource বেশিরভাগ সময় অলস।
- Active-Active: সব region একসাথে traffic নেয়। সর্বোচ্চ availability ও সব অঞ্চলে কম latency, কিন্তু data সব region-এ একসাথে ঠিক রাখা অত্যন্ত কঠিন।
Cross-region data replication
এটাই multi-region-এর সবচেয়ে কঠিন অংশ। data এক region-এ লেখা হলে অন্য region-এ পৌঁছাতে network-এর কারণে দেরি হয়। এখানে CAP theorem-এর বাস্তব প্রভাব দেখা যায়:
- Synchronous replication: লেখা সব region-এ নিশ্চিত হওয়ার পর confirm — strong consistency, কিন্তু ধীর।
- Asynchronous replication: লেখা এক region-এ হয়ে confirm, পরে অন্য region-এ যায় — দ্রুত, কিন্তু সাময়িক অসংগতি (eventual consistency)।
Active-active-এ একই data দুই region-এ একসাথে বদলালে conflict হতে পারে, যা সমাধান করতে আলাদা কৌশল (last-write-wins, CRDT ইত্যাদি) লাগে।
ভাবো একটা দেশজুড়ে চেইন রেস্তোরাঁ। আগে শুধু ঢাকায় একটা শাখা ছিল — চট্টগ্রামের কেউ খেতে চাইলে ঢাকায় আসতে হতো (high latency), আর ঢাকার শাখা বন্ধ হলে কেউ খেতেই পারত না (single point of failure)। এখন তারা ঢাকা, চট্টগ্রাম, সিলেটে শাখা খুলেছে (multi-region) — যে যার কাছের শাখায় যায় (geo-routing)। Active-active হলো — সব শাখা একসাথে খোলা, সবাই সেবা দেয়। Active-passive হলো — মূল শাখা ঢাকায়, কিন্তু একটা backup শাখা শুধু জরুরি অবস্থায় খোলে। আর প্রতিটি শাখায় মেনু/দাম একই রাখতে (data replication) head office থেকে নিয়মিত update পাঠাতে হয় — সেই update পৌঁছাতে দেরি হলেই অসংগতি।
কৌশল
Edge Computing ও CDN
multi-region-এর আরেক ধাপ এগিয়ে হলো edge। ব্যবহারকারীর আরও কাছে — শত শত ছোট location-এ (edge node) — content বা compute রাখা হয়।
- CDN (Content Delivery Network): ছবি, video, CSS, JS-এর মতো static content ব্যবহারকারীর কাছের edge থেকে পরিবেশন করে। যেমন Cloudflare, Akamai, CloudFront।
- Edge computing: শুধু content নয়, ছোট ছোট compute (যেমন Cloudflare Workers, Lambda@Edge)-ও edge-এ চালানো হয় — authentication, redirect, personalization ইত্যাদি ব্যবহারকারীর কাছেই হয়, central server-এ যেতে হয় না।
এর ফলে latency নাটকীয়ভাবে কমে, কারণ অনেক কাজ আর দূরের data center পর্যন্ত পৌঁছায় না।
কখন ব্যবহার করবে / করবে না
ব্যবহার করবে যখন:
- ব্যবহারকারী বিশ্বজুড়ে ছড়ানো এবং low latency জরুরি।
- উচ্চ availability/DR প্রয়োজন (একটি region বন্ধ হলেও চলবে)।
- নিয়ন্ত্রক প্রয়োজন (data residency — নির্দিষ্ট দেশের data সেই দেশেই রাখতে হবে)।
করবে না যখন:
- ব্যবহারকারী একটি অঞ্চলেই কেন্দ্রীভূত (যেমন শুধু বাংলাদেশের জন্য অ্যাপ — তখন static content-এ CDN যথেষ্ট, full multi-region নয়)।
- দল ও বাজেট ছোট, কারণ multi-region-এর জটিলতা ও খরচ অনেক।
Multi-region অনেকের কাছে "বেশি server = বেশি নির্ভরযোগ্য" মনে হয়, কিন্তু এটি বিপুল জটিলতা যোগ করে — বিশেষ করে data consistency। Active-active-এ দুই region-এ একই data একসাথে বদলালে conflict হয়, আর asynchronous replication-এ ব্যবহারকারী এক region-এ লেখা data অন্য region-এ সাথে সাথে নাও দেখতে পারে। প্রকৃত প্রয়োজন (global user বা কঠোর DR) না থাকলে multi-region-এ ঝাঁপিয়ে পড়া উল্টো নতুন bug ও খরচ ডেকে আনে।
বাস্তব উদাহরণ
Netflix বিশ্বজুড়ে multi-region active-active চালায়। তাদের video content বিশ্বজুড়ে হাজার হাজার CDN edge node (Open Connect)-এ রাখা — তুমি যখন কোনো সিনেমা দেখো, সেটি তোমার ISP-র কাছের একটা edge থেকে আসে, সুদূর আমেরিকা থেকে নয়। এতে buffering কমে। আর কোনো একটা AWS region পুরো বন্ধ হলে তারা সেই region-এর traffic অন্য region-এ সরিয়ে দেয় — ব্যবহারকারী টেরও পায় না।
অন্যদিকে একটা বাংলাদেশভিত্তিক e-commerce, যাদের প্রায় সব ব্যবহারকারী দেশের ভেতরে, full multi-region করার দরকার নেই। তারা একটি প্রধান region (যেমন সিঙ্গাপুর) ব্যবহার করে, কিন্তু ছবি ও static asset-এর জন্য CDN ব্যবহার করে যা ঢাকার কাছের edge থেকে দ্রুত পরিবেশন করে। এতে অপেক্ষাকৃত কম খরচে ভালো performance পায়।
Interview-তে "globally distributed system কীভাবে ডিজাইন করবে?" প্রশ্নে latency আর availability — এই দুই কারণ আলাদা করে বলো। তারপর active-active বনাম active-passive-এর trade-off (consistency বনাম খরচ) আলোচনা করো, আর জোর দাও যে আসল কঠিন সমস্যা হলো cross-region data replication ও consistency (এখানে CAP theorem টানো)। শেষে edge/CDN-এর কথা বললে দেখাবে তুমি latency-কে stack-এর সব স্তরে ভাবো।
মূল শব্দ (Key Terms)
মিনি কুইজ
1. Multi-region deployment-এর প্রধান দুটি কারণ কী?
2. Active-active আর active-passive-এর মূল পার্থক্য কী?
3. Edge computing / CDN কীভাবে latency কমায়?