এই পর্বে যা শিখবেন
- আটটি স্তরের ছকে on-premises, IaaS, CaaS, PaaS, FaaS আর SaaS মেলাতে পারা
- AWS, Azure আর Google Cloud-এর কোন service কোন ঘরে পড়ে, তা চেনা
- OS patch আর মুছে যাওয়া table: একই ঘটনা প্রতিটি model-এ কীভাবে সামলাবেন
- Shared responsibility-র সাধারণ ভুল ধারণা ধরতে পারা
- নিয়ন্ত্রণ, গতি, খরচ আর lock-in মিলিয়ে যুক্তিসহ model বেছে নেওয়া
১ · “আমরা cloud-এ আছি” — তার মানে কী?
একটি কাল্পনিক অনলাইন বাজার অ্যাপের কথা ভাবুন। এক দুপুরে একজন কর্মীর ভুলে order-এর table মুছে গেল। দলের প্রধান শান্তভাবে বললেন, “চিন্তা নেই, আমরা তো cloud-এ আছি।” কিন্তু খোঁজ নিয়ে দেখা গেল, কেউ কখনো backup চালু করেননি। সবাই ভেবেছিলেন, কাজটি cloud-এর।
এই ভুল বোঝাবুঝি খুব সাধারণ। কারণ “cloud” একটিমাত্র জিনিস নয়। আগের পর্বে দেখেছেন, cloud মানে প্রয়োজনমতো ভাড়া নেওয়া computing. কিন্তু ভাড়ার মধ্যে কতটুকু আছে, সেটি আপনি কী ভাড়া নিচ্ছেন তার ওপর নির্ভর করে। মেসের একটি ঘর ভাড়া নিলে রান্না আপনার; হোটেলে উঠলে রান্না হোটেলের। দুটোই ভাড়া, কিন্তু কাজের ভাগ আলাদা।
Cloud-এ এই ভাগটির নাম service model: provider কতটুকু সামলাবে আর আপনি কতটুকু। বোঝার সবচেয়ে সহজ পথ রান্না।
ধরুন বাড়িতে ৫০ জন অতিথি আসবেন। খাওয়ানোর চারটি পথ আছে, আর প্রতিটি পথে আপনার কাজ কমে।
| খাওয়ানোর পথ | আপনি করেন | অন্য কেউ করে | Cloud-এ মিল |
|---|---|---|---|
| নিজে রান্না (নিজের ঘর, চুলা, হাঁড়ি) | রান্নাঘর, গ্যাস, বাজার, রান্না, পরিবেশন, ধোয়া: সব | কিছুই না | On-premises |
| বাজার করা রান্না (ভাড়া করা রান্নাঘরে নিজের বাজারে) | বাজার, মসলা, রান্না, পরিবেশন | রান্নাঘর, চুলা, গ্যাস | IaaS |
| ক্যাটারিং (বিয়েবাড়ির মতো) | মেনু, অতিথির তালিকা, হিসাব | বাজার, বাবুর্চি, চুলা, পরিবেশন | PaaS |
| রেস্তোরাঁ | শুধু বসে অর্ডার আর বিল দেওয়া | বাকি সব | SaaS |
মিলটি কোথায় থামে, সেটিও জানা দরকার। রেস্তোরাঁয় গেলেও আপনার খাবারে অ্যালার্জি আছে কি না, সেটি আপনাকেই জানাতে হয়; মানিব্যাগ টেবিলে ফেলে গেলে দায় আপনার। Cloud-এও সবচেয়ে ওপরের model-এ কিছু দায় আপনার থেকে যায়। এই কথাটিই পর্বের কেন্দ্র।
FaaS-কে ভাবতে পারেন প্লেট-প্রতি ক্যাটারিং হিসেবে: বাবুর্চি বসে থাকলে বিল নেই, যত প্লেট তত বিল। আর CaaS হলো ভাড়া করা রান্নাঘরে নিজের রেসিপি আর মসলা বাক্সে বেঁধে নিয়ে যাওয়া, চুলা জ্বালানোর কাজটি রান্নাঘরের লোক করেন।
২ · দায়িত্বের স্তূপ — আটটি স্তর, ছয়টি model
যেকোনো অনলাইন app চলতে হলে নিচ থেকে ওপরে আটটি স্তর লাগে। প্রথমে স্তরগুলো চিনে নিন:
- Network, storage, servers: তার, switch, disk আর আসল কম্পিউটার। Data center-এর হার্ডওয়্যার।
- Virtualization: একটি বড় server-কে কয়েকটি ছোট virtual machine-এ ভাগ করার স্তর। এটি চালায় hypervisor নামের software.
- OS: Linux বা Windows, যার ওপর সব চলে।
- Runtime: আপনার কোড চালানোর পরিবেশ, যেমন Node.js, Python, JVM. অনেক ছকে এখানে middleware আলাদা স্তর থাকে; আমরা দুটিকে এক ঘরে রাখছি।
- Data: আপনার ব্যবহারকারীর তথ্য।
- Application: আপনার কোড আর তার library.
নিচের stepper-এ model ধরে ধরে এগিয়ে যান। প্রতি ধাপে একটি কলাম চিহ্নিত হবে। খেয়াল করুন, কমলা ঘর কীভাবে নিচ থেকে ওপরে সরে যাচ্ছে। এই সরে যাওয়াটিই পুরো পর্বের সারকথা।
| Model | |
| আপনার | |
| ভাগাভাগি | |
| Provider-এর | |
| আপনি যা deploy করেন |
- On-premises: আট ঘরই আপনার। On-premises মানে নিজের ঘর বা ভাড়া করা rack-এ নিজের হার্ডওয়্যার। এটি cloud model নয়; তুলনার ভিত্তি। UPS নষ্ট হলে রাত দুটোয় ফোন আসবে আপনার কাছেই।
- IaaS: নিচের চার স্তর provider-এর। আপনি পান একটি virtual machine. OS বেছে নেন, আর সেই মুহূর্ত থেকে OS-এর patch, runtime, ডেটা, কোড সব আপনার। পার্থক্য হলো, হার্ডওয়্যার নষ্ট হওয়া এখন আর আপনার সমস্যা নয়।
- CaaS: OS ভাগাভাগিতে এল। আপনি দেন container image, provider চালায় orchestration. Node-এর OS-এর দায় ভাগ হয়: নতুন node image provider বানায়, চালু করা অনেক সময় আপনার, যদি না provider পুরো node সামলায়। খেয়াল করুন, runtime এখনো আপনার, কারণ সেটি আপনার image-এর ভেতরেই থাকে।
- PaaS: OS পুরো provider-এর। আপনি দেন শুধু কোড। Runtime ভাগাভাগিতে এল: security patch provider দেয়, কিন্তু কোন major version চলবে, সেটি আপনি বাছেন, আর version-এর মেয়াদ ফুরালে সরে যাওয়ার কাজ আপনার।
- FaaS: স্তরের হিসাব PaaS-এর মতোই। তাহলে পার্থক্য কোথায়? একক ছোট হয়েছে। PaaS-এ সাধারণত একটি app সবসময় চলে; FaaS-এ একটি function শুধু ঘটনা ঘটলে চলে, আর কোনো অনুরোধ না থাকলে সংখ্যা শূন্যে নামতে পারে (scale to zero).
- SaaS: শুধু ডেটার ঘর আপনার। আপনি app ব্যবহার করেন, বানান না। সব patch provider-এর। কিন্তু ডেটার ঘরটি কমলাই থাকে: অনেক পুরোনো ছকে এটি provider-এর ঘরে দেখানো হয়। ডেটা রাখার যন্ত্র provider-এর, এটুকু ঠিক; কিন্তু ডেটা কে দেখবে আর ভুলে মুছলে কী হবে, সেই দায় আপনার।
ছকের “Network” আর “Storage” মানে শারীরিক অংশ। IaaS-এ তারের দায় provider-এর হলেও VPC-র নিয়ম, firewall-এর অনুমতি আর disk encryption চালু করার সিদ্ধান্ত আপনার। ভিন্ন লেখক ঘরগুলো একটু ভিন্নভাবে আঁকেন; রেখার দিকটি সবার ক্ষেত্রে এক।
Model-এর নাম মুখস্থ না করে একটি প্রশ্ন করুন: “রাত দুটোয় এই স্তরে সমস্যা হলে কাকে ফোন করতে হবে?” উত্তর “আমাদের দলকে” হলে স্তরটি আপনার। উত্তর “provider-কে ticket দিতে হবে” হলে স্তরটি provider-এর।
৩ · ছয়টি model কাছ থেকে — AWS, Azure আর Google Cloud-এ
IaaS · ভাড়ার কম্পিউটার
Infrastructure as a Service. কয়েক মিনিটে VM, disk আর network পান। যেকোনো software বসানো যায়, পুরোনো app-ও চলে। দাম হলো সব ব্যবস্থাপনা আপনার। বিস্তারিত পর্ব ১৫-এ।
ব্যবহার: পুরোনো app, বিশেষ OS-এর দরকারCaaS · container চালানোর জায়গা
Containers as a Service. আপনি image দেন, platform সেগুলো চালায়, ফিরিয়ে আনে, ছড়িয়ে দেয়। Container পর্ব ৩৬-এ আর Kubernetes পর্ব ৪২-এ আসবে।
ব্যবহার: অনেক service, container-এ অভ্যস্ত দলPaaS · কোড দিন, চালাবে platform
Platform as a Service. কোড push করলে platform build করে, চালায়, TLS আর scaling সামলায়। ঘরের কাজ কম, তবে platform-এর নিয়ম মেনে চলতে হয়।
ব্যবহার: সাধারণ web app, ছোট দলFaaS · ঘটনা হলেই একটি function
Function as a Service. ছবি upload হলো, বা HTTP অনুরোধ এল, অমনি ছোট কোড চলল। যতবার চলল, যতক্ষণ চলল, মূলত তত বিল। পর্ব ৬৯-এ বিস্তারিত।
ব্যবহার: ছোট, হঠাৎ-আসা, ঘটনাভিত্তিক কাজনিচের টেবিলে তিন provider-এর পরিচিত service দেওয়া হলো। নাম মুখস্থ করার দরকার নেই; প্রথমে ঘরটি চিনুন, নামটি পরে আসবে। নাম সময়ের সাথে বদলায়, তাই provider-এর সাম্প্রতিক docs দেখে নেবেন।
| Model | AWS | Azure | Google Cloud |
|---|---|---|---|
| IaaS (VM) | Amazon EC2 | Azure Virtual Machines | Compute Engine |
| CaaS (Kubernetes) | Amazon EKS | Azure Kubernetes Service | Google Kubernetes Engine |
| Serverless container | AWS Fargate | Azure Container Apps | Cloud Run |
| PaaS | AWS Elastic Beanstalk | Azure App Service | App Engine |
| FaaS | AWS Lambda | Azure Functions | Cloud Run functions (আগের নাম Cloud Functions) |
| DBaaS | Amazon RDS | Azure SQL Database | Cloud SQL |
| SaaS | Amazon WorkMail | Microsoft 365 | Google Workspace |
সীমারেখা সবসময় পরিষ্কার নয়। Elastic Beanstalk সাধারণত PaaS বলে পরিচিত, কিন্তু তার VM আপনার account-এই দেখা যায়, আর platform update-এর কিছু সিদ্ধান্ত আপনার হাতে থাকে। আবার FaaS-এ container image দিয়ে function চালালে সেই image-এর runtime আপনার দায়িত্বে চলে আসে। তাই service-এর নামে নয়, তার shared responsibility পাতায় যা লেখা, সেটি পড়ুন।
৪ · “X as a Service”-এর ভিড় আর NIST-এর তিনটি model
২০১১ সালে আমেরিকার মান সংস্থা NIST তাদের SP 800-145 দলিলে (লেখক Peter Mell ও Timothy Grance) মাত্র তিনটি service model দিয়েছিল: SaaS, PaaS, IaaS. পরীক্ষায় “NIST-এর মতে service model কয়টি” জিজ্ঞেস করলে উত্তর তিন। CaaS আর FaaS সেখানে নেই, কারণ ২০১৩ সালে Docker আর ২০১৪ সালে AWS Lambda আসার আগেই দলিলটি লেখা।
তাহলে কি NIST ভুল? না। নতুন শব্দগুলো তিনটি ঘরের মাঝের জায়গাকে আরও সূক্ষ্মভাবে ভাগ করে। CaaS বসে IaaS আর PaaS-এর মাঝে; FaaS-কে অনেকে PaaS-এর একটি বিশেষ রূপ বলেন। এগুলো শিল্পের ব্যবহারিক শব্দ, কোনো এক কর্তৃপক্ষের সংজ্ঞা নয়।
এর পর শব্দের বন্যা এসেছে। DBaaS (Database as a Service) সবচেয়ে কাজের: database engine provider চালায়, আপনি schema, query আর ডেটা সামলান। এটি মূলত ডেটাবেসের জন্য PaaS, বিস্তারিত পর্ব ২২-এ, আর তত্ত্ব আছে DBMS কোর্সের cloud database পর্বে।
| শব্দ | সাধারণ অর্থ | সাবধান |
|---|---|---|
| STaaS | Storage as a Service, যেমন object storage | ডেটার দায় আপনার |
| BaaS | Backend as a Service: login, database, push notification তৈরি অবস্থায় | Backup as a Service-ও BaaS লেখা হয় |
| DaaS | Desktop as a Service: cloud-এ চলা ডেস্কটপ | Data as a Service-ও DaaS লেখা হয় |
| NaaS | Network as a Service: ভাড়ার network সুবিধা | পণ্যভেদে অর্থ আলাদা |
| CaaS | Containers as a Service | ISO/IEC 17788 (২০১৪)-এ CaaS মানে Communications as a Service |
শব্দের ভিড়ে না হারিয়ে দুটি প্রশ্ন করুন: “কোন স্তর পর্যন্ত provider সামলাচ্ছে?” আর “এই সংক্ষিপ্ত রূপটি লেখক কোন অর্থে ব্যবহার করছেন?”
Serverless শব্দটিও এখানে গোলমাল বাধায়। FaaS একটি নির্দিষ্ট model. Serverless একটি বড় ধারণা: server-এর সংখ্যা ভাবতে হয় না, ব্যবহার অনুযায়ী বিল, শূন্যে নামতে পারে। FaaS serverless-এর উদাহরণ, কিন্তু object storage বা কিছু serverless database-ও এই দলে পড়ে। আর server অবশ্যই আছে; শুধু আপনি সেগুলো দেখেন না।
৫ · Shared responsibility — কার দায় কোথায় শেষ
স্তরের ছক বলে কে চালায়। নিরাপত্তার ক্ষেত্রে একই কথাকে বলা হয় shared responsibility model. AWS কথাটি দুটি বাক্যাংশে বলে: provider সামলায় security of the cloud (data center-এর দরজা, হার্ডওয়্যার, hypervisor), আর আপনি সামলান security in the cloud (আপনার ডেটা, অনুমতি, সেটিং)। Azure আর Google Cloud-এর docs-এও ভাগটি একই রকম, শব্দ একটু আলাদা।
ব্যাংকের লকারের কথা ভাবুন। ভবনের পাহারা, ভল্টের দরজা, CCTV ব্যাংকের দায়। কিন্তু চাবি যদি আপনি রাস্তায় হারান, বা লকারে যা রাখলেন সেটি ভুলে ফেলে দেন, ব্যাংক সেটি ফিরিয়ে দিতে পারবে না। ভল্ট যত শক্তই হোক, আপনার চাবির দায় আপনার।
রেখা ওপরে উঠলে provider-এর অংশ বাড়ে, কিন্তু তিনটি জিনিস প্রায় কখনোই সরে না।
এই তিনটি সব model-এ আপনার
নিচের টেবিলে সবচেয়ে সাধারণ ভুল ধারণাগুলো দেখুন। শর্ত provider আর পণ্যভেদে আলাদা, তাই নিজের চুক্তি আর docs মিলিয়ে নিতে হবে।
| ভুল ধারণা | আসল ব্যাপার |
|---|---|
| “Cloud-এ আছি, তাই backup হচ্ছে।” | VM-এর disk-এর snapshot সাধারণত আপনাকেই ঠিক করতে হয়। DBaaS-এ স্বয়ংক্রিয় backup থাকতে পারে, তবে কতদিন থাকবে তা সীমিত ও সেটিংনির্ভর। |
| “Provider-এর durability অনেক বেশি, তাই ডেটা হারাবে না।” | Durability হার্ডওয়্যার নষ্ট হওয়া থেকে বাঁচায়। আপনার দেওয়া বৈধ মোছার আদেশও সে নিষ্ঠার সাথে পালন করে। |
| “Replica আছে, backup লাগবে না।” | Replica আসল ডেটার পিছু পিছু চলে। ভুলে মোছা কয়েক সেকেন্ডেই replica-তেও পৌঁছে যায়। |
| “SaaS-এ নিরাপত্তা পুরোটাই vendor-এর।” | দুর্বল password, MFA বন্ধ, চাকরি ছাড়া কর্মীর account, “link থাকলেই দেখা যাবে” শেয়ার: সবই আপনার সিদ্ধান্ত। |
| “Provider-এর compliance certificate আছে, তাই আমরাও compliant.” | Certificate provider-এর অংশটুকু ঢাকে। আপনার অংশের প্রমাণ আপনাকেই দিতে হয়। |
| “Encryption চালু, তাই নিরাপদ।” | যে identity-র অনুমতি আছে, তার কাছে ডেটা খোলাই থাকে। ভুল অনুমতি হলে encryption বাঁচায় না। |
| “FaaS-এ server নেই, তাই নিরাপত্তাও ভাবতে হবে না।” | Function-এর অনুমতি, তার library আর input যাচাই আপনার। |
এবার কথাটি হিসাবে দেখি। নিচের ছোট calculator-এ MODEL বদলে “চালিয়ে দেখুন” চাপুন। এটি আগের ছকটিই কোডে রেখে বলে দেয়, ঐ model-এ আপনাকে কী কী patch করতে হবে। Patch মানে ত্রুটি সারানোর আপডেট।
// Responsibility calculator. Change MODEL, then press Run.
const MODEL = "paas"; // onprem | iaas | caas | paas | faas | saas
// One letter per layer: Y = you, S = shared, P = provider.
const LAYERS = ["network", "storage", "servers", "virtualization",
"os", "runtime", "data", "application"];
const WHO = { onprem: "YYYYYYYY", iaas: "PPPPYYYY", caas: "PPPPSYYY",
paas: "PPPPPSYY", faas: "PPPPPSYY", saas: "PPPPPPYP" };
const PATCH = {
network: "switch, router and firewall firmware",
storage: "disk and storage controller firmware",
servers: "BIOS and server firmware",
virtualization: "hypervisor",
os: "OS and kernel",
runtime: "language runtime and web server",
application: "your code and its libraries", // data is protected, not patched
};
const SHARED = {
os: "node OS: you roll out new node images, unless the provider runs the nodes",
runtime: "runtime: provider patches it, you leave versions near end of support",
};
const ALWAYS = ["identity and access", "backups you have test-restored",
"settings you choose (public or private, encryption)"];
const list = (m, ch) => LAYERS.filter((l, i) => WHO[m][i] === ch && PATCH[l]);
function report(m) {
console.log(`MODEL: ${m}\nYOU patch:`);
const mine = list(m, "Y");
(mine.length ? mine.map(l => PATCH[l]) : ["(nothing)"]).forEach(x => console.log(" - " + x));
console.log("SHARED:");
const both = list(m, "S");
(both.length ? both.map(l => SHARED[l]) : ["(nothing)"]).forEach(x => console.log(" - " + x));
console.log(`PROVIDER patches ${list(m, "P").length} of 7 patchable layers`);
console.log("ALWAYS yours: " + ALWAYS.join("; "));
}
report(MODEL);আসল আউটপুটে MODEL: paas-এর নিচে YOU patch: অংশে একটিই লাইন: your code and its libraries. তার নিচে PROVIDER patches 5 of 7 patchable layers. মোট স্তর আট হলেও এখানে সাত গোনা হলো, কারণ ডেটা patch করা হয় না, সুরক্ষিত রাখা হয়। শেষ লাইন ALWAYS yours: identity and access; ... model বদলালেও বদলায় না। "saas" দিয়ে চালালে দেখবেন YOU patch:-এর নিচে (nothing), কিন্তু ঐ শেষ লাইনটি হুবহু থেকে গেছে। Patch শূন্য হলেই দায় শূন্য হয় না।
আরও গভীরে: “Serverless” মানে isolation নেই, তা নয়। AWS প্রকাশ করেছে, Lambda আর Fargate-এর workload আলাদা রাখতে তারা Firecracker নামের হালকা virtual machine monitor ব্যবহার করে (Agache ও সহলেখক, NSDI ২০২০)। অর্থাৎ virtualization স্তরটি আছে, শুধু আপনার ঘর থেকে সরে গেছে। FaaS-এর গবেষণাধর্মী পর্যালোচনার জন্য দেখুন Berkeley-র “Cloud Programming Simplified” (Jonas ও সহলেখক, ২০১৯)। VM-এর ভেতরের যন্ত্রপাতি আছে Operating Systems কোর্সের virtual machine পর্বে।
৬ · একই ঘটনা, ভিন্ন model — দুটি incident
তত্ত্ব পরীক্ষা হয় খারাপ দিনে। প্রথম ঘটনা: সোমবার সকালে Linux kernel-এর একটি গুরুতর নিরাপত্তা ত্রুটি প্রকাশিত হলো, patch-ও বেরিয়েছে। কাল্পনিক অনলাইন বাজার অ্যাপটি ৩টি server-এ চলে। Model বদলে বদলে দেখুন, আজ কার ফোন বাজবে।
| Model | |
| কে patch করে | |
| আপনার কাজ | |
| ত্রুটি খোলা থাকবে |
- On-premises. Patch নামানো, পরীক্ষা, তারপর ৩টি server একটি একটি করে restart. পুরো ঝুঁকি আর পুরো সময়সূচি আপনার। Load balancer না থাকলে সেবা বন্ধ রেখে করতে হবে।
- IaaS. ঠিক আগের মতো কাজ, শুধু হার্ডওয়্যার ভাবতে হয় না। Hypervisor-এর patch provider দেয়, কিন্তু আপনার VM-এর ভেতরের kernel provider ছোঁয় না। ভালো দল চালু VM মেরামত না করে নতুন image থেকে নতুন VM বানায় (পর্ব ১৬)।
- CaaS. Kernel থাকে node-এ, container-এ নয়। তাই container image বদলালে এই ত্রুটি সারে না; node বদলাতে হবে। Provider নিজে node সামলালে কাজটি তারই। নিজে node pool চালালে একে একে node খালি করে (
drain) বদলাতে হয়। - PaaS. নিচের OS আপনি দেখতেই পান না, patch করার সুযোগও নেই। আপনার কাজ নোটিস পড়া, আর app হঠাৎ restart হলে টিকে থাকে কি না নিশ্চিত রাখা।
- FaaS. PaaS-এর মতোই। নতুন অনুরোধ provider-এর patch করা পরিবেশে চলে। তবে সে পরিবেশ কখন বদলাবে, তা আপনার হাতে নেই।
- SaaS. আপনি হয়তো জানবেনই না। লাভ হলো কাজ নেই। ক্ষতি হলো, provider দেরি করলে আপনার করার কিছু নেই; শুধু status পাতা দেখা বা vendor-এর কাছে জানতে চাওয়া।
- মোড়: ত্রুটিটি যদি আপনার app-এর library-তে হয়? তখন IaaS, CaaS, PaaS, FaaS, সব জায়গায় কাজটি আপনার, কারণ library application স্তরে থাকে। শুধু SaaS-এ এটি provider-এর। PaaS বা FaaS ব্যবহার করলেই নিরাপত্তার কাজ শেষ হয় না।
দ্বিতীয় ঘটনাটি আরও শিক্ষণীয়। মঙ্গলবার দুপুর ২টায় একজন কর্মী production-এ ভুলে DROP TABLE orders চালালেন। অ্যাপে ঘণ্টায় গড়ে ৩০টি order আসে (ধরে নেওয়া সংখ্যা), আর শেষ পুরো backup রাত ২টার। অর্থাৎ শুধু সেই backup-এ ফিরলে ১২ ঘণ্টা × ৩০ = ৩৬০টি order হারাবে।
| Model | |
| উদ্ধারের পথ | |
| কোন সময়ে ফেরা গেল | |
| হারানো order |
- 14:00, ঘটনার মুহূর্ত। সব model-এই একই কথা: আদেশটি বৈধ, অনুমতিও ছিল। Database নিষ্ঠার সাথে table মুছল, কয়েক সেকেন্ডে replica-ও মুছে দিল। Provider-এর চোখে কিছুই ভুল হয়নি।
- On-premises. নিজের backup server থেকে 02:00-এর dump ফেরানো হলো। RPO, মানে কতটা সময়ের ডেটা হারানো সহ্য করতে হলো, এখানে ১২ ঘণ্টা। ৩৬০টি order গেল। Transaction log আলাদা জমা রাখলে আরও কাছে ফেরা যেত, কিন্তু সেটিও নিজে সাজাতে হয়।
- IaaS. VM-এ নিজে database চালালে ফল একই। Snapshot-এর সূচি আপনি না বানালে আদৌ কোনো snapshot নেই। মনে রাখুন, provider আপনার VM-এর ভেতরের database চেনে না; তার কাছে সেটি শুধু একটি disk.
- CaaS বা FaaS. এই model দুটি কোড চালায়, ডেটা রাখে অন্য কোথাও। তাই উত্তর নির্ভর করে ডেটা কোথায় আছে তার ওপর। ডেটা DBaaS-এ থাকলে পরের ধাপ দেখুন; নিজে চালানো database হলে আগের ধাপ।
- PaaS (DBaaS). Point-in-time recovery চালু আর retention ৭ দিন ধরে নিলে 13:59-এ ফেরা যায়। সাধারণত এটি নতুন একটি instance বানায়; সেখান থেকে
orderstable তুলে মূল database-এ আনতে হয়। হারায় মাত্র প্রায় ১ মিনিট, মানে ০ বা ১টি order. তবে বোতাম আপনাকেই চাপতে হবে। - SaaS. ধরুন order থাকে একটি অনলাইন হিসাবের সফটওয়্যারে। সেখানে মোছা জিনিস recycle bin-এ কিছুদিন থাকতে পারে, মেয়াদের পরে চলে যায়। মেয়াদ, আর আলাদা export পাওয়া যাবে কি না, পণ্যভেদে আলাদা।
- তুলনা। কারণ একই, ফল ভিন্ন: ৩৬০ বনাম প্রায় ০। কিন্তু খেয়াল করুন, ভালো ফলটি provider-এর দয়ায় আসেনি। এসেছে চালু করা সেটিং আর আগে থেকে করা মহড়া থেকে। Restore একবার না চালিয়ে দেখলে backup আছে বলে ধরে নেওয়া যায় না। পর্ব ২৪-এ এটি বিস্তারিত দেখবেন।
২০১৭ সালের ৩১ জানুয়ারি GitLab-এর একজন প্রকৌশলী ক্লান্ত অবস্থায় ভুল server-এ ডেটা মুছে ফেলেন, আর পরে দেখা যায় কয়েক রকম backup ঠিকমতো কাজ করছিল না। প্রতিষ্ঠানটির প্রকাশ্য postmortem অনুযায়ী প্রায় ৬ ঘণ্টার database ডেটা হারিয়ে যায়। Cloud-এর হার্ডওয়্যারে কোনো সমস্যা ছিল না। ব্যর্থ হয়েছিল এই প্রশ্নটি: “Restore শেষ কবে পরীক্ষা করা হয়েছে?”
৭ · নিয়ন্ত্রণ, গতি, খরচ, lock-in — কীভাবে বেছে নেবেন
কোনো model সবচেয়ে ভালো নয়। প্রতিটি একটি জিনিস দিয়ে আরেকটি কেনে। Lock-in মানে অন্য provider-এ সরে যাওয়ার খরচ ও কষ্ট।
| Model | নিয়ন্ত্রণ | শুরুর গতি | খরচের ধরন | Lock-in |
|---|---|---|---|---|
| On-premises | সর্বোচ্চ | সপ্তাহ বা মাস | আগাম বড় বিনিয়োগ | Provider নেই, তবে কেনা হার্ডওয়্যারে আটকে থাকা |
| IaaS | অনেক | মিনিট, তারপর সেটআপ | চালু থাকলেই বিল | কম |
| CaaS | মাঝারি থেকে বেশি | দল শিখে নিলে দ্রুত | Cluster আর node-এর বিল | Image সহজে সরে, চারপাশের network আর অনুমতি সরে না |
| PaaS | মাঝারি | ঘণ্টা | প্রতি instance বা plan | মাঝারি |
| FaaS | কম | মিনিট | প্রতি call ও সময় | বেশি, কারণ event-গুলো provider-এর |
| SaaS | সবচেয়ে কম | সাথে সাথে | প্রতি user, প্রতি মাস | ডেটা export করা যায় কি না, তার ওপর নির্ভর |
খরচ শুধু বিলের অঙ্ক নয়। Server পাহারা দিতে মানুষের যে সময় যায়, তার দামও ধরতে হয়। একটি সহজ হিসাব দেখি, যেখানে সব দাম ধরে নেওয়া গোল সংখ্যা, আসল দাম নয়: ঘণ্টায় ops কাজের খরচ $১০। VM-এর বিল মাসে $৪০ আর কাজ ১২ ঘণ্টা; PaaS-এর বিল $৭০ আর কাজ ৩ ঘণ্টা; FaaS-এ প্রতি ১০ লাখ অনুরোধে $১ আর কাজ ১ ঘণ্টা।
// Monthly cost = cloud bill + people's time. ALL prices are ASSUMED round numbers.
const RATE = 10; // assumed cost of one hour of ops work ($)
const PLAN = [
{ name: "VM", bill: () => 40, hours: 12 },
{ name: "PaaS", bill: () => 70, hours: 3 },
{ name: "FaaS", bill: mil => mil, hours: 1 }, // assumed $1 per million requests
];
const total = (p, mil) => p.bill(mil) + p.hours * RATE;
console.log("million req | VM | PaaS | FaaS | cheapest");
for (const mil of [1, 10, 50, 90, 150, 200]) {
const rows = PLAN.map(p => ({ name: p.name, cost: total(p, mil) }));
const low = Math.min(...rows.map(r => r.cost));
const best = rows.filter(r => r.cost === low).map(r => r.name).join(" = ");
const cells = rows.map(r => String(r.cost).padStart(4)).join(" | ");
console.log(`${String(mil).padStart(11)} | ${cells} | ${best}`);
}
const fixedPaas = total(PLAN[1], 0), faasBase = PLAN[2].hours * RATE;
console.log(`FaaS = PaaS at ${fixedPaas - faasBase} million requests a month`);আউটপুটের কলামগুলো পড়ুন। VM সবসময় 160 (40 + 12 × 10) আর PaaS 100 (70 + 3 × 10), যদিও বিলের দিক থেকে VM সস্তা ছিল। মানুষের সময় যোগ করতেই ফল উল্টে গেল। FaaS-এর খরচ অনুরোধের সাথে বাড়ে: ১০ লাখে 11, ৫ কোটিতে 60. শেষ লাইন FaaS = PaaS at 90 million requests a month: 10 + N = 100 থেকে N = 90, মানে মাসে ৯ কোটি অনুরোধে দুটি সমান। এর নিচে FaaS সস্তা, ওপরে PaaS. এখানে একটি সরলীকরণ আছে: VM আর PaaS-এর বিল স্থির ধরা হয়েছে, যদিও অনেক অনুরোধে বেশি instance লাগবে। আসল হিসাব পর্ব ০৪ আর পর্ব ৭২-এ।
বাছাইয়ের নিয়ম: ওপর থেকে নিচে নামুন
একটি কাজের নিয়ম হলো, সবচেয়ে ওপরের model থেকে শুরু করে প্রতিটির জন্য জিজ্ঞেস করা, “এটি কেন চলবে না?” স্পষ্ট কারণ পেলে তবেই এক ধাপ নিচে নামা। কারণ হতে পারে:
- কাজটি কি সবার মতোই? ইমেইল, বেতন, হিসাব আপনার ব্যবসার বিশেষত্ব নয়। SaaS নিন।
- কাজটি কি ছোট আর হঠাৎ আসে? FaaS মানায়। অনেকক্ষণ চলা কাজ বা স্থায়ী connection মানায় না।
- সাধারণ web app কি? PaaS দিয়ে শুরু করুন।
- অনেকগুলো service আর container-এ অভ্যস্ত দল আছে? CaaS বিবেচনা করুন।
- বিশেষ OS, kernel module বা নির্দিষ্ট OS-এ বাঁধা license-এর software লাগে? IaaS.
- আইন বা হার্ডওয়্যারের কারণে ডেটা নিজের জায়গায় রাখতে হবে? On-premises বা private cloud; পর্ব ০৩ দেখুন। বাংলাদেশে কোন ডেটার জন্য কী নিয়ম, তা বদলাতে পারে; নির্ভরযোগ্য আইনি পরামর্শ ও সর্বশেষ নীতিমালা দেখে নেবেন।
নিচের helper ঠিক এই পদ্ধতিতে চলে। শর্ত ভাঙলে model বাদ যায়, যা বাকি থাকে তার সবচেয়ে ওপরেরটি নেওয়া হয়। choose(...) লাইনগুলো বদলে নিজের প্রকল্প দিয়ে চালান।
// Decision helper: remove models that break a requirement,
// then take the HIGHEST model left (least work for you).
const ORDER = ["saas", "faas", "paas", "caas", "iaas", "onprem"];
// keep = the value that lets a requirement pass; any other value fires the rule.
const RULES = [
{ need: "commodity", keep: true, drop: ["saas"], why: "no ready product does this job" },
{ need: "longTask", keep: false, drop: ["faas"], why: "runs past a function time limit" },
{ need: "steadyHigh", keep: false, drop: ["faas"], why: "steady heavy load, per-call billing costs more" },
{ need: "osControl", keep: false, drop: ["saas", "faas", "paas", "caas"],
why: "needs its own OS agent or kernel module" },
{ need: "noOpsTeam", keep: false, drop: ["caas", "iaas", "onprem"],
why: "nobody to run nodes or patch an OS" },
{ need: "onSiteOnly", keep: false, drop: ["saas", "faas", "paas", "caas", "iaas"],
why: "data or hardware must stay on your own site" },
];
function choose(name, req) {
const out = new Map(); // model -> first reason it was removed
for (const r of RULES) {
if (Boolean(req[r.need]) === r.keep) continue; // rule does not fire
for (const m of r.drop) if (!out.has(m)) out.set(m, r.why);
}
const left = ORDER.filter(m => !out.has(m));
console.log(`${name}: ${left.length ? left[0].toUpperCase() : "NONE, relax a requirement"}`);
console.log(` still possible: ${left.join(", ") || "-"}`);
out.forEach((why, m) => console.log(` no ${m}: ${why}`));
}
const base = { commodity: false, longTask: false, steadyHigh: false,
osControl: false, noOpsTeam: false, onSiteOnly: false };
choose("office email", { ...base, commodity: true, noOpsTeam: true });
choose("thumbnail job", { ...base, noOpsTeam: true });
choose("live order map", { ...base, longTask: true, noOpsTeam: true });
choose("legacy billing", { ...base, osControl: true });
choose("impossible mix", { ...base, osControl: true, noOpsTeam: true });আউটপুটের প্রথম লাইন office email: SAAS: তৈরি পণ্য আছে, তাই আর নামতে হয়নি। thumbnail job: FAAS আর live order map: PAAS-এর পার্থক্য একটি শর্তে; পরেরটিতে no faas: runs past a function time limit. legacy billing: IAAS এসেছে, কারণ osControl চারটি model বাদ দিয়েছে। শেষে impossible mix: NONE, relax a requirement সবচেয়ে শিক্ষণীয়: নিজের OS agent লাগবে, অথচ OS দেখার কেউ নেই। এটি কোনো tool-এর সীমা নয়, দলের সিদ্ধান্তের দ্বন্দ্ব। নিয়মগুলো শেখার জন্য সরল; বাস্তবে ওজন, দক্ষতা আর সময়সীমাও ধরতে হয়। পর্ব ১৯-এ compute বাছাই আরও বিস্তারিত।
একটি জিনিস মনে রাখবেন: পুরো system-এ একটিই model হতে হবে, এমন নিয়ম নেই। বাস্তবের অনলাইন বাজারে ইমেইল SaaS-এ, মূল app PaaS-এ, ছবি ছোট করা FaaS-এ, আর ডেটা DBaaS-এ থাকতে পারে।
৮ · একটি app-কে IaaS থেকে PaaS-এ সরানো
রেখা সরানো মানে শুধু অন্য জায়গায় কোড copy করা নয়। PaaS-এ instance যেকোনো সময় বদলে যেতে পারে, আর একাধিক instance একসাথে চলে। তাই VM-এর local disk-এ রাখা জিনিসের ওপর ভরসা করা যায় না। App-কে stateless করতে হয়: কোনো instance-এর নিজের ভেতরে গুরুত্বপূর্ণ কিছু থাকবে না। এই চিন্তাটি বিখ্যাত হয় Twelve-Factor App নামের নির্দেশিকায়, যা PaaS প্রতিষ্ঠান Heroku-র প্রকৌশলীরা লিখেছিলেন।
| ছবি upload | |
| Login session | |
| Config, secret | |
| Log | |
| Database | |
| Traffic যায় | |
| OS patch কার |
- শুরুর অবস্থা। একটি VM-এ সবকিছু: কোড, ছবি, session, config, log, এমনকি database. চলছে, কিন্তু VM মরলে সব একসাথে যাবে, আর একটির বেশি instance চালানো যায় না।
- ছবি সরান। Upload যায় object storage-এ। না সরালে একটি instance-এ upload করা ছবি অন্য instance-এ পাওয়া যাবে না, আর instance বদলালে ছবি হারাতে পারে।
- Session সরান। Memory-র session অন্য instance দেখতে পায় না; ব্যবহারকারী হঠাৎ logout হয়ে যাবেন। তাই session যায় managed cache-এ।
- Config আর log বদলান। Config আসে environment variable থেকে, secret আসে secret manager থেকে (পর্ব ৩৩)। Log ফাইলে না লিখে stdout-এ লেখা হয়, platform সেটি সংগ্রহ করে।
- Database সরান। Dump দিয়ে, অথবা replication চালিয়ে ডেটা DBaaS-এ আনুন, আর VM-এর app নতুন database-এ জুড়ে দিন। পুরোনো আর নতুন ডেটা মিলিয়ে দেখুন। সরানোর ঠিক আগে একটি backup নিন।
- PaaS-এ deploy, কিন্তু traffic এখনো VM-এ। এখন app PaaS-এ চলছে, health check দিয়ে পরীক্ষা হচ্ছে। হঠাৎ instance restart করে দেখুন কিছু হারায় কি না। ব্যবহারকারীরা এখনো পুরোনো VM-এই।
- Traffic ঘোরান। আগে থেকে DNS-এর TTL কমিয়ে রাখা ভালো, যেমন ৬০ সেকেন্ড। এবার DNS PaaS-এর দিকে ঘোরান। VM বন্ধ করবেন না; কিছু গোলমাল হলে এটিই ফেরার পথ। তাই OS patch এখনো আপনার।
- VM বিদায়। কয়েক দিন স্থির চলার পরে, VM-এর শেষ ডেটা নিশ্চিত হয়ে VM আর তার disk মুছুন। না মুছলে দুটির বিলই চলতে থাকবে। OS patch এখন provider-এর। কিন্তু runtime-এর মেয়াদ দেখা, library আপডেট আর backup যাচাই আপনারই থাকল।
ধাপগুলো হয়ে গেলে platform-এর config দেখতে এমন হতে পারে। এটি Google App Engine-এর app.yaml-এর একটি উদাহরণ, শুধু পড়ার জন্য। অন্য PaaS-এ ফাইলের নাম ও ধরন আলাদা, আর runtime-এর নাম সময়ের সাথে বদলায়। আসল cloud-এ deploy করলে খরচ হতে পারে; পরীক্ষা করলে কাজ শেষে app বন্ধ করে দেবেন আর provider-এর docs অনুযায়ী resource মুছে ফেলবেন।
runtime: python312
instance_class: F1
automatic_scaling:
min_instances: 1
max_instances: 5
env_variables:
UPLOAD_BUCKET: "example-bucket"
LOG_LEVEL: "info"লক্ষ করুন এখানে কী নেই: OS-এর নাম, web server-এর সেটআপ, patch-এর সময়সূচি। আপনি শুধু বলছেন কোন runtime, কতগুলো instance-এর সীমা, আর কোন environment variable. Database-এর password এই ফাইলে লেখা হয়নি, কারণ ফাইলটি git-এ থাকে; সেটি যাবে secret manager-এ।
পরীক্ষা ও ইন্টারভিউতে:
- NIST-এর service model কয়টি? তিনটি: SaaS, PaaS, IaaS (SP 800-145, ২০১১)।
- IaaS-এ guest OS patch কার? গ্রাহকের। Hypervisor আর হার্ডওয়্যার provider-এর।
- Security “of” আর “in” the cloud? প্রথমটি provider-এর, দ্বিতীয়টি গ্রাহকের।
- Replica কি backup? না। ভুল মোছা replica-তেও যায়; backup আলাদা ও সময়ভিত্তিক।
- FaaS আর serverless কি এক? না। FaaS একটি model, serverless তার চেয়ে বড় ধারণা।
৯ · AI-এর যুগে service model বাছাই
AI-কে “আমার app কোথায় deploy করব?” জিজ্ঞেস করলে সে খুব আত্মবিশ্বাসে একটি উত্তর দেয়। কিন্তু সে আপনার দলের আকার, বাজেট বা ডেটার নিয়ম জানে না। আর সে শেখা তথ্যে পিছিয়ে থাকতে পারে, তাই service-এর নাম, সীমা বা দাম পুরোনো হতে পারে। Cloud-এর কাজে AI-এর ভুলগুলো সাধারণত একই ছাঁচের।
| AI প্রায়ই যা করে | ঝুঁকি | যাচাইয়ের পথ |
|---|---|---|
অনুমতিতে * বসায় | একটি ত্রুটিতে পুরো account ঝুঁকিতে | শুধু দরকারি action আর resource রাখা |
Port খোলে 0.0.0.0/0-তে | Database বা SSH সবার জন্য খোলা | নির্দিষ্ট উৎস ছাড়া কিছু নয় |
| Storage public করে দেয় | ডেটা ফাঁস | Public access বন্ধের সেটিং নিশ্চিত করা |
| Config-এ secret লিখে দেয় | Git-এ গোপন তথ্য | Secret manager; prompt-এও secret নয় |
latest tag, বাতিল API version ব্যবহার করে | হঠাৎ ভাঙে | নির্দিষ্ট version, সরকারি docs |
| নেই এমন flag বা argument বানায় | আদেশ ব্যর্থ বা ভুল ফল | --dry-run, terraform plan |
| খরচ উপেক্ষা করে, মোছার আদেশ সতর্কতা ছাড়া দেয় | বড় বিল, ডেটা হারানো | Budget alert, throwaway পরিবেশ, diff পড়া |
AI-কে সিদ্ধান্ত না দিতে বলে সিদ্ধান্তের উপকরণ দিতে বলুন। নিচের prompt-এ আপনি শর্ত দিচ্ছেন, আর AI-কে দায়ের ভাগ স্পষ্ট করে লিখতে হচ্ছে।
AI-এর পরামর্শ হাতে পেলে — যাচাইয়ের চেকলিস্ট
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন — তারপর “→ উত্তর” চাপুন।
প্র ০১Provider-এর হার্ডওয়্যার এত নির্ভরযোগ্য হলে নিজের backup আলাদা রাখার দরকার কী?
কারণ ডেটা হারানোর সব পথ হার্ডওয়্যার দিয়ে যায় না। অন্তত চারটি আলাদা বিপদ আছে, আর provider-এর redundancy কেবল প্রথমটি ঠেকায়।
- হার্ডওয়্যারের ব্যর্থতা: disk নষ্ট হলে provider-এর কপি কাজে লাগে।
- মানুষের ভুল:
DROP TABLEবা ভুল script বৈধ আদেশ। Redundant system সেটি সব কপিতে পৌঁছে দেয়। - পুরো জায়গার দুর্ঘটনা: ২০২১ সালের মার্চে ফ্রান্সের Strasbourg-এ OVHcloud-এর একটি data center আগুনে ধ্বংস হয়। যেসব গ্রাহকের backup একই জায়গায় ছিল, তাঁদের অনেকে ডেটা হারান।
- Account-এর ওপর আক্রমণ: ২০১৪ সালে Code Spaces নামের একটি hosting প্রতিষ্ঠানের cloud console-এ অনুপ্রবেশকারী ঢুকে ডেটা আর backup মুছে দেয় বলে জানা যায়, আর প্রতিষ্ঠানটি কয়েক দিনের মধ্যে বন্ধ হয়ে যায়। Backup একই account-এ থাকায় একই চাবিতে সবই খোলা ছিল।
তাই backup-কে বিপদের থেকে “দূরে” রাখতে হয়: অন্য জায়গায়, অন্য account-এ, যেখানে মোছার অনুমতি সবার নেই। প্রচলিত 3-2-1 নিয়ম বলে, ৩টি কপি, ২ ধরনের মাধ্যমে, ১টি বাইরে। SaaS-এও একই প্রশ্ন: recycle bin-এর মেয়াদ পেরোলে, বা ছেড়ে যাওয়া কর্মীর account মুছলে ডেটার কী হবে, সেটি শর্তে দেখে নিতে হয়।
আরেকটি কথা। Backup থাকা আর ফেরাতে পারা এক জিনিস নয়। ফাইল আছে, কিন্তু খোলে না, বা ফেরাতে দুই দিন লাগে, এমনটি প্রায়ই ঘটে। তাই বছরে অন্তত কয়েকবার একটি আলাদা পরিবেশে পুরো restore চালিয়ে সময় মেপে রাখা দরকার। কতবার করবেন, সেটি ডেটার গুরুত্বের ওপর নির্ভর করে।
মূল উপলব্ধি: Redundancy যন্ত্রের ব্যর্থতা থেকে বাঁচায়, backup বাঁচায় আপনার নিজের ভুল থেকেও। একটি অন্যটির বদলে চলে না।
প্র ০২NIST-এর ২০১১ সালের তিনটি model কি এখন পুরোনো হয়ে গেছে? CaaS আর FaaS কোন ঘরে পড়ে?
NIST-এর সংজ্ঞা মূলত একটি জিনিস দিয়ে ঘর ভাগ করে: গ্রাহক কোন পর্যন্ত নিয়ন্ত্রণ করেন। IaaS-এ OS, storage আর deploy করা app; PaaS-এ শুধু deploy করা app আর তার পরিবেশের কিছু সেটিং; SaaS-এ বড়জোর ব্যবহারকারীভিত্তিক কিছু সেটিং। এই মাপকাঠিটি পুরোনো হয়নি।
পুরোনো হয়েছে ঘরের সংখ্যা। ২০০৬ সালে EC2 এসেছে, ২০০৮ সালে Google App Engine, ২০১৩ সালে Docker, ২০১৪ সালে AWS Lambda. ২০১১ সালের দলিল শেষ দুটিকে দেখেনি। Container আর function আসায় IaaS ও PaaS-এর মাঝে, আর PaaS-এর ভেতরে, নতুন ধাপ তৈরি হলো।
একই মাপকাঠিতে ফেললে কী দাঁড়ায়? CaaS-এ আপনি OS সরাসরি না-ও ধরতে পারেন, কিন্তু image-এর ভেতরের runtime আর library আপনার; তাই এটি মাঝের ঘর। FaaS NIST-এর PaaS-এর বর্ণনার সাথে অনেকটাই মেলে, তবে বিল আর scaling-এর আচরণে আলাদা। অনেকেই একে আলাদা নাম দেন, কারণ দৈনন্দিন কাজের ধরনই আলাদা: সবসময় চলা app-এর বদলে ঘটনায় জেগে ওঠা ছোট কোড।
আবার সীমা ঝাপসাও হচ্ছে। Serverless container-এ আপনি image দেন, কিন্তু node দেখেন না, আর সংখ্যা শূন্যেও নামতে পারে। এটিকে CaaS বলবেন, না FaaS-এর আত্মীয়? দুই পক্ষই যুক্তি দেখাতে পারেন। পরীক্ষায় NIST-এর প্রশ্নে তিনটি বলুন; কাজের আলোচনায় ছয়টি নামই ব্যবহার করুন, আর ভিন্ন সংজ্ঞা থাকলে আগে স্পষ্ট করে নিন।
মূল উপলব্ধি: নাম বদলায়, প্রশ্ন বদলায় না। “কোন স্তর পর্যন্ত আমার নিয়ন্ত্রণ, আর কোন স্তর থেকে provider-এর?” এই প্রশ্নই যেকোনো নতুন service-কে তার ঘরে বসিয়ে দেয়।
প্র ০৩গ্রাহক ভুল সেটিং করলে দোষ গ্রাহকের — shared responsibility কি provider-এর জন্য সুবিধাজনক একটি ব্যাখ্যা?
প্রশ্নটি ন্যায্য, আর এ নিয়ে আসলেই বিতর্ক আছে। Model-টি দায়ের সীমা পরিষ্কার করে, এটি ভালো। কিন্তু একই সাথে একটি ঝুঁকি থাকে: নিরাপত্তার কঠিন অংশ “গ্রাহকের দায়” বলে পাশ কাটানো যায়।
Object storage-এর ইতিহাস উদাহরণ। অনেক বছর ধরে ভুল করে public করে রাখা storage bucket থেকে ডেটা ফাঁসের খবর আসত। আনুষ্ঠানিকভাবে দোষ ছিল গ্রাহকের সেটিংয়ের। কিন্তু AWS পরে এই ভুল কঠিন করে তোলে: ২০১৮ সালে Block Public Access নামের সুবিধা আনে, আর ২০২৩ সালের এপ্রিল থেকে নতুন S3 bucket-এ এটি ডিফল্টভাবে চালু হতে শুরু করে। অর্থাৎ ডিফল্ট সেটিং বদলে দায়ের রেখা না সরিয়েই ঝুঁকি কমানো গেল।
Google Cloud এই চিন্তাকে shared fate নাম দিয়েছে: provider শুধু নিজের অংশ সামলে থেমে থাকবে না, নিরাপদ নকশা, নীতিমালা আর গ্রাহককে সঠিক পথে নিয়ে যাওয়ার দায়িত্বও নেবে। এটি কতটা বাস্তব আর কতটা বিপণন, তা নিয়ে মত ভিন্ন হতে পারে।
আপনার জন্য ব্যবহারিক শিক্ষা দুটি। প্রথমত, চুক্তিতে যা-ই থাকুক, ডেটা ফাঁস হলে ব্যবহারকারীর কাছে জবাব দেবেন আপনি; তাঁরা provider-কে চেনেন না। দ্বিতীয়ত, ডিফল্টের ওপর ভরসা না করে নিয়মিত যাচাই করতে হবে, কারণ পুরোনো resource-এ পুরোনো ডিফল্টই থেকে যেতে পারে। এই যাচাইয়ের পদ্ধতি পর্ব ৩৪-এ আসবে।
মূল উপলব্ধি: আইনি দায় ভাগ করা যায়, কিন্তু ব্যবহারকারীর আস্থার ক্ষতি ভাগ হয় না। ভালো provider ভুল করা কঠিন করে; ভালো দল ধরে নেয় ভুল হবেই, আর সেটি ধরার ব্যবস্থা রাখে।
প্র ০৪Model যত ওপরে, patch তত কম — তাহলে নিরাপত্তার কাজও কি তত কম?
কাজ কমে, তবে অনেকটা বদলেও যায়। ঝুঁকি নিচের স্তর থেকে ওপরের স্তরে সরে আসে।
২০২১ সালের ডিসেম্বরে Java-র বহুল ব্যবহৃত logging library Log4j-তে Log4Shell (CVE-2021-44228) নামের গুরুতর ত্রুটি প্রকাশিত হয়। সারা বিশ্বের দল ছুটে বেড়ান। এই ত্রুটিতে OS ঠিক থাকলেও লাভ ছিল না, কারণ ত্রুটিটি application স্তরের library-তে। IaaS, CaaS, PaaS, FaaS, সব জায়গাতেই প্রশ্ন ছিল একই: “আমাদের কোন app-এর ভেতরে এই library আছে?” যাঁদের কাছে dependency-র তালিকা ছিল, তাঁরা দ্রুত উত্তর পেয়েছেন।
FaaS-এ নতুন ধরনের কাজও আসে। Function শত শত হতে পারে, প্রতিটির আলাদা অনুমতি। সবগুলোকে একই বড় role দিলে কাজ সহজ হয়, কিন্তু একটি দুর্বল function দিয়ে অনেক কিছু খুলে যায়। Input-ও শুধু HTTP থেকে আসে না; queue বা file upload-এর ঘটনা থেকেও আসে, আর সেগুলোও যাচাই করতে হয়। সব মিলিয়ে নজরদারি হয়ে দাঁড়ায় ছড়িয়ে থাকা অনেক ছোট টুকরোর ওপর।
SaaS-এ patch নেই, কিন্তু আছে অন্য কাজ: কে কোন app-এ ঢুকছে, কর্মী চলে গেলে account বন্ধ হলো কি না, কোন ফাইল বাইরে শেয়ার হয়েছে। তবুও সব মিলিয়ে ছোট দলের জন্য ওপরের model প্রায়ই নিরাপদ, কারণ OS patch-এ পিছিয়ে থাকার মতো সাধারণ ভুলটি আর হয় না। সেই সাথে আপনাকে বিশ্বাস করতে হয় provider-এর ওপর: সে কত দ্রুত patch দেয়, তা আপনি নিয়ন্ত্রণ করতে পারেন না।
মূল উপলব্ধি: নিরাপত্তার মোট কাজ শূন্য হয় না, কাজের ধরন বদলায়: যন্ত্র মেরামত থেকে অনুমতি, সেটিং আর dependency-র হিসাব রাখায়।
প্র ০৫Lock-in এড়াতে কি সবসময় IaaS বা Kubernetes-এ থাকা উচিত?
Lock-in সত্যিকারের ঝুঁকি। ২০১৬ সালের শুরুতে Parse নামের জনপ্রিয় BaaS বন্ধের ঘোষণা আসে, আর ২০১৭ সালে সেবাটি শেষ হয়; হাজারো mobile app-কে সরে যেতে হয়েছিল, যদিও কোড open source করে দেওয়ায় পথ খোলা ছিল। ২০২২ সালের শেষ দিকে Heroku তার জনপ্রিয় বিনামূল্যের plan বন্ধ করে দেয়। ওপরের স্তরের সেবার সিদ্ধান্ত আপনার হাতে থাকে না: দাম, নিয়ম, এমনকি সেবাটি টিকে থাকবে কি না, সবই অন্যের সিদ্ধান্ত।
তবু “সবসময় নিচের স্তরে থাকা” ভুল হিসাব। Lock-in এড়ানোর নিজের দাম আছে:
- নিশ্চিত খরচ বনাম সম্ভাব্য খরচ: নিজে Kubernetes চালানোর দল আর সময়ের খরচ প্রতি মাসেই দিতে হয়। Provider বদলানোর খরচ হয়তো কখনো লাগবেই না।
- অর্ধেক portability: কোড container-এ থাকলেও ডেটা, IAM, network আর monitoring provider-ঘেঁষা থেকে যায়। ডেটা সরানোই প্রায়ই সবচেয়ে কঠিন।
- হারানো গতি: সব provider-এ চলবে এমন “সবচেয়ে ছোট সাধারণ অংশ” ব্যবহার করলে প্রতিটির সেরা সুবিধা বাদ পড়ে।
ভালো পথ হলো সচেতন বাছাই। মূল ব্যবসার যুক্তি provider-নির্ভর কোডের সাথে মিশিয়ে না ফেলা; একটি পাতলা স্তরের আড়ালে রাখা। PostgreSQL-এর মতো খোলা engine বা container image-এর মতো খোলা ফরম্যাট বেছে নেওয়া। নিয়মিত ডেটা export করা। আর আগে থেকে উত্তর ঠিক করা: “এই service বন্ধ হলে আমরা কী করব, কত সময় লাগবে?” বিস্তারিত পর্ব ৭৪-এ।
মূল উপলব্ধি: Lock-in ভালো বা মন্দ নয়, এটি একটি দামের ট্যাগ। লক্ষ্য শূন্য lock-in নয়; লক্ষ্য হলো দামটি জেনে, যেখানে লাভ বেশি সেখানেই সেটি দেওয়া।
অনুশীলন
খাতা-কলম নিন। সব দাম ধরে নেওয়া সংখ্যা, কোনো cloud account লাগবে না।
-
হিসাব করুন: ঘণ্টায় ops কাজের খরচ ধরুন $১২। VM: বিল $৫০, কাজ ১০ ঘণ্টা। PaaS: বিল $৯০, কাজ ৩ ঘণ্টা। FaaS: প্রতি ১০ লাখ অনুরোধে $২, কাজ ১ ঘণ্টা। মাসে ৪ কোটি আর ৮ কোটি অনুরোধে কোনটি সবচেয়ে সস্তা? FaaS আর PaaS কত অনুরোধে সমান?
VM = 50 + 10 × 12 = $170. PaaS = 90 + 3 × 12 = $126. FaaS = 12 + 2N, যেখানে N হলো ১০ লাখের কতগুণ।
৪ কোটি মানে N = 40, তাই FaaS = 12 + 80 = $92; FaaS সবচেয়ে সস্তা। ৮ কোটি মানে N = 80, তাই FaaS = 12 + 160 = $172; এখন PaaS ($126) সবচেয়ে সস্তা, আর FaaS VM-এর চেয়েও বেশি।
সমান হবে যখন 12 + 2N = 126, অর্থাৎ N = 57, মানে মাসে ৫ কোটি ৭০ লাখ অনুরোধে।
-
আউটপুট অনুমান করুন:
responsibility.js-এMODELবদলে"caas"করা হলো।YOU patch:আরSHARED:অংশে কয়টি করে লাইন আসবে, আরPROVIDER patchesলাইনে সংখ্যা কত হবে? আগে ভাবুন, তারপর চালিয়ে মিলিয়ে নিন।caas-এর সারিPPPPSYYY. প্রথম চারটি P, তাই network, storage, servers আর virtualization provider-এর। পঞ্চমটি (os) S, ষষ্ঠ (runtime) Y, সপ্তম (data) Y, অষ্টম (application) Y. Data-র জন্য PATCH-এ কিছু নেই, তাই গোনা হয় না। আসল আউটপুট:MODEL: caas YOU patch: - language runtime and web server - your code and its libraries SHARED: - node OS: you roll out new node images, unless the provider runs the nodes PROVIDER patches 4 of 7 patchable layersএরপরের
ALWAYS yoursলাইনটি এখানে বাদ দেখানো হলো, কারণ সেটি সব model-এ একই। অর্থাৎ YOU-তে ২টি, SHARED-এ ১টি, আর সংখ্যা ৪। Runtime আপনার তালিকায় আছে, কারণ সেটি আপনার image-এর ভেতরে থাকে। -
নকশা সমালোচনা: একটি কাল্পনিক স্কুল-ফলাফল পোর্টালের পরিকল্পনা: “ফলাফল বছরে দু-বার বের হয়, সেদিন প্রচণ্ড ভিড়। আমরা ৫০টি বড় VM সারা বছর চালিয়ে রাখব, সবার password এক ফাইলে রাখব। Cloud-এ আছি, তাই backup আর নিরাপত্তার চিন্তা নেই।” এই পরিকল্পনায় কী কী ভুল? আপনি কী বদলাবেন?
- Model ভুল: ভিড় বছরে দু-দিন, অথচ VM চলছে ৩৬৫ দিন, আর OS patch-এর দায়ও ৫০ গুণ। স্থির ফলাফলের পাতা হলে object storage আর CDN-ই বড় অংশ সামলাতে পারে; ফল খোঁজার জন্য PaaS বা FaaS মানায়, ডেটা থাকবে DBaaS-এ।
- Shared responsibility ভুল: Backup আর নিরাপত্তা নিজে থেকে হয় না। Backup-এর সূচি, retention আর restore-এর মহড়া ঠিক করতে হবে।
- Secret ভুল: এক ফাইলে সব password নয়; প্রত্যেকের আলাদা identity, MFA আর secret manager.
- পরীক্ষা নেই: ফলের দিনের আগে load test করে নিতে হবে (পর্ব ৬৮)।
-
কার কাজ? প্রতিটি কাজের পাশে লিখুন আপনার না provider-এর। (ক) IaaS-এ kernel patch (খ) PaaS-এ data center-এর জেনারেটর (গ) FaaS-এ function-এর ব্যবহৃত library-র আপডেট (ঘ) SaaS-এ চাকরি ছাড়া কর্মীর account বন্ধ (ঙ) DBaaS-এ database engine-এর minor patch (চ) DBaaS-এ ভুলে মোছা row ফেরানোর জন্য restore চালানো।
(ক) আপনার। (খ) Provider-এর। (গ) আপনার, library application স্তরে থাকে। (ঘ) আপনার, identity সবসময় আপনার। (ঙ) সাধারণত provider-এর, তবে কখন হবে সেই maintenance সময় অনেক ক্ষেত্রে আপনি ঠিক করেন, আর major version-এ ওঠার সিদ্ধান্ত আপনার। (চ) আপনার: সুবিধাটি provider দেয়, কিন্তু চালু রাখা আর চালানো আপনার কাজ।
নিজেকে যাচাই করুন
ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।
ক্রমএকটি app-কে VM থেকে PaaS-এ সরানোর ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)
- App কী কী জিনিস VM-এর ভেতরে রাখে, তার তালিকা করা
- ফাইল আর session VM-এর বাইরে সরানো
- Config-কে environment variable-এ আনা, log পাঠানো stdout-এ
- PaaS-এ deploy করে পরীক্ষা, traffic তখনো VM-এ
- DNS ঘুরিয়ে traffic PaaS-এ আনা
- কিছুদিন স্থির চলার পরে VM মুছে ফেলা
NIST SP 800-145 (২০১১) অনুযায়ী cloud-এর service model কোনগুলো?
- IaaS, CaaS, FaaS
- SaaS, PaaS, IaaS
- Public, private, hybrid
- SaaS, DBaaS, STaaS
একটি IaaS virtual machine-এ Ubuntu চলছে। OS-এর kernel-এ নিরাপত্তা ত্রুটি পাওয়া গেছে। Patch করার দায় সাধারণত কার?
- Provider-এর, কারণ VM তার হার্ডওয়্যারে চলছে
- OS প্রস্তুতকারকের, তিনিই VM-এ বসিয়ে দেবেন
- গ্রাহকের
- কারও নয়, cloud-এ নিজে থেকে হয়ে যায়
একটি DBaaS-এর primary database-এর সাথে একটি read replica আছে। কেউ ভুলে DROP TABLE orders চালালেন। সবচেয়ে সম্ভাব্য ফল কী?
- Replica-তেও table মুছে যাবে; ফেরাতে backup বা point-in-time restore লাগবে
- Replica-তে table থেকে যাবে, কারণ replica শুধু পড়ার জন্য
- Provider নিজে থেকে কিছুক্ষণের মধ্যে table ফিরিয়ে দেবে
- DBaaS এমন আদেশ চলতেই দেয় না
একটি FaaS function যে third-party library ব্যবহার করে, তাতে গুরুতর ত্রুটি পাওয়া গেল। কে আপডেট করবে?
- Provider, কারণ FaaS-এ server নেই
- কেউ না, পরের OS patch-এ ঠিক হবে
- Library-র লেখক, তিনি সরাসরি function-এ বসিয়ে দেবেন
- Function-এর মালিক: library আপডেট করে আবার deploy করবেন
একটি প্রতিষ্ঠান SaaS office suite ব্যবহার করে। একজন কর্মী চাকরি ছাড়লেন, কিন্তু তাঁর account চালু আছে। Shared responsibility অনুযায়ী এই ঝুঁকি কার?
- SaaS vendor-এর, কারণ app তাদের
- গ্রাহক প্রতিষ্ঠানের
- Data center কর্তৃপক্ষের
- কারও নয়, এতে কোনো ঝুঁকি নেই
ধরে নেওয়া দাম: VM-এর বিল মাসে $৩০, কাজ ১০ ঘণ্টা। PaaS-এর বিল মাসে $৮০, কাজ ২ ঘণ্টা। ঘণ্টায় ops কাজের খরচ $১০। মানুষের সময়সহ মাসে কোনটি কত সস্তা?
- VM $৫০ সস্তা
- দুটির খরচ সমান
- PaaS $৩০ সস্তা
- PaaS $৮০ সস্তা
শব্দকোষ
লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন — অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:
মনে রাখুন
- Service model মানে আটটি স্তরের কোনটি আপনার আর কোনটি provider-এর। ওপরে উঠলে আপনার কাজ কমে।
- NIST-এর model তিনটি: SaaS, PaaS, IaaS. CaaS আর FaaS পরের শিল্প-শব্দ।
- Provider সামলায় security of the cloud, আপনি সামলান security in the cloud.
- Identity, ডেটা, backup আর আপনার সেটিং সব model-এ আপনার। Replica backup নয়; restore মহড়া না দিলে backup অনিশ্চিত।
- সবচেয়ে ওপরের যে model শর্ত মেটায় সেটি নিন; বিলের সাথে মানুষের সময় আর lock-in-ও ধরুন।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পর্ব ০৩ · Public, private, hybrid আর multi-cloud — কোথায় চালাবেনপরবর্তী পর্বCloud কোথায় বসবে আর কার জন্য, তার চারটি পথ।
- ক্লাউড কম্পিউটিং ও DevOps · কোর্স হোম৮১টি পর্বপুরো কোর্সের রোডম্যাপ।
- Operating Systems · Virtual machineগভীরে যানHypervisor আর VM ভেতরে কীভাবে কাজ করে।
- DBMS ও SQL · Backup আর replicationপাশের ট্র্যাকReplica আর backup-এর তফাত ডেটাবেসের চোখে।
- System Design · Disaster recoveryপাশের ট্র্যাকবড় দুর্ঘটনার পরিকল্পনা কীভাবে হয়।