Course-এর সূচি

4.4

কেনার অপশন: On-Demand থেকে Spot

On-Demand, Reserved, Savings Plan, Spot আর Spot Fleet, Dedicated Host আর Dedicated Instance, Capacity Reservation, আর কখন কোনটা নেবে।

30 মিনিট পড়া + Animation

টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।

এই লেসন শেষে তুমি যা পারবে

  • On-Demand, Reserved Instance, Savings Plan, Spot, Dedicated Host, Dedicated Instance আর Capacity Reservation-এ কীভাবে বিল হয়, আর কোনটা তোমাকে কী নিশ্চয়তা দেয়, বুঝিয়ে বলতে পারবে।
  • Standard আর Convertible Reserved Instance, payment option, আর Regional বনাম zonal scope-এর মধ্যে ঠিকটা বেছে নিতে পারবে।
  • কোন Savings Plan (Compute, EC2 Instance, SageMaker AI, Database) নেবে আর ঘণ্টায় কত টাকার commitment করবে, ঠিক করতে পারবে।
  • নিরাপদে Spot Instance চালাতে পারবে: rebalance recommendation আর ২ মিনিটের notice সামলানো, interruption behaviour বেছে নেওয়া, আর persistent request ঠিক নিয়মে cancel করা।
  • Spot Fleet বা EC2 Fleet-এর allocation strategy বেছে নিতে পারবে, আর price-capacity-optimized কেন সাধারণত সেরা পরামর্শ, তা বোঝাতে পারবে।
  • একটা architecture-এ কয়েকটা option মিলিয়ে ব্যবহার করতে পারবে, আর পরীক্ষার চেনা keyword (steady state, fault-tolerant, BYOL, capacity assurance) দেখলেই উত্তর ধরতে পারবে।

#একই server, আলাদা আলাদা দাম

একটা Region-এ m7i.large যেভাবেই টাকা দাও, virtual machine-টা একই থাকে। বদলায় শুধু AWS-এর সাথে তোমার চুক্তিটা:

  • কতদিন ব্যবহার করবে বলে কথা দিচ্ছ (কোনো কথা নেই, ১ বছর, নাকি ৩ বছর)।
  • শুরুর আগে কত টাকা দিচ্ছ (কিছুই না, কিছুটা, নাকি পুরোটা)।
  • AWS server-টা ফেরত নিতে পারবে কি না (Spot), নাকি তোমার জন্য জায়গা ধরে রাখতে বাধ্য (Capacity Reservation)।
  • physical machine-টা অন্য customer-দের সাথে ভাগাভাগি হবে (default tenancy), নাকি শুধু তোমার (Dedicated)।

AWS-কে তুমি যত বেশি নিশ্চয়তা দেবে, আর নিজে যত বেশি ঝুঁকি নেবে, দাম তত কমবে। এই চারটা প্রশ্ন থেকেই সাতটা option বেরিয়ে আসে:

OptionCommitmentOn-Demand-এর তুলনায় ছাড়AWS কি ফেরত নিতে পারে?সাধারণত কোথায়
On-Demandনেইনেই (এটাই মূল দাম)নাঅল্প সময়ের, অনিশ্চিত, বা থামানো যাবে না এমন কাজ
Reserved Instance১ বা ৩ বছর, একটা নির্দিষ্ট instance configurationপ্রায় ৭২% পর্যন্তনাস্থির, জানা workload (যেমন database server)
Savings Plan১ বা ৩ বছর, ঘণ্টায় নির্দিষ্ট অঙ্কের টাকাপ্রায় ৭২% পর্যন্তনাখরচ স্থির, কিন্তু workload-এর ধরন বদলাতে পারে
Spot Instanceনেইপ্রায় ৯০% পর্যন্তহ্যাঁ, ২ মিনিটের notice দিয়েfault-tolerant, সময় নিয়ে নমনীয় কাজ
Dedicated Hostনেই, অথবা ১/৩ বছরের host reservationreservation নিলে ছাড় আছেনাsocket/core হিসেবে কেনা licence (BYOL), placement-এর নিয়ন্ত্রণ
Dedicated Instanceনেইনিজে থেকে নেইনাঅন্য account-এর সাথে hardware ভাগ করা চলবে না
Capacity Reservationনেই (যখন খুশি cancel)নিজে থেকে নেইনাএকটা Availability Zone-এ নিশ্চিত জায়গা

#On-Demand: যতটুকু চালাবে, ততটুকু দেবে

instance launch করার সময় আর কিছু বেছে না নিলে তুমি On-Demand-ই পাও।

  • বিল: সেকেন্ড হিসেবে, তবে প্রতিবার চালু করলে অন্তত ৬০ সেকেন্ডের টাকা লাগে। এটা খাটে Linux, Windows (SQL Server-সহ Windows-ও), Red Hat Enterprise Linux (RHEL) আর Ubuntu Pro-র বেলায়। আরও কিছু operating system, বেশিরভাগই নিজস্ব licence fee-ওয়ালা commercial Linux, এখনো পুরো ঘণ্টা ধরে বিল হয়।
  • টাকা লাগে শুধু instance চালু (running) থাকলে। stop করা instance-এর compute-এর কোনো খরচ নেই, তবে তার EBS volume-এর বিল চলতেই থাকে।
  • আগে কোনো টাকা দিতে হয় না, কোনো commitment নেই, তবে ঘণ্টাপ্রতি দাম সবচেয়ে বেশি।
  • সবচেয়ে ভালো খাটে অল্প সময়ের, হঠাৎ বেড়ে যাওয়া বা আগে থেকে আন্দাজ করা যায় না এমন workload-এ: নতুন application, যার আচরণ এখনো জানো না; development আর testing; আর এমন কাজ যেটা থামানো যাবে না, কিন্তু commitment করার মতো লম্বা সময়ও চলবে না।

#Reserved Instance (RI)

Reserved Instance কোনো server না। এটা একটা বিলের ছাড়, যেটা AWS প্রতি ঘণ্টায় মিলে যাওয়া চালু instance-গুলোর ওপর নিজে থেকেই বসিয়ে দেয়। কেনার সময় ঠিক করে দিতে হয়:

  • একটা instance type (যেমন m7i.large), একটা platform (Linux, Windows…), একটা tenancy (default বা dedicated), আর একটা Region (zonal হলে সাথে একটা Availability Zone-ও);
  • মেয়াদ: ঠিক ১ বছর অথবা ৩ বছর (৩ বছরে ছাড় বেশি);
  • payment option: No Upfront, Partial Upfront অথবা All Upfront (শুরুতে যত বেশি দেবে, মোট খরচ তত কম)।

কোনো ঘণ্টায় মিলে যাওয়ার মতো কোনো instance না চললে, সেই ঘণ্টার reservation স্রেফ নষ্ট হয়। পুরো মেয়াদের টাকা তোমাকে দিতেই হবে।

#Standard বনাম Convertible

Standard RIConvertible RI
ছাড়সবচেয়ে বেশি, প্রায় ৭২% পর্যন্তএকটু কম, প্রায় ৬৬% পর্যন্ত
Availability Zone, scope, একই family-র মধ্যে size বদলানোযায় (modify)যায় (modify)
instance family, OS, tenancy বদলানোযায় নাযায়, সমান বা বেশি দামের আরেকটা Convertible RI-এর সাথে exchange করে
RI Marketplace-এ বিক্রিকরা যায়করা যায় না

পুরো মেয়াদে ঠিক কী চালাবে সে ব্যাপারে নিশ্চিত হলে Standard নাও। commitment-এর ছাড় চাও, কিন্তু মনে হচ্ছে instance family বদলাতে হতে পারে (যেমন নতুন generation বা Graviton-এ যাওয়া), তাহলে Convertible।

#Regional বনাম zonal scope

Regional RIZonal RI
ছাড় কোথায় খাটেRegion-এর যেকোনো Availability Zone-এএকটা Availability Zone-এ
size নিয়ে নমনীয়তাdefault tenancy-র Linux/Unix-এ আছে: একটা m7i.xlarge-এর reservation দুইটা m7i.large-কেও ঢেকে দেয়, বা একটা m7i.2xlarge-এর অর্ধেকনেই: ঠিক ওই type-টাই লাগবে
capacity রিজার্ভহয় নাহয়: ওই zone-এ ওই instance-এর জন্য AWS জায়গা ধরে রাখে

মানে zonal RI একসাথে ছাড় আর একটা zone-এ জায়গার নিশ্চয়তা; Regional RI বেশি নমনীয় ছাড়, কিন্তু জায়গার কোনো নিশ্চয়তা নেই।

#Reserved Instance Marketplace

পরিকল্পনা বদলে গেলে অব্যবহৃত Standard RI অন্য customer-এর কাছে বিক্রি করতে পারো Reserved Instance Marketplace-এ। আবার অন্যের বাকি মেয়াদও সেখান থেকে কেনা যায় (প্রায়ই ১ বছরের কম)। যে নিয়মগুলো জানা দরকার: বিক্রি করা যায় শুধু Standard RI (Convertible কখনো না); RI অন্তত ৩০ দিন তোমার কাছে থাকতে হবে; মেয়াদের অন্তত এক মাস বাকি থাকতে হবে; আর বিক্রির টাকা থেকে AWS একটা service fee কেটে রাখে।

#Savings Plan

Savings Plan হলো ঘণ্টায় নির্দিষ্ট অঙ্কের টাকা খরচ করার একটা কথা (যেমন “ঘণ্টায় compute-এ $10”), ১ বা ৩ বছরের জন্য। প্রতি ঘণ্টায় যা হয়:

  1. ওই ঘণ্টার commitment শেষ না হওয়া পর্যন্ত AWS তোমার যোগ্য ব্যবহারের ওপর ছাড়ের দাম বসায়।
  2. commitment-এর বেশি যা ব্যবহার হয়, সেটা সাধারণ On-Demand দামে বিল হয়।
  3. ওই ঘণ্টায় commitment-এর যেটুকু কাজে লাগেনি, সেটা নষ্ট: কিছুই না চালালেও পুরো ঘণ্টার অঙ্কটাই দিতে হবে।

payment option RI-এর মতোই: No, Partial বা All Upfront (Database Savings Plan এর ব্যতিক্রম, নিচে দেখো)। Savings Plan বিক্রিও করা যায় না, cancel-ও করা যায় না, আর এটা কখনো capacity রিজার্ভ করে না।

Savings Planকিসের ওপর খাটেকিসে বাঁধাসর্বোচ্চ ছাড়
ComputeEC2 (যেকোনো family, size, Region, OS, tenancy), Fargate আর Lambdaশুধু টাকার অঙ্কে, আর কিছুতে নাপ্রায় ৬৬% পর্যন্ত
EC2 Instanceএকটা Region-এ একটা instance family-র EC2 (যেমন us-east-1-এ M7i)family + Region; size, OS, tenancy, Availability Zone যত খুশি বদলাওপ্রায় ৭২% পর্যন্ত
SageMaker AISageMaker AI-এর instance ব্যবহার (training, inference, notebook…)শুধু SageMaker AIপ্রায় ৬৪% পর্যন্ত
DatabaseAurora, DynamoDB, ElastiCache-এর মতো managed databaseশুধু database service; মেয়াদ ১ বছর, upfront নেইপ্রায় ৩৫% পর্যন্ত

হিসাবটা RI-এর মতোই: নমনীয়তা যত বেশি, ছাড় তত কম। Compute Savings Plan তোমার সাথে সাথে চলে: x86 থেকে Graviton-এ গেলে, EC2 থেকে Fargate-এ গেলে, এক Region থেকে আরেক Region-এ গেলেও ছাড় থাকে। EC2 Instance Savings Plan কয়েক শতাংশ বেশি ছাড় দেয়, কিন্তু একটা Region-এর একটা family-তেই আটকে থাকে।

#Spot Instance

Spot Instance চলে EC2-এর বাড়তি, অলস capacity-তে, যেটার জন্য এই মুহূর্তে কেউ পুরো দাম দিচ্ছে না। On-Demand customer-দের দরকার পড়লে AWS এটা ফেরত নিয়ে নিতে পারে, তাই দাম On-Demand-এর চেয়ে প্রায় ৯০% পর্যন্ত কম।

#Spot-এর দাম কীভাবে ঠিক হয়

#Interruption: দুটো সংকেত

AWS Spot Instance interrupt করে বেশিরভাগ সময় নিজের capacity ফেরত দরকার বলে; দাম তোমার maximum-এর ওপরে উঠে গেছে বলে, এমনটা অনেক কম হয়। তার আগে তুমি দুটো সংকেত পেতে পারো। দুটোই instance metadata থেকে পড়া যায়, আর দুটোই EventBridge event হিসেবেও আসে:

  1. Rebalance recommendation: “এই instance এখন বেশি ঝুঁকিতে আছে।” এটা প্রায়ই interruption notice-এর আগেই চলে আসে, তবে আসবেই এমন নিশ্চয়তা নেই। Auto Scaling group আর EC2 Fleet এটা দেখে Capacity Rebalancing করতে পারে: আগে একটা নতুন instance চালু করে, তারপর পুরনোটাকে সরিয়ে দেয়।
  2. Interruption notice: AWS instance-টা stop বা terminate করার ঠিক ২ মিনিট আগে এটা পাঠায়। behaviour hibernate হলেও notice আসে, কিন্তু hibernation শুরু হয়ে যায় সাথে সাথেই, ২ মিনিটের কোনো অবকাশ থাকে না।

দুটো সংকেতই AWS পাঠায় best effort হিসেবে, মানে চেষ্টা করে, কিন্তু কথা দেয় না। তাই AWS বলে কয়েক সেকেন্ড পরপর instance metadata দেখতে, আর design এমন হওয়া চাই যেন কোনো সতর্কতা ছাড়াই instance উধাও হলেও সামলে নেওয়া যায়। ২ মিনিটে একটা request শেষ করা, একটা checkpoint রাখা, বা load balancer থেকে নিজেকে সরিয়ে নেওয়া যায়। কিন্তু ঘণ্টাখানেকের একটা job শেষ করা যায় না। এজন্যই Spot-এর কাজকে আবার শুরু বা retry করতে পারার মতো করে বানাতে হয়।

#Interruption behaviour: terminate, stop না hibernate

Behaviourকী হয়কী লাগে
Terminate (default)instance আর তার instance store মুছে যায়; EBS volume তার delete-on-termination setting অনুযায়ী থাকে বা যায়কিছুই না
Stopinstance stop হয়, EBS volume থেকে যায় (বিলও চলে); একই zone-এ একই type-এর capacity ফিরলে EC2 নিজেই আবার চালু করেpersistent request (বা maintain ধরনের fleet), আর EBS root volume
Hibernatenotice আসার সাথে সাথেই শুরু: memory-র সবকিছু encrypted EBS root volume-এ লিখে instance stop হয়; পরে ঠিক যেখানে ছিল সেখান থেকে চলেstop-এর সব শর্ত, সাথে hibernation-এর সাধারণ শর্তগুলো (lesson 4.5)

Spot interruption, ধাপে ধাপে

একটা Spot Instance-এ image processing-এর worker চলছে। AWS-এর এখন capacity-টা ফেরত দরকার। কী বাঁচবে আর কী হারাবে, সেটা নির্ভর করে job সতর্কবার্তা পেয়ে কী করল, আর তুমি কোন interruption behaviour বেছে রেখেছ তার ওপর।

পরিস্থিতি

Amazon EC2Spot capacity
EventBridgeSpot event
Spot Instanceimage workerচলছে
CheckpointS3 bucket
নতুন instanceঅন্য pool থেকে
job ৭০% শেষ
ধাপ 1 / 7
1

worker একটা বড় batch-এর ৭০% কাজ করে ফেলেছে। প্রতি কয়েক মিনিট পরপর সে নিজের অগ্রগতি S3-এ লিখে রাখে। তাই কোনো সময়েই কয়েক মিনিটের বেশি কাজ হারানোর ভয় নেই।

#One-time বনাম persistent request

প্রতিটা Spot Instance আসে একটা Spot request থেকে:

  • one-time request একবার instance চালু করে। instance interrupt বা terminate হলে request বন্ধ হয়ে যায়, আর কিছু ফিরে আসে না।
  • persistent request যতদিন valid, ততদিন খোলা থাকে। instance interrupt হলে, বা তুমি নিজে terminate করলেও, request আরেকটা চালু করে (বা stop হওয়াটা আবার start করে)।

Spot request: instance বারবার চালু করে কে

প্রতিটা Spot Instance আসে একটা Spot request থেকে। persistent request তুমি cancel না করা পর্যন্ত কাজ চালিয়েই যায়। তাই cancel আগে না terminate আগে, এই ক্রমটা খুব গুরুত্বপূর্ণ।

পরিস্থিতি

তুমি
Spot requestone-time বা persistentopen
Amazon EC2
Spot Instance
তৈরি: persistent
ধাপ 1 / 5
1

তুমি একটা instance-এর জন্য persistent Spot request তৈরি করলে। persistent মানে: এই request যতক্ষণ খোলা, ততক্ষণ একটা instance চালু রাখতেই হবে।

#Spot কোন কাজে মানায়

পরীক্ষার keyword-গুলো মুখস্থ রাখো: fault-tolerant, flexible start and end time, batch job, data analysis, image বা media processing, build আর test-এর agent, load balancer-এর পেছনে stateless web server, big data আর container cluster। কাজটা যদি থেমে গিয়ে আবার শুরু হতে পারে আর জরুরি কিছু না হারায়, তাহলে সেটা Spot-এ চালানো যায়।

মালিকের নোটে পরীক্ষার একটা খুব চেনা লাইন আছে: “an application performing big data analysis on a fleet of EC2 instances”। প্রশ্নের শেষ লাইনে যদি এই fleet সবচেয়ে কম খরচে চালানোর উপায় জানতে চায়, উত্তর Spot Instance / Spot Fleet। কারণ analysis-টা একটা batch job: মাঝপথে ১-২টা server হারিয়ে গেলে অন্য একটা server তাদের অংশটুকু আবার করে নেয়। (এই একই scenario থেকে placement, instance type আর storage নিয়েও প্রশ্ন আসে; সেগুলোর উত্তর lesson 4.1, 4.5 আর EC2 storage chapter-এ।)

নিজেকে যাচাই করোপ্রশ্ন

রাতে একটা job upload হওয়া ছবিগুলো থেকে thumbnail বানায়। সকালের আগে যেকোনো সময় চললেই হয়, আর অর্ধেক হওয়া ছবি আবার গোড়া থেকে করে নিলেই চলে। সবচেয়ে কম খরচের option কোনটা?

#Spot Fleet আর EC2 Fleet

একটা zone-এ একটা instance type চাওয়াটাই Spot ব্যবহারের সবচেয়ে ঝুঁকির উপায়: ওই pool-এ টান পড়লে তোমার সব instance একসাথে চলে যাবে। Fleet তাই একটা target capacity চায় (কয়টা instance, বা কতগুলো virtual CPU বা কত memory), আর AWS-কে গ্রহণযোগ্য কয়েকটা launch pool-এর তালিকা দেয়: কয়েকটা Availability Zone-এ কয়েকটা instance type। চাইলে নিশ্চিত base হিসেবে কিছু On-Demand instance-ও মিশিয়ে নিতে পারে। target capacity বা তোমার দেওয়া সর্বোচ্চ মোট দামে না পৌঁছানো পর্যন্ত fleet instance চালু করতে থাকে, আর maintain ধরনের হলে interrupt হওয়া instance-এর জায়গায় নতুন এনে বসায়।

Spot অংশটা কোন pool থেকে আসবে, সেটা ঠিক করে allocation strategy:

Strategyকোন pool বাছেকোথায় ভালোঝুঁকি
price-capacity-optimizedযেসব pool-এ খালি capacity সবচেয়ে বেশি, তাদের মধ্যে সবচেয়ে সস্তাটাবেশিরভাগ workload-এর জন্য AWS-এর পরামর্শinterruption কম, দামও কম
capacity-optimizedখালি capacity সবচেয়ে বেশি এমন pool, দাম না দেখেযেখানে interruption খুব দামি (লম্বা job, বড় cluster)interruption সবচেয়ে কম, খরচ একটু বেশি হতে পারে
lowest-priceশুধু সবচেয়ে সস্তা poolখুব ছোট job, যেখানে দামই সবinterruption সবচেয়ে বেশি: সস্তা pool সস্তা, কারণ সেগুলো প্রায় ভর্তি
diversifiedসব pool-এ সমানভাবে ছড়িয়েলম্বা সময় চলা fleet, যার বেশিরভাগ capacity টিকে থাকা চাইএকটা pool গেলে শুধু তার ভাগটুকু যায়

একটা fleet, ছয়টা Spot pool

fleet-এর ১২টা instance লাগবে, আর সে ছয়টা pool (instance type + Availability Zone) থেকে নিতে পারে। কোন pool-এ কয়টা যাবে সেটা ঠিক করে allocation strategy। আর তার ওপরই নির্ভর করে, একটা pool হাতছাড়া হলে কতটা ক্ষতি হবে।

পরিস্থিতি

us-east-1
us-east-1a
us-east-1b
us-east-1c
EC2 Fleetলক্ষ্য: ১২
m7i.large× 12
c7i.large× 0
m7i.large× 0
m6i.large× 0
m6i.large× 0
r7i.large× 0
× 12

Spot pool (instance type · Availability Zone)

Poolদামখালি capacityinstance
m7i.large · a★ সবচেয়ে কমখুব কম12
c7i.large · aকমবেশি0
m7i.large · bমাঝারিখুব বেশি0
m6i.large · bকমখুব বেশি0
m6i.large · cমাঝারিবেশি0
r7i.large · cবেশিমাঝারি0
ধাপ 1 / 3
1

lowest-price শুধু দাম দেখে। pool ১ সবচেয়ে সস্তা, তাই ১২টা instance-ই সেখানে চলে যায়।

#Dedicated Host আর Dedicated Instance

যেভাবেই টাকা দাও, সাধারণ instance চলে shared tenancy-তে: তোমার virtual machine একটা বড় physical server-এর এক টুকরো, আর তার পাশেই অন্য customer-এর machine চলতে পারে। ওই server-এ কয়টা physical socket বা core আছে, তুমি কখনো জানতে পারো না।

কিছু enterprise software-এর জন্য এটা একটা সমস্যা। Oracle বা Microsoft (Windows Server, SQL Server)-এর মতো vendor-রা virtual CPU না গুনে physical socket বা physical core গুনে licence বিক্রি করতে পারে। নিজের কেনা licence নিয়ে আসতে (BYOL) হলে ওই hardware তোমাকে দেখতে আর গুনতে পারতে হবে। মালিকের নোটে বলা আছে, পরীক্ষার সবচেয়ে কমন আর ঝামেলার প্রশ্নগুলোর একটা এটা:

একটা database-এর vendor licence বিল করে physical core আর socket visibility দেখে। কোন purchasing option সেটা দেখতে দেয়? → Dedicated Host।

Dedicated InstanceDedicated Host
Hardwareঅন্য account-এর সাথে ভাগ হয় না (তোমার নিজের account-এর অন্য instance-এর সাথে হতে পারে)আস্ত একটা physical server তোমার জন্য
socket আর physical core দেখা যায়নাহ্যাঁ
কোন host-এ instance বসবে তার নিয়ন্ত্রণ, host affinityনা (stop/start করলে অন্য hardware-এ চলে যেতে পারে)হ্যাঁ
server-এ বাঁধা licence (socket/core ধরে BYOL)নাহ্যাঁ
বিলপ্রতি instance, সাথে প্রতি Region-এ একটা dedicated feeপ্রতি host, তাতে যতগুলো instance-ই চালাও
ছাড়dedicated tenancy-র RI আর Savings Planhost-প্রতি On-Demand, Dedicated Host Reservation (১ বা ৩ বছর), Savings Plan
কখন নেবেcompliance বলছে “hardware ভাগাভাগি চলবে না”licence, socket/core, placement-এর নিয়ন্ত্রণ, কড়া compliance

EC2 চালানোর সবচেয়ে দামি উপায় হলো Dedicated Host, তাই licence বা compliance-এর দরকার না থাকলে এটা নেওয়ার মানে হয় না।

#On-Demand Capacity Reservation (ODCR)

Capacity Reservation একটা Availability Zone-এ একটা type, platform আর tenancy-র কয়েকটা instance-এর জন্য জায়গা ধরে রাখে, এখন থেকে (বা ভবিষ্যতের কোনো তারিখ থেকে), যতদিন তুমি চাও:

  • কোনো মেয়াদ নেই: বানাও, যখন খুশি cancel করো (ভবিষ্যতের তারিখের reservation-এ অবশ্য book করার সময় একটা ন্যূনতম মেয়াদ ঠিক করে দিতে হয়)।
  • ভেতরে instance চলুক বা না চলুক, On-Demand রেটেই বিল হয়: খালি reservation-এর খরচ ভর্তি reservation-এর সমান।
  • নিজে থেকে কোনো ছাড় নেই। দাম কমাতে হলে এর সাথে Regional Reserved Instance বা Savings Plan জুড়ে দাও: reservation-এর ভেতরে চলা instance-গুলোর ওপর ওদের ছাড় বসে যায়।
  • instance এটা নিজে থেকেই ব্যবহার করে (open matching), অথবা শুধু তখনই, যখন instance নিজে এর নাম উল্লেখ করে (targeted matching)।
Capacity ReservationZonal Reserved Instance
একটা zone-এ জায়গাহ্যাঁহ্যাঁ
বিলে ছাড়না (Regional RI বা Savings Plan যোগ করো)হ্যাঁ
মেয়াদনেই, যখন খুশি cancel১ বা ৩ বছর
কোথায় মানায়নতুন launch, sale-এর সময়, disaster recovery-র জন্য জায়গা, নির্দিষ্ট zone-এ চালু হতেই হবে এমন regulated workloadস্থির workload, যার ছাড় আর জায়গা দুটোই দরকার

অল্প কয়েক দিনের GPU দরকার হলে (ধরো কয়েক দিন ধরে একটা model train করবে), EC2 Capacity Blocks একটা নির্দিষ্ট সময়ের জন্য GPU instance রিজার্ভ করে দেয়, টাকা দিতে হয় আগেই।

#কোনটা কখন নেবে

প্রশ্নে যদি বলে…বেছে নাও
অল্প সময়ের, অনিশ্চিত, interrupt করা যাবে না, নতুন appOn-Demand
steady state, predictable, বছরের পর বছর ২৪ ঘণ্টা চলে (database)Reserved Instance (সবচেয়ে বেশি ছাড়ের জন্য Standard) বা EC2 Instance Savings Plan
লম্বা সময়ের, কিন্তু family, Region বদলাতে পারে, বা Fargate/Lambda-তে যেতে পারেCompute Savings Plan (বা Convertible RI)
fault-tolerant, শুরু-শেষের সময় নমনীয়, batch, analysis, image processingSpot (অনেক pool নিয়ে একটা fleet দিয়ে)
socket/core ধরে licence, BYOL, placement-এর নিয়ন্ত্রণDedicated Host
অন্য customer-এর সাথে hardware ভাগ করা যাবে না, আর কিছু নাDedicated Instance
নির্দিষ্ট সময়ে একটা নির্দিষ্ট Availability Zone-এ launch করতে পারতেই হবেCapacity Reservation (+ ছাড়ের জন্য Savings Plan বা Regional RI)

#একটা architecture-এ কয়েকটা option একসাথে

বাস্তবের system কয়েকটা option মিলিয়ে চলে। একটা সাধারণ online shop ধরো:

  • Auto Scaling group-এর web tier: সারাক্ষণ চালু থাকা base হিসেবে কয়েকটা On-Demand instance, যেগুলো Compute Savings Plan দিয়ে ঢাকা; ব্যস্ত সময়ের বাড়তি instance Spot-এ, অনেক instance type-এ ছড়ানো, price-capacity-optimized দিয়ে। কোনো Spot Instance interrupt হলে load balancer বাকিগুলোতে traffic পাঠিয়ে দেয়।
  • Database: কখনোই Spot না। EC2-তে চালালে ৩ বছরের Reserved Instance; managed service হলে তার নিজের reservation বা Database Savings Plan।
  • রাতের report আর image processing: Spot, checkpoint রাখা হয় S3-এ।
  • বড় একটা sale-এর দিন: ওই সপ্তাহের জন্য দুইটা Availability Zone-এ Capacity Reservation, আগের Savings Plan-এর ছাড়সহ।
  • core ধরে licence-ওয়ালা একটা commercial database: একটা Dedicated Host।

মোটা দাগে নিয়মটা হলো: baseline-এ commit করো, যা interrupt হলেও চলে সেটা Spot-এ দাও, বাকিটার জন্য On-Demand।

ঠিক কতটুকুতে commit করবে?

একটা workload সারা বছর একটা স্থির baseline চালায়, আর দিনে কয়েক ঘণ্টা কিছু বাড়তি instance লাগে। নিচে workload-এর ধরন বদলে দেখো, চারটা আলাদা plan-এ এক বছরের খরচ কত দাঁড়ায়। সব খরচ দেখানো হয়েছে “সবকিছু On-Demand-এ চালালে যত হতো” তার শতকরা হিসেবে।

Baseline, সারাক্ষণ
peak-এ বাড়তি
দিনে কত ঘণ্টা peak
Savings Plan-এর মেয়াদ
peak-এর কাজ interrupt হলেও চলে
  • সবকিছু On-Demand100%
  • peak পর্যন্ত commit128%
  • baseline-এ commit, peak On-Demand65%
  • ★ baseline-এ commit, peak Spot-এ44%
commitment কাজে লেগেছেcommitment নষ্টOn-DemandSpot

হিসাবের সুবিধার জন্য ধরা হয়েছে: Savings Plan ১ বছরে প্রায় ৩২% আর ৩ বছরে প্রায় ৫২% ছাড়, Spot প্রায় ৬৫% ছাড়। আসল ছাড় instance type, Region, মেয়াদ আর payment option অনুযায়ী বদলায়।

i

যেটুকু প্রতি ঘণ্টায় চলে শুধু সেটুকুতে commit করো, আর interrupt হলেও চলে এমন peak-টা Spot-এ দাও। peak পর্যন্ত commit করলে দিনের বেশিরভাগ সময় অলস instance-এর টাকা গুনতে হয় (লাল অংশটা)।

নিজেকে যাচাই করোপ্রশ্ন

একটা online shop-এর চারটা অংশ আছে। এর মধ্যে কোনটা কিছুতেই Spot Instance-এ চালানো উচিত না?

#নিজে করে দেখো

# 1. Region-এর প্রতিটা AZ-এ একটা instance type-এর সাম্প্রতিক Spot দাম
aws ec2 describe-spot-price-history \
  --instance-types m7i.large \
  --product-descriptions "Linux/UNIX" \
  --start-time "$(date -u -d '-1 day' +%Y-%m-%dT%H:%M:%S)" \
  --query 'SpotPriceHistory[].[AvailabilityZone,SpotPrice,Timestamp]' --output table

# 2. persistent request থেকে একটা Spot Instance, interrupt হলে terminate না হয়ে stop হবে
aws ec2 run-instances \
  --image-id ami-0123456789abcdef0 --instance-type m7i.large --count 1 \
  --instance-market-options '{"MarketType":"spot","SpotOptions":{"SpotInstanceType":"persistent","InstanceInterruptionBehavior":"stop"}}'

# 3. Instance-এর পেছনের request খুঁজে বের করো, তারপর আগে REQUEST CANCEL, তারপর terminate
SIR=$(aws ec2 describe-instances --instance-ids i-0abc1234def567890 \
  --query 'Reservations[0].Instances[0].SpotInstanceRequestId' --output text)
aws ec2 cancel-spot-instance-requests --spot-instance-request-ids "$SIR"
aws ec2 terminate-instances --instance-ids i-0abc1234def567890

# 4. ১ বছরের Standard RI offering তুলনা (31536000 সেকেন্ড = ১ বছর)
aws ec2 describe-reserved-instances-offerings \
  --instance-type m7i.large --product-description "Linux/UNIX" \
  --offering-class standard --instance-tenancy default \
  --min-duration 31536000 --max-duration 31536000 \
  --query 'ReservedInstancesOfferings[].[OfferingType,Scope,FixedPrice,RecurringCharges[0].Amount]' --output table

# 5. একটা AZ-এ দুইটা Instance-এর জায়গা রিজার্ভ (cancel না করা পর্যন্ত On-Demand রেটে বিল)
CR=$(aws ec2 create-capacity-reservation \
  --instance-type m7i.large --instance-platform Linux/UNIX \
  --availability-zone us-east-1a --instance-count 2 \
  --instance-match-criteria open --query 'CapacityReservation.CapacityReservationId' --output text)
aws ec2 cancel-capacity-reservation --capacity-reservation-id "$CR"   # টাকা কাটা বন্ধ

২ নম্বর ধাপে run-instances দিয়ে persistent request বানালে behaviour হতে হবে stop বা hibernate। ৩ নম্বর ধাপের cancel বাদ দিয়ে শুধু instance terminate করে দেখো, এক মিনিট পরে console-এ তাকালেই দেখবে request নতুন আরেকটা চালু করে দিয়েছে।

#সারসংক্ষেপ

মূল কথাগুলো

  • On-Demand: commitment নেই, দাম সবচেয়ে বেশি; Linux, Windows, RHEL আর Ubuntu Pro-তে সেকেন্ড হিসেবে বিল (অন্তত ৬০ সেকেন্ড); জায়গা পাওয়ার নিশ্চয়তা দেয় না।
  • Reserved Instance: একটা configuration-এর জন্য ১ বা ৩ বছরের বিলের ছাড়, প্রায় ৭২% (Standard) বা ৬৬% (Convertible) পর্যন্ত। No/Partial/All Upfront। Zonal RI capacity-ও রিজার্ভ করে; Regional RI-তে size নিয়ে নমনীয়তা আছে, capacity নেই। Marketplace-এ বিক্রি করা যায় শুধু Standard RI।
  • Savings Plan: ১ বা ৩ বছরের জন্য ঘণ্টায় নির্দিষ্ট টাকার commitment; তার বেশি গেলে On-Demand দাম, কম গেলে বাকিটা নষ্ট। Compute (যেকোনো জায়গার EC2 + Fargate + Lambda, প্রায় ৬৬% পর্যন্ত), EC2 Instance (এক Region-এ এক family, প্রায় ৭২% পর্যন্ত), SageMaker AI, Database (১ বছর, upfront নেই)। capacity রিজার্ভ করে না।
  • Spot: অলস capacity, প্রায় ৯০% পর্যন্ত ছাড়, দাম ঠিক হয় দীর্ঘমেয়াদি চাহিদা-জোগানে (কোনো নিলাম নেই)। আগে rebalance recommendation (আগেভাগে, তবে নিশ্চিত না), তারপর ২ মিনিটের interruption notice। Terminate (default), stop বা hibernate (stop/hibernate-এর জন্য persistent request লাগে)। persistent request-এর instance terminate করার আগে request cancel করো। database-এ কখনো না।
  • Fleet: অনেকগুলো pool, চাইলে On-Demand base; price-capacity-optimized হলো পরামর্শ দেওয়া strategy, lowest-price সবচেয়ে ঝুঁকির।
  • Dedicated Host: আস্ত একটা server, socket/core দেখা যায়, BYOL, placement-এর নিয়ন্ত্রণ, সবচেয়ে দামি। Dedicated Instance: অন্য account-এর সাথে hardware ভাগ হয় না, এর বেশি কিছু না।
  • Capacity Reservation: একটা zone-এ জায়গা, যতদিন খুশি, ব্যবহার হোক বা না হোক পুরো On-Demand দাম; ছাড় চাইলে Savings Plan বা Regional RI জুড়ে দাও।
  • baseline-এ commit, interrupt হলেও চলে এমন অংশ Spot-এ, বাকিটা On-Demand।