VPS, VM ও VPC কী? পার্থক্য ও কোনটি আপনার দরকার
VM হলো প্রযুক্তি, VPS সেই VM ভাড়া দেওয়ার product, আর VPC হলো cloud-এর private network। প্রতিটির অর্থ, পার্থক্য ও আপনার প্রয়োজনীয়টি এখানে জানুন।
VPS, VM এবং VPC এক অনুচ্ছেদে
একটি VM (virtual machine) হলো সফটওয়্যার দিয়ে তৈরি একটি কম্পিউটার। একটি hypervisor একটি physical server-কে কয়েকটি স্বতন্ত্র machine-এ ভাগ করে, এবং প্রতিটি machine নিজের kernel চালায়। একটি VPS (virtual private server) হলো সেই virtual machine-গুলোর একটি, যা আপনাকে একটি product হিসেবে ভাড়া দেওয়া হয়। এতে operating system, root access এবং মাসিক মূল্য থাকে। একটি VPC (virtual private cloud) কোনো server নয়। এটি একটি cloud account-এর ভেতরে নির্ধারণ করা private network, এবং আপনি resource-গুলো এতে যুক্ত করেন। VM হলো technology। VPS হলো product। VPC হলো product-কে ঘিরে থাকা network।
এই শব্দগুলোর দুটি একটি machine বোঝায়। তৃতীয়টি একটি network বোঝায়। এই অমিল থেকেই প্রায় সব বিভ্রান্তির সৃষ্টি হয়, কারণ মানুষ এগুলোকে একই shelf-এর তিনটি product হিসেবে তুলনা করে।
একটি VM কী
Hypervisor হলো এমন একটি স্তর, যা হার্ডওয়্যার হিসেবে কাজ করে। এটি প্রতিটি guest-কে একটি virtual CPU, নির্দিষ্ট memory, একটি virtual disk এবং একটি virtual network card দেয়। এরপর guest-গুলোকে একে অপরকে দেখতে বাধা দেয়। সার্ভারে প্রচলিত hypervisor হলো KVM, Xen, Hyper-V এবং VMware ESXi। আধুনিক hypervisor CPU virtualisation extension (Intel VT-x, AMD-V) ব্যবহার করে। তাই guest-এর instruction বাস্তব CPU-তে native speed-এর কাছাকাছি চলে, interpretation-এর মাধ্যমে নয়।
Sysadmin-এর জন্য গুরুত্বপূর্ণ বিষয় হলো kernel। একটি VM নিজের kernel boot করে। তাই আপনি distribution বেছে নিতে, kernel module load করতে এবং শুধু নিজের VM-এ প্রযোজ্য sysctl value নির্ধারণ করতে পারেন। এটি container (LXC, Docker) থেকে আলাদা। Container host kernel share করে এবং process ও file-এর জন্য শুধু নিজস্ব view পায়।
যেকোনো Linux box-এ একটি command চালিয়েই এর উত্তর দেখা যায়।
systemd-detect-virtkvm মানে আপনি একটি KVM hypervisor-এ চলা virtual machine ব্যবহার করছেন। lxc বা openvz মানে আপনি অন্য কারও kernel-এর ওপর চলা container-এর ভিতরে আছেন। none মানে physical server-টি আপনার নিয়ন্ত্রণে। command-টি না থাকলে CPU flag থেকে একই তথ্য lscpu | grep -i hypervisor দেখায়।
একটি VPS কী
একটি VPS হলো একটি VM-এর বাণিজ্যিক প্যাকেজ। এর অন্তর্নিহিত প্রযুক্তি হলো virtualisation। আর "VPS" শব্দটি এটিকে বিক্রয়যোগ্য করার উপাদানগুলো বোঝায়: পুনরায় ইনস্টল করা যায় এমন একটি OS image, একটি IP address, নির্ধারিত bandwidth allowance, একটি control panel, মাসিক মূল্য এবং host নষ্ট হলে যোগাযোগ করার জন্য কোনো support contact। "Private" শব্দটি এটিকে shared hosting থেকে আলাদা করে। shared hosting-এ শত শত website একই operating system এবং একই PHP configuration ভাগ করে ব্যবহার করে।
VPS একটি product name, technical term নয়। তাই এটি সব সময় পূর্ণ VM বোঝায় না। কিছু budget plan একই নামে container বিক্রি করে। পার্থক্যটি প্রথমবার kernel-এর প্রয়োজন হলে বোঝা যায়। Container ভিত্তিক plan-এ sudo modprobe wireguard, RTNETLINK answers: Operation not supported অথবা modprobe: FATAL: Module wireguard not found-এর কারণে ব্যর্থ হয়, কারণ kernel-টি host-এর এবং সেটি পরিবর্তন করার অনুমতি আপনার নেই। KVM plan-এ module load হয় এবং 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। আপনি এটিকে CIDR notation-এ একটি address range দেন, যেমন 10.0.0.0/16। এরপর ওই range থেকে subnet তৈরি করেন, route table সংযুক্ত করেন এবং ভেতরের resource-গুলোর সামনে firewall rule (security group) প্রয়োগ করেন। VPC-এর কোনো CPU, memory বা disk নেই। এতে login করার মতো কোনো system নেই। 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-ই পুরো internet-এর জন্য exposed থাকে না।
ip -4 addr show10.0.0.0/8, 172.16.0.0/12 বা 192.168.0.0/16-এর ভেতরের address private। একই server-এ public address থাকলে সেটি internet থেকে সরাসরি reachable হয়, server-টি যে network object-এর মধ্যে থাকুক না কেন।
একটি VPC কি আমার server-কে private করে?
না। এই তিনটি term নিয়ে এটিই সবচেয়ে ব্যয়বহুল ভুল ধারণা। একটি VPC routing এবং addressing নিয়ন্ত্রণ করে। Internet কোনো machine-এ পৌঁছাতে পারবে কি না, তা এটি নির্ধারণ করে না। কোনো instance-এর public IP থাকে এবং security rule-এ 0.0.0.0/0 থেকে port 22 অনুমোদিত থাকে, তাহলে সেটি VPC থাকুক বা না থাকুক, অন্য যেকোনো server-এর মতোই exposed থাকে। VPC থেকে পাওয়া isolation-এর অর্থ হলো কোনো resource-কে একেবারেই public address না দেওয়া, এবং কোন subnet কোন subnet-এর সঙ্গে যোগাযোগ করতে পারবে তা নির্ধারণকারী rule ব্যবহার করা।
এই তিনটি শব্দ ভিন্ন ধরনের isolation বোঝায়। একটি VM compute isolate করে: hypervisor CPU time এবং memory আলাদা রাখে, তাই অন্য guest আপনার RAM পড়তে পারে না। Disk এবং network-এর ক্ষেত্রে এই isolation দুর্বল; একই host-এর কোনো ব্যস্ত প্রতিবেশী আপনাকে ধীর করে দিতে পারে। Container-based VPS একই kernel share করে, তাই kernel-level bug সবার জন্য shared risk তৈরি করে। VPC compute সম্পর্কে কোনো isolation দেয় না। এটি শুধু network-এর গঠন নির্ধারণ করে।
দামের হিসাব বোঝার মডেল
একটি VPS সাধারণত নির্দিষ্ট মেশিনের জন্য নির্দিষ্ট মাসিক মূল্যে বিক্রি হয়। মাস শুরু হওয়ার আগেই আপনি বিলের পরিমাণ জানতে পারেন, এবং disk ও transfer allowance সেই মূল্যের মধ্যেই থাকে। ছোট workload-এর জন্য মানুষ cloud instance-এর বদলে VPS বেছে নেওয়ার প্রধান কারণ এই পূর্বানুমানযোগ্যতা।
একটি cloud VM ব্যবহারের পরিমাণ অনুযায়ী বিল হয়। Instance-এর জন্য প্রতি ঘণ্টা বা প্রতি সেকেন্ড হিসেবে বিল করা হয়। Disk, snapshot, load balancer এবং outbound traffic-এর জন্য আলাদাভাবে বিল করা হয়। VPC নিজে সাধারণত বিনামূল্যে থাকে। তবে এর সঙ্গে যুক্ত managed উপাদানগুলো বিনামূল্যে নয়। Private instance-কে Internet-এ পৌঁছাতে দেওয়া NAT gateway-এর জন্য প্রতি ঘণ্টা এবং প্রতি gigabyte হিসেবে বিল করা হয়। Availability zone-এর মধ্যে traffic-এর জন্যও বিল করা হয়। July 2026 অনুযায়ী, প্রধান cloud provider-গুলো এখনও প্রতিটি নতুন instance-কে স্বয়ংক্রিয়ভাবে একটি default VPC-তে যুক্ত করে। তাই আপনি অনুরোধ না করলেও একটি VPC ব্যবহার করছেন।
আপনার আসলে কোনটি প্রয়োজন
- একটি website, app, game server বা VPN-এর জন্য একটি server: একটি VPS। plan-এ কী লেখা আছে, তার চেয়ে নতুন VPS-এ প্রথম দশ মিনিট বেশি গুরুত্বপূর্ণ।
- যেসব server-কে private address-এর মাধ্যমে একে অপরের সঙ্গে যোগাযোগ করতে হবে: একটি VPC, অথবা আপনার VPS provider যে private network feature অন্য নামে দেয়।
- এমন workload, যা একটি সম্পূর্ণ datacentre অচল হয়ে গেলেও চালু থাকতে হবে: একাধিক zone-সহ একটি cloud; এর অর্থ VPC-এর ভেতরে থাকা VM।
- kernel-এর পূর্ণ নিয়ন্ত্রণ, অথবা তার ওপর নিজের hypervisor চালানো: KVM ভিত্তিক একটি VPS বা একটি dedicated server। তুলনা করার সময় plan-এর পেছনে ব্যবহৃত disk-এর ধরন পরীক্ষা করুন।
বেশিরভাগ single server project-এর VPC প্রয়োজন হয় না। কয়েকটি machine-এর জন্য VPS-এর সঙ্গে থাকা private network feature একই কাজ করে।
FAQ
একটি VPS কি VM-এর সমান?
VPS হলো এমন একটি VM, যা কোনো provider আপনাকে দেয়। KVM, Xen বা VMware-এর ওপর তৈরি প্রতিটি VPS একটি virtual machine, কিন্তু প্রতিটি virtual machine VPS নয়। কারণ আপনার laptop-এ VirtualBox-এর অধীনে চলা VM কোনো provider-এর product নয়। VPS নামে দেওয়া কিছু সস্তা plan পূর্ণ VM-এর পরিবর্তে container হতে পারে। তাই kernel access-এর ওপর নির্ভর করার আগে systemd-detect-virt দিয়ে বিষয়টি নিশ্চিত করুন।
আমি কি একটি VPC-এর ভেতরে VPS রাখতে পারি?
সাধারণত না। VPC একটি cloud provider-এর নির্দিষ্ট construct এবং একই account-এ তৈরি resource-ই এতে থাকে। কোনো independent provider-এর VPS সেই provider-এর network-এ চলে। দুটির মধ্যে private link প্রয়োজন হলে তাদের মধ্যে VPN tunnel তৈরি করুন। এরপর VPS সেই tunnel ব্যবহার করে private subnet-এ পৌঁছাতে পারবে।
সমতুল্য VPS-এর চেয়ে আমার cloud bill বেশি কেন?
Instance-এর দাম মোট খরচের একটি অংশ মাত্র। 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 দেখা গেলে আপনার নিজস্ব kernel আছে এবং modprobe কাজ করে। lxc, lxc-libvirt অথবা openvz দেখা গেলে আপনি host kernel ভাগ করে ব্যবহার করছেন। সে ক্ষেত্রে module load করা বা /proc/sys-এ লেখা commands Operation not supported দিয়ে ব্যর্থ হবে। দ্বিতীয়বার নিশ্চিত হতে uname -r ব্যবহার করুন। Container plan-এ এটি প্রায়ই এমন kernel version দেখায়, যা আপনার distribution কখনো release করেনি।