Containerization (Docker)
মাইক্রোসার্ভিস আর্কিটেকচারের সফলতার পেছনে সবচেয়ে বড় হাত হলো Containerization বা কন্টেইনারাইজেশনের। আর এর সমার্থক শব্দ হয়ে উঠেছে Docker।
1. কন্টেইনারাইজেশন কি?
সহজ কথায়, আপনার অ্যাপ্লিকেশন চালানোর জন্য প্রয়োজনীয় সব কোড, লাইব্রেরি, কনফিগারেশন এবং ডিপেনডেন্সিগুলোকে একটি প্যাকেজের মধ্যে ভরে ফেলাকেই কন্টেইনারাইজেশন বলে। এটি করার ফলে "আপনার পিসিতে চলে কিন্তু সার্ভারে চলে না" - এই চিরচেনা সমস্যার সমাধান হয়ে যায়।
2. Docker কেন জরুরি?
- Consistency: একই কোড আপনার লোকাল মেশিন, টেষ্টিং সার্ভার এবং প্রোডাকশন সার্ভারে হুবহু একইভাবে চলবে।
- Isolation: একটি কন্টেইনারের সমস্যা অন্য কন্টেইনার বা মেইন সার্ভারকে আক্রান্ত করে না।
- Speed: ভার্চুয়াল মেশিনের তুলনায় ডকার কন্টেইনার অনেক দ্রুত স্টার্ট হয় এবং মেমোরি কম খরচ করে।
- Portability: আপনি যেকোনো অ্যাপকে ডকারাইজড করে খুব সহজেই যেকোনো ক্লাউড প্রোভাইডারে (AWS, Azure, GCP) মুভ করতে পারেন।
3. ডকার কন্টেইনার বনাম ভার্চুয়াল মেশিন (VM)
| বৈশিষ্ট্য | Virtual Machine | Docker Container |
|---|---|---|
| অপারেটিং সিস্টেম | প্রতিটিতে আলাদা OS থাকে | মেইন সার্ভারের OS শেয়ার করে |
| সাইজ | কয়েক জিবি (GB) | কয়েক মেগাবাইট (MB) |
| পারফরম্যান্স | ধীরগতির | অত্যন্ত দ্রুত |
| রিসোর্স | বেশি খরচ হয় | খুব কম খরচ হয় |
4. ডকার এবং মাইক্রোসার্ভিস
মাইক্রোসার্ভিসে শত শত ছোট ছোট সার্ভিস থাকে। এই সার্ভিসগুলোকে আলাদা করা এবং ম্যানেজ করার জন্য ডকার অপরিহার্য। প্রতিটি মাইক্রোসার্ভিস নিজের কন্টেইনারে চলে, ফলে একটির সাথে অন্যটির ডিপেনডেন্সি কনফ্লিক্ট হয় না।
NOTE
ডকার কন্টেইনার ম্যানেজ করার জন্য আরও একটি শক্তিশালী টুল বর্তমানে ব্যবহৃত হয়, সেটি হলো Kubernetes (K8s)। এটি ডকার কন্টেইনারগুলোকে অটো-স্কেলিং এবং ম্যানেজমেন্টে সাহায্য করে।