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 processor | instance type |
| memory (RAM) | কত GiB | instance type |
| storage | network দিয়ে যুক্ত EBS volume (বা network file system), কিংবা host-এর ভেতরের instance store disk | EBS: launch-এর সময় বাছো, পরেও যোগ করা যায়। instance store: শুধু কিছু type-এ থাকে |
| network | bandwidth, একটা subnet-এ একটা network interface, private IP, চাইলে public IP | bandwidth আসে instance type থেকে; বাকিটা network setting থেকে |
| operating system আর software | Linux, 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 দিয়ে এসে যুক্ত হয়।
পরিস্থিতি
m7gd.large type মানে Host A-তে শুধু তোমার জন্য 2টা vCPU আর 8 GiB memory আলাদা করে রাখা। তোমার instance চুপচাপ বসে থাকলেও অন্য কেউ এগুলো ব্যবহার করতে পারবে না।
#instance family
AWS-এ শত শত instance type আছে। এগুলো ছয়টা category-তে ভাগ করা, প্রতিটা এক এক ধরনের কাজের জন্য বানানো। একটা category-র ভেতরে type-এর নামের প্রথম অক্ষরটা হলো series (অনেকে একে family-ও বলে)।
| category | series | কীসের জন্য বানানো | সাধারণ কাজ | প্রতি vCPU-তে memory (এখনকার series) |
|---|---|---|---|---|
| General purpose | M, T (burstable), Mac | compute, memory আর network-এর ভারসাম্য | web আর application server, ছোট-মাঝারি database, code repository, development আর test | M: 4 GiB। T: একেকটায় একেক রকম |
| Compute optimised | C | দ্রুত processor, প্রতি GiB-তে বেশি vCPU | batch processing, media transcoding, high-performance web server, scientific modelling, dedicated game server, CPU দিয়ে চলা machine learning inference | 2 GiB |
| Memory optimised | R, X, U (high memory), z1d | RAM-এ রাখা বিশাল data | in-memory cache (Redis, Memcached), in-memory analytics (Apache Spark), বড় relational আর NoSQL database, big data-র real-time processing | R: 8 GiB। X: 16–32 GiB। U: এক instance-এ 32 TiB পর্যন্ত |
| Storage optimised | I, 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 computing | P, G, Trn, Inf, F | GPU, AWS-এর machine learning chip বা FPGA | P / Trn: machine learning model train করা। G / Inf: inference, graphics আর video। F: নিজের বানানো hardware logic | একেকটায় একেক রকম |
| HPC optimised | Hpc | অনেকগুলো 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।
Itype-এ NVMe SSD থাকে, random read/write খুব দ্রুত আর latency খুব কম।DআরHtype-এ বড় 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।
Hpctype বানানো হয়েছে বিশাল simulation-এর জন্য, যেখানে শত শত node সারাক্ষণ নিজেদের মধ্যে data চালাচালি করে। node-গুলোর মধ্যে খুব দ্রুত network থাকে, আর সব Region-এ পাওয়া যায় না। এমন cluster-এর placement group নিয়ে কথা হবে লেসন ৪.৫-এ।
#instance type-এর নাম পড়া
প্রতিটা instance type-এর নামের গড়ন একই: series, generation, option, একটা dot, তারপর size।
| অংশ | m7g.2xlarge-এ | মানে |
|---|---|---|
| series | m | general purpose |
| generation | 7 | সপ্তম generation। সংখ্যা যত বড়, তত নতুন; একই কাজ সাধারণত দ্রুত আর কম খরচে হয় |
| option | g | processor আর বাড়তি সুবিধা (একটাও না থাকতে পারে, আবার কয়েকটা অক্ষরও থাকতে পারে) |
| size | 2xlarge | নিজের family-র মধ্যে instance-টা কত বড় |
যে option অক্ষরগুলো জানতেই হবে:
| অক্ষর | মানে | উদাহরণ |
|---|---|---|
g | AWS Graviton processor (Arm) | m7g, c8g |
i | Intel processor | m7i, c7i |
a | AMD processor | m7a, c7a |
d | সাথে local NVMe instance store আছে | m7gd, c6id |
n | বেশি network (আর EBS) bandwidth | c7gn, m6in |
b | বেশি EBS (block storage) performance | r5b |
e | বাড়তি memory, বাড়তি storage বা বাড়তি GPU memory, category অনুযায়ী | x2iedn, i3en |
z | উঁচু processor clock speed | m5zn, r7iz |
flex | flex instance, একটু সস্তা সংস্করণ (hyphen দিয়ে লেখা) | m7i-flex, c7i-flex |
দুটো খটকা: পুরোনো a1 type-এ a ছিল series, আর তার মানেও ছিল Graviton। আর u high-memory type-গুলোর নামেই memory লেখা থাকে, যেমন u7i-12tb।
size দ্বিগুণ হতে থাকে। একই family-তে প্রতিটা ধাপে vCPU, memory আর দাম, তিনটাই দ্বিগুণ:
| size | m7g vCPU | m7g memory |
|---|---|---|
| medium | 1 | 4 GiB |
| large | 2 | 8 GiB |
| xlarge | 4 | 16 GiB |
| 2xlarge | 8 | 32 GiB |
| 4xlarge | 16 | 64 GiB |
| 8xlarge | 32 | 128 GiB |
| 16xlarge | 64 | 256 GiB |
| metal | 64 | 256 GiB, কোনো hypervisor নেই: পুরো host-টাই তোমার |
কিছু family-তে আরও ছোট size আছে (T-তে nano, micro, small)। metal দেয় পুরো physical server, কোনো virtualization ছাড়া; যে software-এর সরাসরি hardware লাগে বা নিজের hypervisor চালাতে চায়, তার জন্য।
একই size, আলাদা family। প্রতিটা category-র প্রতি vCPU-তে memory-র অনুপাত আলাদা, তাই একই size-এর শব্দ মানে আলাদা মেশিন:
| type | vCPU | memory |
|---|---|---|
c7g.2xlarge | 8 | 16 GiB |
m7g.2xlarge | 8 | 32 GiB |
r7g.2xlarge | 8 | 64 GiB |
সংখ্যাগুলো কীভাবে মেলে, কয়েকটা আসল উদাহরণে দেখো (এখনকার আসল সংখ্যা “নিজে করে দেখো” অংশের command দিয়ে মিলিয়ে নিও):
| type | vCPU | memory | local storage | network |
|---|---|---|---|---|
t3.micro | 2 | 1 GiB | EBS-only | up to 5 Gbps |
c7i.4xlarge | 16 | 32 GiB | EBS-only | up to 12.5 Gbps |
r7g.4xlarge | 16 | 128 GiB | EBS-only | up to 15 Gbps |
i4i.2xlarge | 8 | 64 GiB | 1 × 1,875 GB NVMe SSD | up to 12 Gbps |
c7gn.16xlarge | 64 | 128 GiB | EBS-only | 200 Gbps |
instance type-এর নাম পড়া
প্রতিটা নাম হলো series + generation + options, তারপর একটা dot, তারপর size। এক টুকরো এক টুকরো করে খুলে দেখো।
পরিস্থিতি
পুরো নামটা দিয়ে শুরু করো। 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 |
| architecture | Arm 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 |
| generation | Graviton2 (6g), Graviton3 (7g), Graviton4 (8g), Graviton5 (9g) | 5, 6i, 7i, 8i | 5a, 6a, 7a, 8a |
| কী চালায় | Linux। Windows না | Linux আর Windows | Linux আর 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 ফেলে দেওয়া হয়।
| type | vCPU | প্রতি vCPU-তে baseline | ঘণ্টায় জমে | সর্বোচ্চ জমানো যায় |
|---|---|---|---|---|
t2.micro | 1 | 10% | 6 | 144 |
t3.nano | 2 | 5% | 6 | 144 |
t3.micro / t4g.micro | 2 | 10% | 12 | 288 |
t3.small | 2 | 20% | 24 | 576 |
t3.large | 2 | 30% | 36 | 864 |
t3.xlarge | 4 | 40% | 96 | 2,304 |
জমার হার baseline থেকেই বের হয়: ঘণ্টায় credit = vCPU × baseline × ৬০। t3.micro-র জন্য: ২ × ১০% × ৬০ = ঘণ্টায় ১২টা credit।
একটা হিসাব করে দেখি। একটা t3.micro-র balance পুরো ভরা, ২৮৮টা credit। হঠাৎ এর দুটো vCPU-ই ৫০%-এ চলতে শুরু করল। এখন ঘণ্টায় খরচ ২ × ৫০% × ৬০ = ৬০টা credit, আর জমছে ১২টা। তাই balance কমছে ঘণ্টায় ৪৮টা করে: ২৮৮ ÷ ৪৮ = ৬ ঘণ্টা burst করার পর balance খালি।
balance খালি হলে কী হবে, তা নির্ভর করে credit mode-এর ওপর:
| standard mode | unlimited mode | |
|---|---|---|
| credit শেষ হলে | CPU baseline-এ নামিয়ে আটকে দেওয়া হয়, যতক্ষণ না আবার জমে | burst চালিয়ে যায়, খরচ করে surplus credit |
| বাড়তি খরচ | কখনো না | চলমান ২৪ ঘণ্টার গড় baseline-এর সমান বা নিচে থাকলে কিছুই না (পরের চুপচাপ সময়ে surplus শোধ হয়ে যায়)। গড় তার ওপরে গেলে vCPU-hour প্রতি একটা নির্দিষ্ট বাড়তি দাম |
| কার default | t2 | t3, t3a, t4g, t8i |
পরীক্ষায় যা জিজ্ঞেস করতে ভালোবাসে:
- standard mode-এ
t2instance শুরুতে কিছু launch credit পায়, যাতে দ্রুত চালু হতে পারে, আর stop করলে জমানো সব credit হারায়।t3,t3a,t4gআরt8istop করার পরও ৭ দিন পর্যন্ত জমানো credit ধরে রাখে। - mode যেকোনো সময় বদলানো যায়, instance চলুক বা বন্ধ থাকুক।
- CloudWatch-এ credit balance (
CPUCreditBalance) দেখা যায়, আর unlimited mode-এ কত surplus খরচ হলো (CPUSurplusCreditBalance) তা-ও। balance যদি বারবার শূন্যে নেমে যায়, সেটাই বিপদের সংকেত। - যে T instance সারাদিন baseline-এর অনেক ওপরে চলে, তার জন্য কোনো mode-ই ঠিক না: standard mode-এ সে ধীর, unlimited mode-এ বাড়তি টাকা গোনে, শেষমেশ একটা
minstance-এর চেয়েও বেশি খরচ পড়তে পারে। তাকে একটা fixed-performance type-এ (M বা C) সরিয়ে দাও।
একটা t3.micro-র CPU credit খরচ আর জমা
baseline প্রতি vCPU-তে 10%, vCPU 2টা: ঘণ্টায় 12টা credit জমে, সর্বোচ্চ 288টা জমিয়ে রাখা যায়। ১টা credit মানে ১টা vCPU ১ মিনিট 100%-এ চলা।
পরিস্থিতি
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 বাছবে কীভাবে
bottleneck খুঁজে বের করো
কাজটা কোথায় আটকায়: processor, memory, local disk-এর গতি, network, নাকি GPU? চালু কোনো system থাকলে মেপে দেখো, নইলে software-এর documentation দেখে আন্দাজ করো।
category বাছো
সব কিছু ভারসাম্যে বা এখনো জানা নেই হলে general purpose; processor-এর জন্য C; memory-র জন্য R/X; local disk-এর জন্য I/D; accelerator-এর জন্য P/G/Trn/Inf; বেশিরভাগ সময় অলস থাকলে T বা flex।
processor আর generation বাছো
তোমার Region-এ পাওয়া যায় এমন সবচেয়ে নতুন generation নাও: একই কাজ সাধারণত দ্রুত আর সস্তায় হয়। তোমার software Arm-এ চললে Graviton চেষ্টা করে দেখো।
যেটায় কাজ চলে এমন সবচেয়ে ছোট size নাও, তারপর মেপে দেখো
ছোট দিয়ে শুরু করো, CloudWatch-এ CPU আর memory-র দিকে নজর রাখো, তারপর size বদলাও। AWS Compute Optimizer আসল ব্যবহার দেখে ঠিক মাপের type সুপারিশ করে।
বড় একটা, নাকি অনেকগুলো?
একটা বড় 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:
নাম আর tag
instance-এর একটা নাম দাও (এটা
Nametag হিসেবে জমা থাকে), সাথে চাইলে আরও tag, যেমনenv=dev।application আর OS image (AMI)
একটা operating system বাছো, যেমন Amazon Linux 2023, Ubuntu বা Windows Server, সাথে architecture: 64-bit (x86) নাকি 64-bit (Arm)। এখানে যে architecture বাছবে, পরের ধাপে সেই অনুযায়ীই instance type বাছতে পারবে।
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 দিয়ে।key pair (login)
SSH (Linux)-এর জন্য, বা Windows-এর password খোলার জন্য একটা key pair বানাও বা বেছে নাও। key pair, Instance Connect আর একদম key ছাড়া Session Manager, সব লেসন ৪.২-এ।
network setting
VPC আর subnet বাছো (subnet-ই ঠিক করে দেয় কোন Availability Zone), public IP নিজে থেকে দেবে কি না ঠিক করো, আর security group: নতুন বানাও, নয়তো আগেরগুলো থেকে বেছে নাও।
storage ঠিক করা
root EBS volume-এর size আর type ঠিক করো (default gp3), দরকার হলে আরও volume যোগ করো।
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।
summary দেখে launch
কয়টা instance চালু করবে ঠিক করে Launch instance চাপো। instance-টা তালিকায় দেখা দেবে
pendingঅবস্থায়।
#instance-এর জীবনচক্র
একটা instance হাতে গোনা কয়েকটা অবস্থার মধ্য দিয়ে যায়:
| অবস্থা (state) | তখন কী হচ্ছে | compute-এর বিল? |
|---|---|---|
pending | AWS একটা host বাছছে, volume আর network জুড়ছে, AMI থেকে boot করছে | না |
running | ব্যবহারের জন্য তৈরি | হ্যাঁ |
stopping | stop হওয়ার আগে বন্ধ হচ্ছে | না (hibernate করলে হ্যাঁ) |
stopped | বন্ধ। আবার start করা যায়, type-ও বদলানো যায় | না, কিন্তু EBS volume আর public IPv4 address (Elastic IP সহ)-এর খরচ চলতেই থাকে |
shutting-down | terminate হওয়ার প্রস্তুতি | না |
terminated | চিরতরে মুছে গেছে। কিছুক্ষণ তালিকায় দেখা যায়, তারপর হারিয়ে যায় | না |
reboot আলাদা কোনো অবস্থা না: instance একই host-এ running থাকে, ঠিক তোমার কম্পিউটার restart করার মতো।
কোন কাজে কী থাকে আর কী হারায়:
| reboot | stop, তারপর start | terminate | |
|---|---|---|---|
| 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: প্রতিটা কাজে কী থেকে যায় আর কী হারায়, খেয়াল করো।
পরিস্থিতি
Instance i-0a1b2c3d
| কী | এখন |
|---|---|
| state | pending |
| host | A |
| private IP | 10.0.1.25 |
| public IP | — |
| instance store | খালি |
| বিল | compute বন্ধ |
তুমি 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-এ থাকে না, বিশেষ করে নতুন বা বিশেষ কাজের type | describe-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-এর ওপর পুরো নিয়ন্ত্রণ, দীর্ঘক্ষণ চলা process | EC2 |
| ভারসাম্যপূর্ণ web বা application server, bottleneck অজানা | general purpose M |
| ছোট site বা dev box, বেশিরভাগ সময় অলস, মাঝে মাঝে চাপ | burstable T (বা flex) |
| batch job, video encoding, game server, ভিড়-ভাট্টার web server | compute optimised C |
| in-memory cache বা database, Apache Spark, বড় heap | memory optimised R / X (সবচেয়ে বড়: U) |
| local NVMe-তে খুব দ্রুত random disk access, নিজেই replicate করা NoSQL | storage optimised I |
| বিশাল sequential local disk, data warehouse, Hadoop | storage optimised D / H |
| machine learning model train করা | P (GPU) বা Trn (Trainium) |
| machine learning inference, graphics rendering, video streaming | G বা Inf |
| নিজের বানানো hardware logic | F (FPGA) |
| অনেক node জুড়ে ঘনিষ্ঠভাবে চলা simulation | Hpc (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:gGraviton,iIntel,aAMD,dinstance store,nnetwork,eবাড়তি,zউঁচু clock। প্রতিটা size-এর ধাপে দ্বিগুণ। - Graviton একই কাজ সস্তায় করে, কিন্তু লাগে
arm64software আর 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-এর মধ্যে।
আগে নিজে উত্তর দাও, তারপর ব্যাখ্যাটা পড়ো। ঠিক হলেও পড়ো, কারণ ভুল Option-গুলো কেন ভুল, সেটাও ওখানে আছে।
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানির এমন server দরকার, যেখানে নিজেদের একটা kernel module বসানো যাবে, একটা process সপ্তাহের পর সপ্তাহ চলবে, আর দরকারমতো দ্রুত capacity বাড়ানো-কমানো যাবে। কোন AWS service মানায়?
নিজেকে যাচাই করোপ্রশ্ন
m7g.2xlarge instance type-এ g অক্ষরটার মানে কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা টিম ৪০০ GiB-এর একটা in-memory cache চালায়, যেটার পুরোটা RAM-এই থাকতে হবে। কোন instance type সবচেয়ে মানানসই?
নিজেকে যাচাই করোপ্রশ্ন
একটা research টিম কয়েক সপ্তাহ ধরে একটা বড় deep learning model train করবে। solutions architect কোন instance family-র কথা বলবেন?
নিজেকে যাচাই করোপ্রশ্ন
vCPU নিয়ে কোন দুটো কথা সত্যি?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা t3.micro-তে 2টা vCPU, baseline প্রতি vCPU-তে 10%। ঘণ্টায় কয়টা CPU credit জমে?
নিজেকে যাচাই করোপ্রশ্ন
পুরো ২৮৮ credit জমানো একটা t3.micro হঠাৎ দুটো vCPU-ই ৫০%-এ চালাতে শুরু করল। মোটামুটি কতক্ষণ এভাবে চলার পর balance খালি হবে?
নিজেকে যাচাই করোপ্রশ্ন
t3.small-এ (baseline ২০%) চলা একটা ছোট website প্রতিদিন সকালে দ্রুত, কিন্তু বিকেলে খুব ধীর। ধীর সময়টায় CloudWatch-এ CPU ঠিক ২০%-এ সমান রেখা হয়ে আছে। instance-টা standard credit mode-এ চলছে। কী হচ্ছে?
নিজেকে যাচাই করোপ্রশ্ন
unlimited mode-এ একটা t3.medium balance খালি হওয়ার পর এক ঘণ্টা ৮০% CPU-তে চলল, তারপর বাকি দিন চুপচাপ। ২৪ ঘণ্টার গড় baseline-এর নিচেই থাকল। এই burst-এর জন্য কত খরচ?
নিজেকে যাচাই করোপ্রশ্ন
কোন দুটো instance type default হিসেবে unlimited credit mode-এ launch হয়?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা application server unlimited mode-এ একটা t3.large-এ দিনরাত ৭০% CPU-তে চলছে, আর বিল আশার চেয়ে বেশি আসছে। architect কী করবেন?
নিজেকে যাচাই করোপ্রশ্ন
dedicated multiplayer game server-এর একটা বহর আর একটা media transcoding pipeline, দুটোর জন্য কোন instance category মানায়?
নিজেকে যাচাই করোপ্রশ্ন
একটা Cassandra cluster প্রতিটা row তিনটা node-এ কপি করে রাখে, আর সবচেয়ে দ্রুত random read/write আর সবচেয়ে কম latency চায়। প্রতিটা node-এর জন্য কোন type?
নিজেকে যাচাই করোপ্রশ্ন
m7gd.xlarge-এর d অক্ষরটা কী বলছে?
নিজেকে যাচাই করোপ্রশ্ন
m7g.large-এ 2টা vCPU আর 8 GiB memory। m7g.4xlarge-এ কত?
নিজেকে যাচাই করোপ্রশ্ন
একটা workload-এর Graviton-এ 8টা vCPU আর প্রায় 60 GiB memory লাগবে। কোন type সবচেয়ে কাছাকাছি?
নিজেকে যাচাই করোপ্রশ্ন
একজন engineer x86 Amazon Linux AMI-তে চলা একটা m7i.large stop করে type বদলে m7g.large করলেন, তারপর start করতে গিয়ে ব্যর্থ হলেন। কেন?
নিজেকে যাচাই করোপ্রশ্ন
খরচ কমাতে একটা কোম্পানি workload-গুলো Graviton-এ সরাতে চায়। কোন দুটো workload সোজাসুজি সরানো যাবে না?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা EC2 instance reboot করা হলো। এরপর কোন কথাটা সত্যি?
নিজেকে যাচাই করোপ্রশ্ন
auto-assigned public IP আর একটা instance store volume-ওয়ালা একটা EBS-backed instance stop করে আবার start করা হলো। কোন দুটো ঘটনা ঘটে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা instance এক মাস ধরে stop করা। কোম্পানি এখনো কীসের জন্য টাকা দিচ্ছে?
নিজেকে যাচাই করোপ্রশ্ন
একটা instance launch হয়েছিল একটা root EBS volume নিয়ে, আর পরে default setting-এ একটা data volume জুড়ে দেওয়া হয়। এখন instance terminate করা হলো। কোন দুটো কথা সত্যি?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা production instance যেন কোনোভাবেই ভুল করে console বা CLI থেকে terminate না হয়। কী চালু করতে হবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা EBS-backed m7i.large-এর আরও memory লাগবে। এটাকে r7i.large-এ বদলানোর ঠিক উপায় কী?
নিজেকে যাচাই করোপ্রশ্ন
us-east-1a-তে দশটা c7i.4xlarge launch করতে গিয়ে এই error এল: ‘We currently do not have sufficient c7i.4xlarge capacity in the Availability Zone you requested.’ সবচেয়ে ঠিক পদক্ষেপ কী?
নিজেকে যাচাই করোপ্রশ্ন
launch-এর সময় এই error এল: ‘You have requested more vCPU capacity than your current vCPU limit allows.’ এর মানে কী?
নিজেকে যাচাই করোপ্রশ্ন
যে instance-এর root device একটা instance store volume, তাতে কোন কাজটা করা সম্ভব না?
নিজেকে যাচাই করোপ্রশ্ন
একটা application অনেকগুলো EC2 instance-এর বহর দিয়ে Apache Spark-এ in-memory big data analysis করছে। বহরটা কোন instance family-র হওয়া উচিত?
নিজেকে যাচাই করোপ্রশ্ন
২০০টা node জুড়ে চলা একটা আবহাওয়ার simulation-এ node-গুলো সারাক্ষণ data আদান-প্রদান করে, আর node থেকে node-এ সবচেয়ে দ্রুত network লাগে। কোন instance category এর জন্যই বানানো?
নিজেকে যাচাই করোপ্রশ্ন
নিচের কোনটা EC2-র কোনো instance category নয় (NOT)?
নিজেকে যাচাই করোপ্রশ্ন
T instance-এর তুলনায় m7i-flex.large-এর মতো flex instance কী দেয়?
নিজেকে যাচাই করোপ্রশ্ন
standard mode-এ চলা একটা t2.micro ১৪০টা credit জমিয়েছে। শুক্রবার stop করে সোমবার start করা হলো। start-এর পর তার জমানো credit কত?