VPS, VM ও VPC কী? তিনটির পার্থক্য সহজভাবে
VM হলো প্রযুক্তি, VPS হলো VM বা container-ভিত্তিক ভাড়া server, আর VPC হলো private cloud network। প্রতিটি শব্দের অর্থ ও ব্যবহারের পার্থক্য জানুন।
VPS, VM এবং VPC এক অনুচ্ছেদে
VM (virtual machine) হলো সফটওয়্যার দিয়ে তৈরি একটি কম্পিউটার: hypervisor একটি physical server-কে কয়েকটি স্বাধীন machine-এ ভাগ করে, এবং প্রতিটি machine নিজের kernel চালায়। VPS (virtual private server) হলো product হিসেবে ভাড়া দেওয়া একটি server, যার সঙ্গে operating system, সাধারণত root access এবং মাসিক মূল্য থাকে। অধিকাংশ VPS plan virtual machine হলেও কিছু host একই নামে এমন container বিক্রি করে, যেগুলো host kernel ভাগ করে ব্যবহার করে। VPC (virtual private cloud) কোনো server নয়। এটি cloud account-এর ভেতরে আপনার সংজ্ঞায়িত একটি private network, এবং আপনি এর মধ্যে resource রাখেন। VM হলো প্রচলিত technology। VPS হলো product। VPC হলো product-টিকে ঘিরে থাকা network।
এই তিনটি শব্দের মধ্যে দুটি একটি machine বোঝায়। তৃতীয়টি একটি network বোঝায়। এই অমিল থেকেই প্রায় সব বিভ্রান্তি তৈরি হয়, কারণ মানুষ এগুলোকে একই shelf-এ রাখা তিনটি product হিসেবে তুলনা করে।
একটি VM কী
Hypervisor হলো এমন একটি স্তর, যা hardware হিসেবে আচরণ করে। এটি প্রতিটি guest-কে একটি virtual CPU, নির্দিষ্ট পরিমাণ memory, একটি virtual disk এবং একটি virtual network card দেয়। এরপর এটি guest-গুলোকে পরস্পরের অবস্থা দেখতে বাধা দেয়। Server-এ KVM, Xen, Hyper-V এবং VMware ESXi হলো প্রচলিত hypervisor। আধুনিক hypervisor CPU virtualisation extension (Intel VT-x, AMD-V) ব্যবহার করে। ফলে guest instruction interpret না করে প্রায় native speed-এ বাস্তব CPU-তে চলে।
Sysadmin-এর জন্য গুরুত্বপূর্ণ অংশ হলো kernel। একটি VM নিজের kernel boot করে। তাই আপনি distribution নির্বাচন করতে, kernel module load করতে এবং শুধু নিজের VM-এ প্রযোজ্য sysctl value নির্ধারণ করতে পারেন। এটি container (LXC, Docker) থেকে আলাদা। Container host kernel share করে এবং শুধু process ও file-এর নিজস্ব view পায়।
একটি command দিয়েই যেকোনো Linux box-এ উত্তরটি দেখা যায়।
systemd-detect-virtkvm মানে আপনি একটি KVM hypervisor-এর উপর চলা virtual machine-এ আছেন। lxc অথবা openvz মানে আপনি অন্য কারও kernel-এর উপর চলা একটি container-এ আছেন। none মানে কোনো supported virtualisation শনাক্ত করা যায়নি। Command-টি না থাকলে lscpu | grep -i hypervisor hypervisor-এর তথ্য দেখায়, কিন্তু container শনাক্ত করে না।
VPS কী
একটি VPS হলো একটি বিচ্ছিন্ন server-কে ঘিরে তৈরি বাণিজ্যিক service, যা বেশিরভাগ ক্ষেত্রে একটি VM। এর মূল প্রযুক্তি হলো virtualisation। আর "VPS" শব্দটির সঙ্গে এমন সুবিধাগুলো যুক্ত থাকে, যা service-টিকে বাজারজাতযোগ্য করে: পুনরায় install করা যায় এমন OS image, একটি IP address, নির্ধারিত bandwidth, একটি control panel, মাসিক মূল্য এবং host নষ্ট হলে যোগাযোগ করার জন্য কোনো support ব্যবস্থা। "Private" শব্দটি এটিকে shared hosting থেকে আলাদা করে। Shared hosting-এ শত শত site একই operating system এবং একই PHP configuration ভাগ করে ব্যবহার করে।
VPS একটি product name, technical term নয়। তাই এটি সব সময় পূর্ণাঙ্গ VM বোঝায় না। কিছু budget plan একই নামে container বিক্রি করে। অনেক এমন plan-এর পেছনে থাকা container platform OpenVZ তার container-গুলোকে "also known as virtual private servers" বলে বর্ণনা করে। পার্থক্যটি প্রথমবার kernel প্রয়োজন হলেই বোঝা যায়। Container ভিত্তিক plan-এ kernel হলো host-এর kernel, এবং আপনি এটি পরিবর্তন করতে পারবেন না। sudo modprobe wireguard ব্যর্থ হয় যদি এটি container-এর module directory-তে module খুঁজে না পায়, যদিও host সেটি আগে থেকেই load করে থাকে। কোনো অনুপস্থিত module load করার জন্য host kernel পরিবর্তনের অনুমতিও প্রয়োজন। Host kernel-এ WireGuard support না থাকলে interface (ip link add dev wg0 type wireguard) তৈরি করা RTNETLINK answers: Operation not supported-সহ ব্যর্থ হয়। এরপর wg-quick একটি userspace implementation-এ fallback করে। এটি default হিসেবে wireguard-go ব্যবহার করে, যদি সেটি install করা থাকে। তখন "Missing WireGuard kernel module. Falling back to slow userspace implementation." message প্রদর্শিত হয়। এই fallback-এর জন্যও container-কে TUN device ব্যবহারের অনুমতি দিতে হয়। সব host এই অনুমতি দেয় না। Userspace binary না থাকলে wg-quick error দেখিয়ে থেমে যায়। KVM plan-এ kernel আপনার নিয়ন্ত্রণে থাকে। আপনি WireGuard install করতে পারেন, আগে থেকে load করা না থাকলে module load করতে পারেন, interface configure করতে পারেন এবং tunnel চালু করতে পারেন। আপনি যদি server-এর ভেতরে Docker, VPN, custom kernel বা নিজের virtual machine চালাতে চান, কেনার আগে virtualisation type যাচাই করুন। VPS-এর ভেতরে virtual machine চালাতে host-এ nested virtualisation সক্রিয় থাকা অবস্থায় KVM প্রয়োজন। ফলে উপযুক্ত plan-এর সংখ্যা আরও কমে যায়।
VPC কী
VPC হলো cloud provider-এর ভেতরে থাকা একটি software-defined network। বেশিরভাগ cloud-এ আপনি এটিকে CIDR notation-এ একটি address range দেন, যেমন 10.0.0.0/16, তারপর সেই range থেকে subnet তৈরি করেন (Google Cloud পুরো network-এর জন্য একটি range ব্যবহার করে না; প্রতিটি regional subnet-এর জন্য আলাদা range দেয়)। এর সঙ্গে route table যুক্ত করা যায় এবং এর ভেতরের resource-গুলোর সামনে firewall rule (security group) প্রয়োগ করা যায়। এতে CPU, memory বা disk থাকে না। এখানে login করার মতো কোনো ব্যবস্থা নেই। VPC-এর সব server মুছে ফেললেও VPC খালি অবস্থায় থেকে যায় এবং সাধারণত এর জন্য কোনো খরচ হয় না।
VPC আপনাকে private addressing সুবিধা দেয়। একই VPC-এর দুটি server provider-এর internal fabric-এর মাধ্যমে 10.0.1.15-এর মতো address ব্যবহার করে যোগাযোগ করে। ফলে সেই traffic public internet-এর মধ্য দিয়ে যায় না এবং internet egress হিসেবে বিলও হয় না। তাই database শুধু তার private address-এ listen করতে পারে, আর কোনো port-ই পুরো বিশ্বের জন্য উন্মুক্ত থাকে না।
ip -4 addr show10.0.0.0/8, 172.16.0.0/12 বা 192.168.0.0/16-এর ভেতরের address private। শুধু public address থাকলেই server internet থেকে reachable হয় না; routing এবং firewall rule-ও access অনুমোদন করতে হবে।
VPC কি আমার server-কে private করে?
না। এই তিনটি শব্দ নিয়ে এটিই সবচেয়ে ব্যয়বহুল ভুল ধারণা। VPC routing এবং addressing নিয়ন্ত্রণ করে। Internet কোনো machine-এ পৌঁছাতে পারবে কি না, তা VPC নির্ধারণ করে না। কোনো instance-এর public IP থাকলে, তার subnet-এর route Internet-এ থাকলে এবং security rule-এ 0.0.0.0/0 থেকে port 22 অনুমোদিত থাকলে, সেটি VPC থাকুক বা না থাকুক, অন্য যেকোনো server-এর মতোই exposed থাকে। Default VPC-তে Internet-এর সেই route আগে থেকেই থাকে। VPC থেকে পাওয়া isolation হলো কোনো resource-কে একেবারেই public address না দেওয়ার সুবিধা, এবং কোন subnet কোন subnet-এর সঙ্গে যোগাযোগ করতে পারবে তা নির্ধারণের rules।
এই তিনটি শব্দ ভিন্ন ধরনের isolation বোঝায়। VM compute isolate করে: hypervisor CPU time এবং memory আলাদা রাখে, তাই অন্য guest আপনার RAM পড়তে পারে না। Disk এবং network-এর ক্ষেত্রে এই isolation দুর্বল; একই host-এর ব্যস্ত প্রতিবেশী আপনার service ধীর করে দিতে পারে। Container-based VPS একই kernel share করে, তাই kernel-level bug একটি shared risk। VPC compute সম্পর্কে কোনো isolation দেয় না। এটি শুধু network-এর কাঠামো নিয়ন্ত্রণ করে।
মূল্য নির্ধারণের ধারণা
একটি VPS সাধারণত নির্দিষ্ট মেশিনের জন্য নির্দিষ্ট মাসিক মূল্যে বিক্রি করা হয়। মাস শুরু হওয়ার আগেই আপনি বিলের পরিমাণ জানেন, এবং disk ও transfer allowance ওই মূল্যের মধ্যেই থাকে। এই পূর্বানুমানযোগ্যতাই ছোট workload-এর জন্য অনেকে cloud instance-এর বদলে VPS বেছে নেওয়ার প্রধান কারণ।
একটি cloud VM ব্যবহারের পরিমাণ অনুযায়ী billed হয়। instance-এর জন্য প্রতি ঘণ্টা বা প্রতি সেকেন্ডে বিল হয়, আর disk, snapshots, load balancer এবং outbound traffic-এর জন্য আলাদাভাবে বিল হয়। VPC নিজে সাধারণত বিনামূল্যে, কিন্তু এর সঙ্গে যুক্ত managed উপাদানগুলো বিনামূল্যে নয়: private instance-কে Internet-এ পৌঁছাতে দেওয়া একটি NAT gateway-এর জন্য প্রতি ঘণ্টায় বিল হয়, এবং এর traffic কীভাবে billed হবে তা provider-এর ওপর নির্ভর করে। AWS NAT gateway যে প্রতি gigabyte traffic process করে, তার জন্য অতিরিক্ত charge নেয়। অন্যদিকে, OVHcloud জানায় যে তাদের Public Cloud Gateway-এর জন্য প্রতি ঘণ্টা এবং ব্যবহারের ভিত্তিতে charge হয়, তবে traffic অন্তর্ভুক্ত থাকে। AWS-এ availability zone অতিক্রম করা traffic-এর জন্যও বিল হয়। Azure একই region-এর নিজস্ব zone-গুলোর মধ্যে traffic-এর জন্য charge নেয় না। October 27, 2026 অনুযায়ী, AWS VPC guide বলছে প্রতিটি region-এ আপনার একটি default VPC থাকে। তবে AWS VPC FAQ অনুযায়ী, March 18, 2013-এর আগে তৈরি account-গুলো enabled region-এ default VPC ব্যবহার করতে পারে, যদি সেখানে আগে EC2 instance launch করা বা ELB, RDS, ElastiCache অথবা Redshift resource provision করা না হয়ে থাকে। মুছে ফেলা default VPC পুনরায় তৈরি করা যায়, কিন্তু restore করা যায় না। Google Cloud-এ administrator সেটি বন্ধ না করলে প্রতিটি নতুন project-এ একটি default network তৈরি হয়। Azure-এ existing network বেছে না নিলে নতুন VM-এর সঙ্গে একটি virtual network তৈরি হয়। আপনি এটি চেয়ে থাকুন বা না থাকুন, দুই ক্ষেত্রেই আপনার cloud VM এই network-গুলোর একটির ভিতরে থাকে।
আসলে আপনার কোনটি দরকার
- একটি website, app, game server বা VPN-এর জন্য একটি server: একটি VPS। নতুন VPS-এ প্রথম দশ মিনিট plan-এর label-এর চেয়েও বেশি গুরুত্বপূর্ণ।
- যেসব কয়েকটি server-কে private address ব্যবহার করে একে অন্যের সঙ্গে যোগাযোগ করতে হবে: একটি VPC, অথবা আপনার VPS provider যে private network feature অন্য কোনো নামে দেয়।
- এমন workload, যা একটি সম্পূর্ণ datacentre অচল হয়ে গেলেও চালু থাকতে হবে: একাধিক zone-সহ একটি cloud, যার অর্থ VPC-এর ভিতরে থাকা VM।
- kernel-এর পূর্ণ নিয়ন্ত্রণ, অথবা তার ওপর নিজের hypervisor চালানো: KVM ভিত্তিক VPS (hypervisor চালাতে চাইলে nested virtualisation enabled থাকতে হবে) অথবা একটি dedicated server। তুলনা করার সময় plan-এর পেছনে থাকা disk type-ও পরীক্ষা করুন।
বেশির ভাগ single server project-এর কখনো VPC দরকার হয় না। VPS-এর সঙ্গে থাকা private network feature কয়েকটি machine-এর জন্য একই কাজ করে।
FAQ
VPS কি VM-এর মতো একই জিনিস?
সাধারণত, তবে সবসময় নয়। KVM, Xen বা VMware-এর ওপর তৈরি প্রতিটি VPS একটি virtual machine, কিন্তু প্রতিটি virtual machine VPS নয়, কারণ VirtualBox-এর অধীনে আপনার laptop-এ চলা VM কোনো provider-এর product নয়। আবার প্রতিটি VPS-ও VM নয়: OpenVZ বা LXC-এর ওপর তৈরি plan-গুলো container, যেগুলো host kernel ভাগ করে ব্যবহার করে। OpenVZ নিজেও তার container-গুলোকে virtual private server বলে। Kernel access-এর ওপর নির্ভর করার আগে systemd-detect-virt দিয়ে বিষয়টি নিশ্চিত করুন।
VPS কি VPC-এর ভেতরে রাখা যায়?
সাধারণত যায় না, কারণ VPC একটি cloud provider-এর নিজস্ব construct। তবে AWS একই organization-এর account-গুলোর মধ্যে তার subnet share করাও সমর্থন করে। কোনো independent provider-এর VPS সেই provider-এর network-এ থাকে। দুটির মধ্যে private link প্রয়োজন হলে, তাদের মধ্যে একটি VPN tunnel তৈরি করুন। এরপর VPS ওই tunnel-এর মাধ্যমে private subnet-এ পৌঁছাতে পারবে।
সমতুল্য VPS-এর তুলনায় আমার cloud bill বেশি কেন?
শুধু instance price বিবেচনা করলে হবে না। Metered cloud-এ storage, snapshot, outbound traffic, load balancer এবং NAT gateway আলাদা line item হিসেবে গণনা হয়। শুধু একটি NAT gateway-এর মাসিক খরচই একটি ছোট VPS-এর চেয়ে বেশি হতে পারে। Fixed-price VPS disk এবং নির্দিষ্ট transfer allowance একই দামের মধ্যে অন্তর্ভুক্ত করে। তাই একই workload সেখানে প্রায়ই সস্তা মনে হয়।
আমার server-এ প্রকৃত kernel access আছে কি না কীভাবে পরীক্ষা করব?
systemd-detect-virt চালিয়ে ফলাফল দেখুন। kvm, xen বা vmware (নতুন EC2 instance-এ amazon) দেখালে আপনার নিজস্ব kernel আছে এবং modprobe সেই kernel-এ module load করতে পারে। lxc, lxc-libvirt বা openvz দেখালে আপনি host kernel share করছেন। Module load করার জন্য host kernel privilege প্রয়োজন। তবে host অনুমতি দিলে /proc/sys-এর অধীনে থাকা namespaced setting, যার মধ্যে network setting-ও আছে, পরিবর্তন করা যায়। দ্বিতীয়বার নিশ্চিত হতে uname -r চালান। Container plan-এ এটি প্রায়ই এমন kernel version দেখায়, যেটি আপনার distribution কখনো release করেনি।