পাঠ্যক্রম খুলুন
অগ্রসর পর্যায়

Process, VM ও Container: isolation-এর পার্থক্য

Processes, VMs, and Containers

এই পাঠের কুইজ ↓৫ মিনিট পড়াPHP 8.3+ · Laravel 12
এই পাঠের সূচিপত্র

এই পাঠে যা শিখবেন

  • Process, VM ও container-এর isolation আলাদা করা
  • Laravel web ও worker-এর resource boundary বোঝা
  • Persistent data কোথায় রাখবেন ঠিক করা

সমস্যা দিয়ে শুরু

একটি Laravel দোকানে image resize job চললেই checkout ধীর হয়। একই machine-এ PHP-FPM, queue worker এবং database memory নিয়ে লড়ছে। Developer বলেন container করলেই সমস্যাটি যাবে। কিন্তু container-এ limit না থাকলে একই host-এর resource শেষ হতে পারে। প্রথমে বুঝতে হবে application-এর process কোথায় চলে, কোন সম্পদ ভাগ করে এবং host বন্ধ হলে কী হারায়।

সহজ করে বুঝি

Process হলো চলমান program; operating system তাকে memory ও CPU time দেয়। VM virtual hardware-এর উপরে নিজের guest kernel চালায়। Container host kernel ভাগ করে, তবে process, filesystem ও network-এর কিছু অংশ আলাদা করে। Image হলো চলার recipe ও filesystem snapshot; container তার চলমান instance। এই isolation performance guarantee বা নিখুঁত security boundary নয়। একই host নষ্ট হলে তার সব container প্রভাবিত হয়।

পরিচিত একটি উপমা

একটি বাড়ির আলাদা ঘর container-এর মতো: দরজা আলাদা হলেও বিদ্যুৎ সংযোগ এক। VM তুলনামূলকভাবে আলাদা apartment-এর মতো। ঘর বাড়ালে মূল বিদ্যুতের ক্ষমতা বাড়ে না; resource budget তাই দরকার।

নকশাটি দেখুন

Diagram লোড হচ্ছে…

Container process আলাদা করে; host failure, persistence ও resource budget আলাদাভাবে সামলাতে হয়।
Diagram-এর text flow দেখুন
flowchart TD
 H[Host kernel] --> W[PHP FPM container]
 H --> Q[Queue worker container]
 W --> D[(External database)]
 Q --> D

Host kernel থেকে web ও worker দুটি আলাদা process group পায়। HTTP request web-এ যায়; দীর্ঘ কাজ worker করে। দুইটি database-এ স্থায়ী ফল লেখে। Container বদলালে local file মুছে যেতে পারে, তাই database ও upload-এর persistence আলাদাভাবে design করতে হবে। একই host দেখানো হয়েছে বলে এই diagram high availability-এর দাবি করে না।

PHP ও Laravel-এ প্রয়োগ

নিচের fragment routes/web.php-তে local lab-এর জন্য। এটি PID দেখায়, secret নয়; production diagnostic endpoint হিসেবে প্রকাশ করবেন না। দুই replica-তে request পাঠিয়ে process বদলানো দেখুন। PHP process-এর ভেতরের static variable shared database-এর বিকল্প নয়।

php
use Illuminate\Support\Facades\Route;
Route::get('/lab/process', function () {
    return response()->json([
        'pid' => getmypid(),
        'environment' => app()->environment(),
    ]);
})->middleware('auth');

সুবিধা, সীমাবদ্ধতা ও trade-off

Container reproducible runtime ও দ্রুত replacement দেয়। VM সাধারণত বেশি kernel separation দেয়, কিন্তু guest OS patch ও resource overhead থাকে। Web ও worker আলাদা করলে independently scale করা যায়; host-level CPU contention তবু থাকে। Database container শেখার জন্য সুবিধাজনক হলেও production storage, backup ও restore-এর দায় দূর হয় না।

সাধারণ ভুল

  • Container image-এ upload বা runtime secret রেখে দেওয়া।
  • এক host-এ তিন replica মানেই তিন failure domain ধরা।
  • Worker memory limit ছাড়া CPU-heavy কাজ চালানো।

আরও একটু গভীরে

CPU quota, memory limit, process privileges ও filesystem permissions আলাদা সিদ্ধান্ত। Memory exhaustion-এ process kill হলে job পুনরায় আসতে পারে; তাই business operation idempotent রাখতে হয়। Long-running Laravel worker নতুন code নিজে পড়ে নেবে ধরে নেবেন না। Deployment-এ graceful restart এবং unfinished job পুনরুদ্ধারের পথ রাখুন। Container runtime ও host patch management-ও operational কাজের অংশ।

মনে রাখুন

Container process আলাদা করে; host failure, persistence ও resource budget আলাদাভাবে সামলাতে হয়।

নিজে চেষ্টা করুন

একই host-এ web এবং worker চালিয়ে resize workload দিন। CPU, resident memory, checkout latency নোট করুন। Worker limit বদলে ফল তুলনা করুন। Container restart করে কোন file টিকে থাকল লিখুন; কোনো কাল্পনিক benchmark ব্যবহার করবেন না।

নিজের বোঝা যাচাই করুন

1. Container কি ছোট VM?

না। সাধারণ Linux container host kernel ভাগ করে; VM নিজের guest kernel চালায়। এই পার্থক্য isolation ও patching-এর দায় বদলায়।

2. Image ও container এক?

Image immutable starting artifact; container চলমান instance যার writable layer থাকতে পারে। Layer-এ রাখা business data replacement-এ হারাতে পারে।

3. তিন replica কি availability নিশ্চিত করে?

একই host-এ থাকলে host failure সব replica থামায়। Placement ও independent failure domain যাচাই করতে হবে।

4. Worker আলাদা কেন?

CPU-heavy background কাজ web capacity থেকে আলাদা budget পায়। Limits ভুল হলে shared host তবু saturate হতে পারে।

5. Upload কোথায় রাখব?

স্থায়ী object storage বা যথাযথ persistent volume-এ। কোনটি নেবেন তা durability, sharing ও restore requirement দিয়ে নির্ধারণ করুন।

আরও পড়ুন

এই পাঠের কুইজ

এই পাঠ থেকে ২টি প্রশ্ন। উত্তর দিয়ে ব্যাখ্যা দেখুন; অধ্যায়ের কুইজ আলাদাভাবে দিতে হবে।

এই পাঠের ২টি প্রশ্নের উত্তর দিন। পাস করতে দুটিই সঠিক হতে হবে।

জমা দেওয়ার পর সঠিক উত্তর ও ব্যাখ্যা দেখবেন। ফলাফল এই ব্রাউজারে সংরক্ষিত থাকবে। অনুশীলনের ফল অধ্যায় সম্পন্নের হিসাবে যোগ হয় না।

সব বিষয় মিলিয়ে অনুশীলন করুন →

অগ্রগতি এই ব্রাউজারে সংরক্ষিত থাকে। শুধু পাঠ খুললে সম্পন্ন হয় না।