Course-এর সূচি

4.1

Instance, Family আর নামের মানে

একটা Instance কী কী দিয়ে তৈরি, Instance family, আর m7g.2xlarge নামটা কীভাবে পড়তে হয়।

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

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

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

  • EC2 instance আসলে কী, আর এটা কী কী দিয়ে তৈরি (vCPU, memory, storage, network, operating system, image), সেটা বুঝিয়ে বলতে পারবে।
  • instance-এর ছয়টা category চিনবে, আর প্রশ্নের keyword দেখে কোন কাজে কোনটা লাগবে বেছে নিতে পারবে।
  • m7g.2xlarge বা c7gn.xlarge-এর মতো যেকোনো instance type-এর নাম টুকরো টুকরো করে পড়তে পারবে।
  • Graviton আর Intel/AMD instance-এর তুলনা করতে পারবে, আর Graviton-এ যাওয়ার আগে কী কী বদলাতে হয় তা বলতে পারবে।
  • একটা burstable T instance কতক্ষণ burst করতে পারবে হিসাব করে বের করতে পারবে, আর standard না unlimited mode, সেটা ঠিক করতে পারবে।
  • console থেকে একটা instance launch করতে পারবে, আর reboot, stop, start, terminate করলে কী থাকে আর কী হারায়, আগে থেকেই বলে দিতে পারবে।

#EC2 instance আসলে কী

Amazon EC2 (Elastic Compute Cloud) তোমাকে virtual server ভাড়া দেয়। এর প্রতিটাকে বলে একটা instance। তোমার নিজের কম্পিউটারের মতোই এতে processor, memory, storage আর একটা operating system (Linux, Windows বা macOS) থাকে। তফাত হলো, এটা চলে AWS-এর data center-এ রাখা একটা physical server-এর ওপর, যাকে বলে host, আর সেটা থাকে তোমার বেছে নেওয়া কোনো Availability Zone-এ।

EC2 হলো IaaS (Infrastructure as a Service)-এর সবচেয়ে চেনা উদাহরণ। বিল্ডিং, hardware আর virtualization-এর দায়িত্ব AWS-এর; operating system থেকে ওপরের সবকিছু তোমার (patch, software, data, firewall rule)। AWS নিজেই EC2-কে বলে “resizable compute capacity”: কয়েক মিনিটের মধ্যে একটা বা হাজারটা server চালু করতে পারো, একটাকে বড় বা ছোট করতে পারো, আর ব্যবহার বন্ধ করলে টাকা কাটাও বন্ধ।

#একটা instance কী কী দিয়ে তৈরি

instance launch করার সময় এই জিনিসগুলো তুমি ঠিক করে দাও:

অংশতুমি কী বেছে নাওকোথা থেকে আসে
vCPUকয়টা virtual processorinstance type
memory (RAM)কত GiBinstance type
storagenetwork দিয়ে যুক্ত EBS volume (বা network file system), কিংবা host-এর ভেতরের instance store diskEBS: launch-এর সময় বাছো, পরেও যোগ করা যায়। instance store: শুধু কিছু type-এ থাকে
networkbandwidth, একটা subnet-এ একটা network interface, private IP, চাইলে public IPbandwidth আসে instance type থেকে; বাকিটা network setting থেকে
operating system আর softwareLinux, Windows, macOS, সাথে আগে থেকে বসানো যা কিছুযে image (AMI) থেকে launch করছ
firewallকোন traffic ঢুকতে পারবেএক বা একাধিক security group (লেসন ৪.২)
loginকীভাবে ভেতরে ঢুকবেkey pair, Instance Connect বা Session Manager (লেসন ৪.২)
প্রথম boot-এর scriptপ্রথমবার চালু হওয়ার সময় কোন command চলবেuser data (লেসন ৪.৩)

এর কয়েকটা একটু খুলে বলা দরকার।

vCPU। operating system যাকে একটা processor হিসেবে দেখে, সেটাই একটা vCPU। এর পেছনে আসলে কী আছে, তা নির্ভর করে processor-এর ওপর:

  • বেশিরভাগ Intel instance আর পুরোনো AMD instance-এ (m6a আর তার আগের), প্রতিটা physical core দুটো hardware thread চালায় (hyperthreading), আর প্রতিটা thread একটা vCPU। মানে ৮টা vCPU আসলে ৪টা physical core।
  • Graviton instance-এ, আর ৭ম generation থেকে AMD-তে (m7a, c7a, r7a আর পরেরগুলো), প্রতিটা vCPU একটা পুরো physical core।

এই কারণেই এক family-র ৮টা vCPU অন্য family-র ৮টা vCPU-র চেয়ে বেশি কাজ করে ফেলতে পারে।

memory লেখা হয় GiB-তে (gibibyte, ১,০২৪ × ১,০২৪ × ১,০২৪ byte)। এটা binary একক, GB-র চেয়ে একটু বড়।

storage দুই রকম। EBS (Elastic Block Store) volume হলো একটা virtual disk, যেটা একই Availability Zone-এর আলাদা storage server-এ থাকে আর network দিয়ে instance-এর সাথে যুক্ত হয়। instance stop করলেও এর data থাকে, খুলে অন্য instance-এ লাগানোও যায়। অন্যদিকে instance store হলো host-এর ভেতরেই বসানো একটা NVMe SSD (কিছু storage type-এ HDD)। খুব দ্রুত, কিন্তু instance stop বা terminate হলে, কিংবা host নষ্ট হলে এর data হারিয়ে যায়। যেসব type “EBS-only”, সেগুলোতে instance store একদমই নেই। দুটোই অধ্যায় ৫-এ বিস্তারিত আছে।

এক নজরে AMI। AMI (Amazon Machine Image) হলো সেই template, যেটা থেকে instance boot হয়: operating system, তার setting আর আগে থেকে বসানো software। একটা AMI একটা processor architecture-এর (x86 বা Arm) জন্য বানানো, আর একটা Region-এই থাকে। AMI নিয়ে পুরো আলোচনা লেসন ৪.৩-এ।

কোনটা শুধু তোমার, কোনটা ভাগাভাগি। তোমার instance-এর vCPU, memory আর instance store শুধু তোমার জন্যই আলাদা করে রাখা। কিন্তু host-এর network আর EBS bandwidth ওই host-এর সব instance-এর মধ্যে ন্যায্যভাবে ভাগ হয়। এই জন্যই ছোট type-এর পাশে লেখা থাকে “up to 12.5 Gbps”: একটা baseline পায়, আর host-এর capacity ফাঁকা থাকলে তার ওপরে burst করতে পারে। বড় size-গুলো নির্দিষ্ট আর বেশি bandwidth পায়। আজকালকার instance চলে AWS Nitro System-এ। এটা networking, storage আর security-র কাজ আলাদা card-এ সরিয়ে দেয়, ফলে host-এর প্রায় সব processor আর memory instance-গুলোর জন্যই থাকে।

একটা instance আসলে কী দিয়ে তৈরি

তোমার instance হলো একটা physical host-এর একটা ভাগ। কিছু জিনিস ওই host-এর ভেতরেই থাকে, আর কিছু জিনিস network দিয়ে এসে যুক্ত হয়।

পরিস্থিতি

Regionus-east-1
Availability Zoneus-east-1a
Host A (Nitro)
Host B (সুস্থ আরেকটা host)
তোমার instancem7gd.large2 vCPU · 8 GiB
অন্য কোনো গ্রাহকএকই host
Instance storehost-এর ভেতরের NVMe
Network interface10.0.1.25
EBS root volumegp3, network দিয়ে
VPC network
ধাপ 1 / 6
1

m7gd.large type মানে Host A-তে শুধু তোমার জন্য 2টা vCPU আর 8 GiB memory আলাদা করে রাখা। তোমার instance চুপচাপ বসে থাকলেও অন্য কেউ এগুলো ব্যবহার করতে পারবে না।

#instance family

AWS-এ শত শত instance type আছে। এগুলো ছয়টা category-তে ভাগ করা, প্রতিটা এক এক ধরনের কাজের জন্য বানানো। একটা category-র ভেতরে type-এর নামের প্রথম অক্ষরটা হলো series (অনেকে একে family-ও বলে)।

categoryseriesকীসের জন্য বানানোসাধারণ কাজপ্রতি vCPU-তে memory (এখনকার series)
General purposeM, T (burstable), Maccompute, memory আর network-এর ভারসাম্যweb আর application server, ছোট-মাঝারি database, code repository, development আর testM: 4 GiB। T: একেকটায় একেক রকম
Compute optimisedCদ্রুত processor, প্রতি GiB-তে বেশি vCPUbatch processing, media transcoding, high-performance web server, scientific modelling, dedicated game server, CPU দিয়ে চলা machine learning inference2 GiB
Memory optimisedR, X, U (high memory), z1dRAM-এ রাখা বিশাল datain-memory cache (Redis, Memcached), in-memory analytics (Apache Spark), বড় relational আর NoSQL database, big data-র real-time processingR: 8 GiB। X: 16–32 GiB। U: এক instance-এ 32 TiB পর্যন্ত
Storage optimisedI, D, H, সাথে Im/Isখুব দ্রুত বা খুব বড় local disk (instance store)I: NoSQL database (Cassandra, MongoDB), প্রচুর transaction-ওয়ালা database, search cluster, in-memory database-এর cache। D/H: data warehouse, distributed file system (Hadoop), log processingএকেকটায় একেক রকম
Accelerated computingP, G, Trn, Inf, FGPU, AWS-এর machine learning chip বা FPGAP / Trn: machine learning model train করা। G / Inf: inference, graphics আর video। F: নিজের বানানো hardware logicএকেকটায় একেক রকম
HPC optimisedHpcঅনেকগুলো node জুড়ে একসাথে চলা simulationআবহাওয়া, fluid dynamics, genomics, গাড়ির crash simulationএকেকটায় একেক রকম

যে series-গুলো সবচেয়ে বেশি দেখবে, সেগুলো মনে রাখার একটা ছোট্ট কৌশল:

  • C = Compute / CPU-র কাজ।
  • R = RAM।
  • M = Middle, মাঝামাঝি: ভারসাম্যপূর্ণ, সাধারণ কাজ।
  • T = Turbo: burstable, সস্তা, যেসব কাজ বেশিরভাগ সময় চুপচাপ থাকে।
  • I = I/O: দ্রুত local disk। D = Dense, ঠাসা storage।
  • P আর G = GPU। Trn = Trainium (training)। Inf = Inferentia (inference)।

#প্রতিটা category একটু খুঁটিয়ে

  • General purpose। M একটা স্থির, ভারসাম্যপূর্ণ মেশিন দেয়; bottleneck কোথায় এখনো না জানলে এটাই নিরাপদ বাছাই। T সস্তা আর burstable (নিচে আলাদা অংশ আছে)। Mac instance আসল Apple hardware-এ macOS চালায়, iPhone আর Mac app বানানোর জন্য; এগুলো চলে Dedicated Host-এ, কমপক্ষে ২৪ ঘণ্টার জন্য নিতে হয়।
  • Compute optimised। processor M-এর মতোই, কিন্তু প্রতি vCPU-তে memory অর্ধেক। ফলে টাকা যায় processor-এর শক্তির পেছনে, যে RAM লাগবে না তার পেছনে না।
  • Memory optimised। memory-খেকো বেশিরভাগ কাজে R। খুব বড় in-memory database-এ X। সবচেয়ে বড় in-memory database-এর জন্য U (high memory), এক instance-এ 32 TiB পর্যন্ত RAM। আর z1d দেয় খুব উঁচু, টানা processor clock; যে software core গুনে license নেয়, সেখানে কম কিন্তু দ্রুত core নিলে license-এর টাকা বাঁচে।
  • Storage optimised। আসল কথা হলো local instance store। I type-এ NVMe SSD থাকে, random read/write খুব দ্রুত আর latency খুব কম। D আর H type-এ বড় hard disk, সস্তায় একটানা (sequential) throughput-এর জন্য। data যেহেতু instance store-এ থাকে, software-কেই সেটা কপি বা replicate করে রাখতে হয় (Cassandra, MongoDB আর Hadoop এটা নিজেরাই করে)।
  • Accelerated computing। processor-এর পাশে বাড়তি hardware কাজ করে: GPU (P, G), AWS-এর বানানো machine learning chip (Trn, Inf), আর FPGA, যেটা তুমি নিজের hardware logic দিয়ে program করো (F)।
  • HPC optimised। Hpc type বানানো হয়েছে বিশাল simulation-এর জন্য, যেখানে শত শত node সারাক্ষণ নিজেদের মধ্যে data চালাচালি করে। node-গুলোর মধ্যে খুব দ্রুত network থাকে, আর সব Region-এ পাওয়া যায় না। এমন cluster-এর placement group নিয়ে কথা হবে লেসন ৪.৫-এ।

#instance type-এর নাম পড়া

প্রতিটা instance type-এর নামের গড়ন একই: series, generation, option, একটা dot, তারপর size।

অংশm7g.2xlarge-এমানে
seriesmgeneral purpose
generation7সপ্তম generation। সংখ্যা যত বড়, তত নতুন; একই কাজ সাধারণত দ্রুত আর কম খরচে হয়
optiongprocessor আর বাড়তি সুবিধা (একটাও না থাকতে পারে, আবার কয়েকটা অক্ষরও থাকতে পারে)
size2xlargeনিজের family-র মধ্যে instance-টা কত বড়

যে option অক্ষরগুলো জানতেই হবে:

অক্ষরমানেউদাহরণ
gAWS Graviton processor (Arm)m7g, c8g
iIntel processorm7i, c7i
aAMD processorm7a, c7a
dসাথে local NVMe instance store আছেm7gd, c6id
nবেশি network (আর EBS) bandwidthc7gn, m6in
bবেশি EBS (block storage) performancer5b
eবাড়তি memory, বাড়তি storage বা বাড়তি GPU memory, category অনুযায়ীx2iedn, i3en
zউঁচু processor clock speedm5zn, r7iz
flexflex instance, একটু সস্তা সংস্করণ (hyphen দিয়ে লেখা)m7i-flex, c7i-flex

দুটো খটকা: পুরোনো a1 type-এ a ছিল series, আর তার মানেও ছিল Graviton। আর u high-memory type-গুলোর নামেই memory লেখা থাকে, যেমন u7i-12tb।

size দ্বিগুণ হতে থাকে। একই family-তে প্রতিটা ধাপে vCPU, memory আর দাম, তিনটাই দ্বিগুণ:

sizem7g vCPUm7g memory
medium14 GiB
large28 GiB
xlarge416 GiB
2xlarge832 GiB
4xlarge1664 GiB
8xlarge32128 GiB
16xlarge64256 GiB
metal64256 GiB, কোনো hypervisor নেই: পুরো host-টাই তোমার

কিছু family-তে আরও ছোট size আছে (T-তে nano, micro, small)। metal দেয় পুরো physical server, কোনো virtualization ছাড়া; যে software-এর সরাসরি hardware লাগে বা নিজের hypervisor চালাতে চায়, তার জন্য।

একই size, আলাদা family। প্রতিটা category-র প্রতি vCPU-তে memory-র অনুপাত আলাদা, তাই একই size-এর শব্দ মানে আলাদা মেশিন:

typevCPUmemory
c7g.2xlarge816 GiB
m7g.2xlarge832 GiB
r7g.2xlarge864 GiB

সংখ্যাগুলো কীভাবে মেলে, কয়েকটা আসল উদাহরণে দেখো (এখনকার আসল সংখ্যা “নিজে করে দেখো” অংশের command দিয়ে মিলিয়ে নিও):

typevCPUmemorylocal storagenetwork
t3.micro21 GiBEBS-onlyup to 5 Gbps
c7i.4xlarge1632 GiBEBS-onlyup to 12.5 Gbps
r7g.4xlarge16128 GiBEBS-onlyup to 15 Gbps
i4i.2xlarge864 GiB1 × 1,875 GB NVMe SSDup to 12 Gbps
c7gn.16xlarge64128 GiBEBS-only200 Gbps

instance type-এর নাম পড়া

প্রতিটা নাম হলো series + generation + options, তারপর একটা dot, তারপর size। এক টুকরো এক টুকরো করে খুলে দেখো।

পরিস্থিতি

m7g.2xlargeপুরো নাম
ধাপ 1 / 5
1

পুরো নামটা দিয়ে শুরু করো। dot-এর আগের অংশটা family (m7g), আর পরের অংশটা size।

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

একটা টিম c7g.xlarge আর c7gn.xlarge পাশাপাশি দেখছে। n থাকায় বাড়তি কী পাওয়া যায়?

#processor: Graviton, Intel আর AMD

বেশিরভাগ series-এ processor বেছে নেওয়ার সুযোগ থাকে, আর সেটা বোঝা যায় option অক্ষর দেখে:

Graviton (g)Intel (i)AMD (a)
কে বানায়AWS, Arm architecture-এর ওপরIntel (Xeon)AMD
architectureArm 64-bit (arm64)x86 64-bit (x86_64)x86 64-bit (x86_64)
vCPUএকটা পুরো physical coreএকটা hyperthread (core-এর অর্ধেক)৬ষ্ঠ generation পর্যন্ত hyperthread; 7a থেকে পুরো core
দামসাধারণত তিনটার মধ্যে ঘণ্টাপ্রতি সবচেয়ে সস্তাতুলনার মাপকাঠি৬ষ্ঠ generation পর্যন্ত Intel-এর চেয়ে প্রায় ১০% সস্তা; 7a থেকে ঘণ্টাপ্রতি একটু বেশি, কিন্তু প্রতিটা vCPU একটা পুরো core
generationGraviton2 (6g), Graviton3 (7g), Graviton4 (8g), Graviton5 (9g)5, 6i, 7i, 8i5a, 6a, 7a, 8a
কী চালায়Linux। Windows নাLinux আর WindowsLinux আর Windows

AWS-এর হিসাবে, তুলনীয় x86 instance-এর চেয়ে Graviton price performance-এ ৪০% পর্যন্ত ভালো, আর একই size আর generation-এর Intel type-এর চেয়ে Graviton type সাধারণত ঘণ্টাপ্রতি প্রায় ২০% সস্তা। একই কাজে বিদ্যুৎও কম খরচ হয়।

ঝামেলা একটাই, software। Graviton চালায় Arm-এর code, তাই instance-এর সবকিছু arm64-এর জন্য build করা থাকতে হবে:

  • যে code interpreter বা runtime-এর ওপর চলে (Python, Node.js, Java, PHP, Ruby), আর বেশিরভাগ open-source software যেমন আছে তেমনই চলে।
  • container-এর জন্য লাগবে arm64 বা multi-architecture image।
  • কোনো vendor-এর program যদি শুধু x86-এর জন্য দেওয়া থাকে, আর যেকোনো Windows workload, এগুলো সরানো যাবে না।

#burstable T instance আর CPU credit

অনেক server দিনের বেশিরভাগ সময় প্রায় অলস বসে থাকে, পুরো গতি লাগে মাঝে মাঝে: একটা ছোট website, একটা development box, একটা build agent। এদের জন্য সারাক্ষণের পুরো processor কিনলে টাকা জলে যায়। burstable (T) instance (t2, t3, t3a, t4g, t8i) এই সমস্যার সমাধান করে একটা baseline আর CPU credit দিয়ে।

  • প্রতিটা size-এর একটা baseline থাকে: প্রতিটা vCPU-র যতটুকু সে সবসময় ব্যবহার করতে পারে, যেমন t3.micro-র জন্য ১০%।
  • ১টা CPU credit = ১টা vCPU ১ মিনিট ১০০%-এ চলা (অথবা ১টা vCPU ২ মিনিট ৫০%-এ, অথবা ২টা vCPU ২ মিনিট ২৫%-এ)।
  • instance যতক্ষণ চলে, প্রতি ঘণ্টায় একটা নির্দিষ্ট হারে credit জমায়, আর আসলে যতটা CPU খাটায় ততটা credit খরচ করে। baseline-এর নিচে থাকলে বাড়তিটা জমা হয়; baseline-এর ওপরে উঠলে জমা থেকে খরচ হয়।
  • জমানো credit-এর একটা সীমা আছে: ২৪ ঘণ্টায় যত জমে, তত। এর বেশি হলে নতুন credit ফেলে দেওয়া হয়।
typevCPUপ্রতি vCPU-তে baselineঘণ্টায় জমেসর্বোচ্চ জমানো যায়
t2.micro110%6144
t3.nano25%6144
t3.micro / t4g.micro210%12288
t3.small220%24576
t3.large230%36864
t3.xlarge440%962,304

জমার হার baseline থেকেই বের হয়: ঘণ্টায় credit = vCPU × baseline × ৬০। t3.micro-র জন্য: ২ × ১০% × ৬০ = ঘণ্টায় ১২টা credit।

একটা হিসাব করে দেখি। একটা t3.micro-র balance পুরো ভরা, ২৮৮টা credit। হঠাৎ এর দুটো vCPU-ই ৫০%-এ চলতে শুরু করল। এখন ঘণ্টায় খরচ ২ × ৫০% × ৬০ = ৬০টা credit, আর জমছে ১২টা। তাই balance কমছে ঘণ্টায় ৪৮টা করে: ২৮৮ ÷ ৪৮ = ৬ ঘণ্টা burst করার পর balance খালি।

balance খালি হলে কী হবে, তা নির্ভর করে credit mode-এর ওপর:

standard modeunlimited mode
credit শেষ হলেCPU baseline-এ নামিয়ে আটকে দেওয়া হয়, যতক্ষণ না আবার জমেburst চালিয়ে যায়, খরচ করে surplus credit
বাড়তি খরচকখনো নাচলমান ২৪ ঘণ্টার গড় baseline-এর সমান বা নিচে থাকলে কিছুই না (পরের চুপচাপ সময়ে surplus শোধ হয়ে যায়)। গড় তার ওপরে গেলে vCPU-hour প্রতি একটা নির্দিষ্ট বাড়তি দাম
কার defaultt2t3, t3a, t4g, t8i

পরীক্ষায় যা জিজ্ঞেস করতে ভালোবাসে:

  • standard mode-এ t2 instance শুরুতে কিছু launch credit পায়, যাতে দ্রুত চালু হতে পারে, আর stop করলে জমানো সব credit হারায়। t3, t3a, t4g আর t8i stop করার পরও ৭ দিন পর্যন্ত জমানো credit ধরে রাখে।
  • mode যেকোনো সময় বদলানো যায়, instance চলুক বা বন্ধ থাকুক।
  • CloudWatch-এ credit balance (CPUCreditBalance) দেখা যায়, আর unlimited mode-এ কত surplus খরচ হলো (CPUSurplusCreditBalance) তা-ও। balance যদি বারবার শূন্যে নেমে যায়, সেটাই বিপদের সংকেত।
  • যে T instance সারাদিন baseline-এর অনেক ওপরে চলে, তার জন্য কোনো mode-ই ঠিক না: standard mode-এ সে ধীর, unlimited mode-এ বাড়তি টাকা গোনে, শেষমেশ একটা m instance-এর চেয়েও বেশি খরচ পড়তে পারে। তাকে একটা fixed-performance type-এ (M বা C) সরিয়ে দাও।

একটা t3.micro-র CPU credit খরচ আর জমা

baseline প্রতি vCPU-তে 10%, vCPU 2টা: ঘণ্টায় 12টা credit জমে, সর্বোচ্চ 288টা জমিয়ে রাখা যায়। ১টা credit মানে ১টা vCPU ১ মিনিট 100%-এ চলা।

পরিস্থিতি

ভিজিটর
t3.micro2 vCPU, baseline 10%3%
credit balanceসর্বোচ্চ 288288 (ভরা)
মাসের বিল
3%-এ অলস
ধাপ 1 / 5
1

baseline-এর নিচে থাকলে ঘণ্টায় 12টা credit জমে, কিন্তু খরচ হয় মাত্র 2 × 3% × 60 = 3.6। তাই balance বাড়তে থাকে, যতক্ষণ না ২৪ ঘণ্টার সীমায় পৌঁছায়।

flex instance (m7i-flex, c7i-flex, m8i-flex, c8i-flex, r8i-flex) হলো আরও সহজ, নতুন একটা মাঝামাঝি পথ: CPU-র baseline ৪০%, ২৪ ঘণ্টার মধ্যে ৯৫% সময় পুরো গতিতে চলার সুযোগ, credit-এর কোনো হিসাব নেই, আর দাম মিলে যাওয়া non-flex type-এর চেয়ে কম। যে সাধারণ কাজ সারাদিন পুরো জোরে চলে না, তার জন্য ভালো।

#instance type বাছবে কীভাবে

  1. bottleneck খুঁজে বের করো

    কাজটা কোথায় আটকায়: processor, memory, local disk-এর গতি, network, নাকি GPU? চালু কোনো system থাকলে মেপে দেখো, নইলে software-এর documentation দেখে আন্দাজ করো।

  2. category বাছো

    সব কিছু ভারসাম্যে বা এখনো জানা নেই হলে general purpose; processor-এর জন্য C; memory-র জন্য R/X; local disk-এর জন্য I/D; accelerator-এর জন্য P/G/Trn/Inf; বেশিরভাগ সময় অলস থাকলে T বা flex।

  3. processor আর generation বাছো

    তোমার Region-এ পাওয়া যায় এমন সবচেয়ে নতুন generation নাও: একই কাজ সাধারণত দ্রুত আর সস্তায় হয়। তোমার software Arm-এ চললে Graviton চেষ্টা করে দেখো।

  4. যেটায় কাজ চলে এমন সবচেয়ে ছোট size নাও, তারপর মেপে দেখো

    ছোট দিয়ে শুরু করো, CloudWatch-এ CPU আর memory-র দিকে নজর রাখো, তারপর size বদলাও। AWS Compute Optimizer আসল ব্যবহার দেখে ঠিক মাপের type সুপারিশ করে।

  5. বড় একটা, নাকি অনেকগুলো?

    একটা বড় instance (scaling up, vertical)-এর একটা সীমা আছে, আর সেটা একাই ভেঙে পড়ার জায়গা। load balancer-এর পেছনে অনেকগুলো instance (scaling out, horizontal) থাকলে একটা গেলেও বাকিরা চালিয়ে নেয়। production design scale out করে।

EBS-backed instance-এর size বদলাতে হলে stop করো, instance type বদলাও, তারপর start করো। নতুন type-কে মানানসই হতে হবে: একই architecture (x86 ↔ x86, Arm ↔ Arm), আর AMI-তে নতুন Nitro type-এর network ও storage driver থাকতে হবে। তাই size বদলাতে সবসময় একটু downtime লাগে; downtime ছাড়া বদলাতে চাইলে নতুন instance যোগ করে পুরোনোগুলো সরিয়ে দিতে হয়।

#প্রথম instance launch করা

console-এর Launch an instance পেজটা ওপর থেকে নিচে একটাই form:

  1. নাম আর tag

    instance-এর একটা নাম দাও (এটা Name tag হিসেবে জমা থাকে), সাথে চাইলে আরও tag, যেমন env=dev।

  2. application আর OS image (AMI)

    একটা operating system বাছো, যেমন Amazon Linux 2023, Ubuntu বা Windows Server, সাথে architecture: 64-bit (x86) নাকি 64-bit (Arm)। এখানে যে architecture বাছবে, পরের ধাপে সেই অনুযায়ীই instance type বাছতে পারবে।

  3. instance type

    t3.micro-র মতো একটা type বাছো। Free Tier-এ কোনগুলো চলবে, console দাগ দিয়ে দেখায়: ১৫ জুলাই ২০২৫-এর আগে খোলা account-এ t2.micro আর t3.micro; তার পরে খোলা account-এ t3.micro, t3.small, t4g.micro, t4g.small, c7i-flex.large আর m7i-flex.large, যেখানে Free Tier চলে ছয় মাস, credit দিয়ে।

  4. key pair (login)

    SSH (Linux)-এর জন্য, বা Windows-এর password খোলার জন্য একটা key pair বানাও বা বেছে নাও। key pair, Instance Connect আর একদম key ছাড়া Session Manager, সব লেসন ৪.২-এ।

  5. network setting

    VPC আর subnet বাছো (subnet-ই ঠিক করে দেয় কোন Availability Zone), public IP নিজে থেকে দেবে কি না ঠিক করো, আর security group: নতুন বানাও, নয়তো আগেরগুলো থেকে বেছে নাও।

  6. storage ঠিক করা

    root EBS volume-এর size আর type ঠিক করো (default gp3), দরকার হলে আরও volume যোগ করো।

  7. advanced details

    ঐচ্ছিক setting: IAM instance profile (role), user data (প্রথম boot-এর script), termination আর stop protection, shutdown behaviour, কেনার ধরন (On-Demand, Spot), instance metadata-র setting, আর T instance-এর credit mode।

  8. summary দেখে launch

    কয়টা instance চালু করবে ঠিক করে Launch instance চাপো। instance-টা তালিকায় দেখা দেবে pending অবস্থায়।

#instance-এর জীবনচক্র

একটা instance হাতে গোনা কয়েকটা অবস্থার মধ্য দিয়ে যায়:

অবস্থা (state)তখন কী হচ্ছেcompute-এর বিল?
pendingAWS একটা host বাছছে, volume আর network জুড়ছে, AMI থেকে boot করছেনা
runningব্যবহারের জন্য তৈরিহ্যাঁ
stoppingstop হওয়ার আগে বন্ধ হচ্ছেনা (hibernate করলে হ্যাঁ)
stoppedবন্ধ। আবার start করা যায়, type-ও বদলানো যায়না, কিন্তু EBS volume আর public IPv4 address (Elastic IP সহ)-এর খরচ চলতেই থাকে
shutting-downterminate হওয়ার প্রস্তুতিনা
terminatedচিরতরে মুছে গেছে। কিছুক্ষণ তালিকায় দেখা যায়, তারপর হারিয়ে যায়না

reboot আলাদা কোনো অবস্থা না: instance একই host-এ running থাকে, ঠিক তোমার কম্পিউটার restart করার মতো।

কোন কাজে কী থাকে আর কী হারায়:

rebootstop, তারপর startterminate
hostএকই hostসাধারণত নতুন hostশেষ
private IPথাকেথাকেছেড়ে দেয়
auto-assigned public IPv4থাকেছেড়ে দেয়; start করলে নতুন একটা পায়ছেড়ে দেয়
Elastic IPথাকেযুক্তই থাকে (আর বন্ধ থাকার সময়ও বিল ওঠে)খুলে যায়, কিন্তু তোমার account-এ থেকে যায়, release না করা পর্যন্ত বিল চলে
EBS root volumeথাকেথাকেdefault হিসেবে মুছে যায় (Delete on termination = চালু)
অন্য EBS volumeথাকেথাকেdefault হিসেবে থেকে যায় (Delete on termination = বন্ধ)
instance store-এর dataথাকেহারায়হারায়
RAM-এর ভেতরের সবকিছুহারায় (operating system আবার চালু হয়)হারায় (hibernate না করলে, লেসন ৪.৫)হারায়
বিলচলতেই থাকেবন্ধ থাকার সময় compute-এর বিল বন্ধ। Linux-এ সেকেন্ড হিসেবে বিল, তবে প্রতিবার start করলে কমপক্ষে ৬০ সেকেন্ডথেমে যায়

একটা instance-এর জীবনচক্র

launch, reboot, stop আর start, terminate: প্রতিটা কাজে কী থেকে যায় আর কী হারায়, খেয়াল করো।

পরিস্থিতি

Availability Zoneus-east-1a
Host A
Host B
তুমিconsole / CLI
Instancet3.micropending
Instance storeHost A-তে
EBS root8 GiB
EBS data volumeপরে যুক্ত করা
run-instances

Instance i-0a1b2c3d

কীএখন
statepending
hostA
private IP10.0.1.25
public IP—
instance storeখালি
বিলcompute বন্ধ
ধাপ 1 / 3
1

তুমি instance launch করলে। pending অবস্থায় EC2 একটা host বেছে নেয়, AMI থেকে root volume বানায়, network জুড়ে দেয়। এখনো বিল শুরু হয়নি।

যে setting-গুলো তোমাকে ভুল থেকে বাঁচায়:

  • termination protection চালু থাকলে console, CLI আর API থেকে terminate করা যায় না। তবে এটা Auto Scaling-কে instance terminate করা থেকে আটকায় না (সেজন্য scale-in protection লাগে), আর shutdown behaviour terminate রাখা থাকলে operating system নিজে বন্ধ হলেও এটা কাজ করে না।
  • stop protection একই কাজ করে stop-এর জন্য।
  • shutdown behaviour ঠিক করে, instance-এর ভেতর থেকে shutdown করলে (sudo shutdown -h now) কী হবে: stop (default) নাকি terminate।
  • যে instance-এর root volume নিজেই একটা instance store (শুধু কিছু পুরোনো AMI-তে), সেটা stop করা যায় না: শুধু reboot বা terminate করা যায়।

#কোথায় কী গোলমাল হয়

লক্ষণকারণসমাধান
launch-এ InsufficientInstanceCapacity errorঠিক এই মুহূর্তে ওই Availability Zone-এ ওই type-এর বাড়তি capacity AWS-এর কাছেই নেইঅন্য Availability Zone বা কাছাকাছি কোনো type চেষ্টা করো, একটু পরে আবার চেষ্টা করো, নয়তো আগেভাগে On-Demand Capacity Reservation দিয়ে জায়গা রেখে দাও (লেসন ৪.৪)
launch-এ VcpuLimitExceeded errorএই Region-এ ওই family-গুলোর জন্য তোমার account-এর চালু vCPU-র quota শেষService Quotas-এ quota বাড়ানোর আবেদন করো, নয়তো অদরকারি instance বন্ধ করো
বেছে নেওয়া Availability Zone-এ type-টা নেইসব type সব Availability Zone বা Region-এ থাকে না, বিশেষ করে নতুন বা বিশেষ কাজের typedescribe-instance-type-offerings দিয়ে দেখে নাও, তারপর অন্য subnet বা type বাছো
AMI বাছার পর type বাছা যাচ্ছে না, বা instance চালু হচ্ছে নাAMI-র architecture মিলছে না (Graviton-এ x86 AMI, বা উল্টোটা)ওই architecture-এর জন্য বানানো AMI নাও
instance pending থেকে সোজা terminatedকোনো EBS volume বানানো বা জোড়া যায়নি: এমন encrypted volume, যার encryption key ব্যবহারের অনুমতি তোমার নেই, volume-এর quota শেষ, বা snapshot নষ্টdescribe-instances-এ state reason পড়ো, key-এর অনুমতি বা quota ঠিক করো
ব্যস্ত সময়ের পরে T instance ধীর, CPU ঠিক baseline-এ সমানstandard mode-এ CPU credit শেষunlimited mode, নয়তো fixed-performance type
maintenance-এর পরে public IP বদলে গেছেinstance stop করে start করা হয়েছিলElastic IP ব্যবহার করো, আরও ভালো হয় load balancer বা DNS নাম

#system design-এ এর ব্যবহার

প্রশ্নে যা চাওয়া হয়েছেবেছে নাও
operating system-এর ওপর পুরো নিয়ন্ত্রণ, দীর্ঘক্ষণ চলা processEC2
ভারসাম্যপূর্ণ web বা application server, bottleneck অজানাgeneral purpose M
ছোট site বা dev box, বেশিরভাগ সময় অলস, মাঝে মাঝে চাপburstable T (বা flex)
batch job, video encoding, game server, ভিড়-ভাট্টার web servercompute optimised C
in-memory cache বা database, Apache Spark, বড় heapmemory optimised R / X (সবচেয়ে বড়: U)
local NVMe-তে খুব দ্রুত random disk access, নিজেই replicate করা NoSQLstorage optimised I
বিশাল sequential local disk, data warehouse, Hadoopstorage optimised D / H
machine learning model train করাP (GPU) বা Trn (Trainium)
machine learning inference, graphics rendering, video streamingG বা Inf
নিজের বানানো hardware logicF (FPGA)
অনেক node জুড়ে ঘনিষ্ঠভাবে চলা simulationHpc (cluster placement group-এর সাথে, লেসন ৪.৫)
Arm-এ চলা software-এর খরচ কমানোGraviton (g) type
physical core গুনে license নেওয়া softwareকম কিন্তু দ্রুত core (z, অথবা CPU option-এ চালু core কমানো) আর Dedicated Host (লেসন ৪.৪)

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

# m7g.2xlarge আসলে কী? vCPU, memory, architecture, network
aws ec2 describe-instance-types --instance-types m7g.2xlarge \
  --query "InstanceTypes[].{Type:InstanceType,vCPU:VCpuInfo.DefaultVCpus,MemMiB:MemoryInfo.SizeInMiB,Arch:ProcessorInfo.SupportedArchitectures,Net:NetworkInfo.NetworkPerformance}" \
  --output table

# local instance store-ওয়ালা সব এখনকার generation-এর Graviton type
aws ec2 describe-instance-types \
  --filters Name=processor-info.supported-architecture,Values=arm64 \
            Name=current-generation,Values=true \
            Name=instance-storage-supported,Values=true \
  --query "InstanceTypes[].InstanceType" --output text

# এই Region-এর সব burstable type
aws ec2 describe-instance-types --filters Name=burstable-performance-supported,Values=true \
  --query "sort(InstanceTypes[].InstanceType)" --output text

# c7gn.xlarge কোন কোন Availability Zone-এ পাওয়া যায়?
aws ec2 describe-instance-type-offerings --location-type availability-zone \
  --filters Name=instance-type,Values=c7gn.xlarge --output table

# Arm-এর জন্য সবচেয়ে নতুন Amazon Linux 2023 AMI, তারপর standard credit mode-এ একটা t4g.micro launch
AMI=$(aws ssm get-parameter --name /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64 \
  --query Parameter.Value --output text)
ID=$(aws ec2 run-instances --image-id $AMI --instance-type t4g.micro \
  --credit-specification CpuCredits=standard \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=first-instance}]' \
  --query "Instances[0].InstanceId" --output text)

# state দেখো, তারপর terminate থেকে সুরক্ষা দাও
aws ec2 describe-instances --instance-ids $ID --query "Reservations[].Instances[].State.Name"
aws ec2 modify-instance-attribute --instance-id $ID --disable-api-termination

# unlimited mode-এ বদলাও, তারপর size বদলাও: stop, type বদল, start
aws ec2 modify-instance-credit-specification \
  --instance-credit-specifications "InstanceId=$ID,CpuCredits=unlimited"
aws ec2 stop-instances --instance-ids $ID && aws ec2 wait instance-stopped --instance-ids $ID
aws ec2 modify-instance-attribute --instance-id $ID --instance-type "{\"Value\": \"t4g.small\"}"
aws ec2 start-instances --instance-ids $ID

# গুছিয়ে ফেলো: সুরক্ষা তুলে দাও, তারপর terminate
aws ec2 modify-instance-attribute --instance-id $ID --no-disable-api-termination
aws ec2 terminate-instances --instance-ids $ID

#সারসংক্ষেপ

মনে রাখার কথা

  • EC2 virtual server ভাড়া দেয় (IaaS): vCPU, memory, storage, network আর একটা AMI তুমি বাছো, আর operating system থেকে ওপরের সবকিছু তুমি সামলাও।
  • vCPU: Intel আর পুরোনো AMD-তে একটা hyperthread; Graviton আর 7a থেকে AMD-তে একটা পুরো core। memory মাপা হয় GiB-তে।
  • EBS হলো network storage, stop করলেও থাকে; instance store দ্রুত local disk, stop, terminate বা host নষ্ট হলে data হারায়।
  • ছয়টা category: general purpose (M, T), compute (C), memory (R, X, U), storage (I, D, H), accelerated (P, G, Trn, Inf, F), HPC (Hpc)। machine learning training মানে P বা Trn, C না।
  • নাম = series + generation + option . size: m7g.2xlarge মানে general purpose, ৭ম generation, Graviton, ৮টা vCPU। option: g Graviton, i Intel, a AMD, d instance store, n network, e বাড়তি, z উঁচু clock। প্রতিটা size-এর ধাপে দ্বিগুণ।
  • Graviton একই কাজ সস্তায় করে, কিন্তু লাগে arm64 software আর Arm AMI; Windows চলে না; x86 থেকে stop করে type বদলে Graviton-এ যাওয়া যায় না।
  • T instance: ১ credit = ১টা vCPU ১ মিনিট ১০০%-এ; ঘণ্টায় জমে vCPU × baseline × ৬০; সর্বোচ্চ ২৪ ঘণ্টারটা জমে। standard mode baseline-এ আটকে দেয়; unlimited burst চালিয়ে যায়, টাকা কাটে শুধু ২৪ ঘণ্টার গড় baseline ছাড়ালে। t3/t4g-এর default unlimited।
  • জীবনচক্র: pending → running → stopping → stopped → (start) → running, অথবা shutting-down → terminated। compute-এর বিল শুধু running থাকার সময়। stop/start: নতুন host, নতুন public IPv4, instance store খালি; private IP আর EBS থাকে। terminate করলে default হিসেবে root volume মুছে যায়।
  • size বদল = stop, type বদল, start, একই architecture-এর মধ্যে।