Microservices Architecture কী?
Microservices Architecture হলো এমন একটি সফটওয়্যার আর্কিটেকচার যেখানে অ্যাপ্লিকেশনকে ছোট ছোট স্বাধীন সার্ভিসে ভাগ করা হয়।
-
প্রতিটি সার্ভিস একটি নির্দিষ্ট ফিচার বা বিজনেস ক্যাপাবিলিটি handle করে।
-
সার্ভিসগুলো স্বতন্ত্রভাবে ডিপ্লয়, স্কেল, এবং ডেভেলপ করা যায়।
-
সার্ভিসগুলো একে অপরের সাথে সাধারণত API বা Message Queue এর মাধ্যমে কমিউনিকেট করে।
🔹 উদাহরণ (সহজভাবে)
ধরো তুমি একটা E-commerce Website বানাচ্ছো:
Microservices-এ:
| সার্ভিস | দায়িত্ব |
|---|---|
| User Service | Login/Register, User Profile |
| Product Service | Product Catalog, Product Detail |
| Cart Service | Shopping Cart, Wishlist |
| Order Service | Order Processing, Payment |
| Notification Service | Email, SMS, Push Notification |
| Admin Service | Product Upload, Analytics |
👉 প্রতিটি সার্ভিস স্বতন্ত্রভাবে রান হয়।
যদি Cart Service-এ লোড বেশি পড়ে, শুধু Cart Service স্কেল করা যায়।
🔹 Structure / Design
Microservices সাধারণত থাকে:
-
Service per Business Capability
-
প্রতিটি সার্ভিস এক ফিচার handle করে।
-
-
Independent Database
-
প্রতিটি সার্ভিসের আলাদা ডেটাবেস বা schema থাকতে পারে।
-
-
Communication
-
HTTP REST API / gRPC / Message Queue (Kafka, RabbitMQ)
-
-
Deployment
-
প্রতিটি সার্ভিস আলাদা আলাদা deployable unit।
-
Docker/Kubernetes ব্যবহার করা হয়।
-
🔹 Microservices-এর সুবিধা (Pros)
✅ Scalability
-
শুধু যেই সার্ভিসে লোড বেশি, সেটাই আলাদা করে স্কেল করা যায়।
✅ Independent Deployment
-
কোনো সার্ভিস update করলে পুরো অ্যাপ ডিপ্লয় করতে হয় না।
-
Continuous Delivery সহজ।
✅ Technology Flexibility
-
এক সার্ভিস Python, আরেকটি Java বা Node.js-এ লিখা যায়।
✅ Fault Isolation
-
একটি সার্ভিস নষ্ট হলেও পুরো সিস্টেম বন্ধ হয় না।
-
উদাহরণ: Payment সার্ভিস ডাউন, কিন্তু Product Service চলবে।
✅ Team Autonomy
-
বড় টিম আলাদা আলাদা সার্ভিস নিয়ে কাজ করতে পারে।
✅ Easy to Understand
-
ছোট সার্ভিস → ছোট কোডবেস → ছোট complexity।
🔹 Microservices-এর অসুবিধা (Cons / Challenges)
❌ Complexity Increase
-
সার্ভিস সংখ্যা বেশি হলে orchestration কঠিন।
❌ Network Latency
-
সার্ভিসগুলো একে অপরের সাথে নেটওয়ার্ক কল করে → latency বাড়ে।
❌ Data Consistency Challenge
-
প্রতিটি সার্ভিসের আলাদা ডেটাবেস → Transaction & Consistency কঠিন।
-
CAP theorem অনুযায়ী eventual consistency ব্যবহার হয়।
❌ Testing Complexity
-
End-to-end test করা জটিল।
-
Mocking / Contract Testing প্রয়োজন।
❌ Deployment & DevOps Overhead
-
Docker, Kubernetes, CI/CD pipeline সেটআপ করতে হয়।
❌ Monitoring & Logging Complexity
-
সার্ভিস বেশি হলে centralized logging, monitoring লাগবে।
🔹 Monolith vs Microservices
| বিষয় | Monolith | Microservices |
|---|---|---|
| Codebase | একসাথে | ছোট ছোট সার্ভিস |
| Deployment | একসাথে | আলাদাভাবে |
| Scalability | পুরো অ্যাপ স্কেল | নির্দিষ্ট সার্ভিস স্কেল |
| Tech Flexibility | এক tech stack | সার্ভিসভেদে আলাদা tech |
| Fault Isolation | এক সার্ভিস crash → পুরো system down | এক সার্ভিস crash → system চালু থাকে |
| Complexity | ছোট প্রোজেক্ট সহজ | বড় প্রোজেক্টে ভালো, শুরুতে জটিল |
| Team Size | ছোট টিম | বড় টিম, আলাদা সার্ভিস টিম |
🔹 কখন Microservices ব্যবহার করা উচিত?
-
Application বড় এবং complex → অনেক ফিচার, ইউজার।
-
Multiple Teams → আলাদা টিম আলাদা সার্ভিস নিয়ে কাজ করবে।
-
Scalability প্রয়োজন → কোন সার্ভিসে বেশি load, শুধু সেইটিকে স্কেল করতে হবে।
-
High Availability & Fault Tolerance দরকার → একটা সার্ভিস down হলেও সিস্টেম চালু থাকবে।
-
Continuous Deployment & Rapid Release দরকার।
🔹 কখন Microservices এড়িয়ে চলা উচিত?
-
ছোট প্রোজেক্ট বা MVP → Monolith সহজ।
-
টিম ছোট → সার্ভিস আলাদা করলে DevOps overhead বাড়ে।
-
নতুন টিম বা নতুন প্রোজেক্ট, যেখানে DevOps infra নেই।
🔹 Real Life Example
-
Netflix, Amazon, Uber → Microservices
-
ছোট কোম্পানির বা নতুন প্রোজেক্ট → Monolith দিয়ে শুরু করে, পরে Microservices-এ মাইগ্রেট।
🔹 Monolith → Microservices Migration
-
Monolith-এর মডিউলগুলো identify করা (যেমন Cart, Payment)।
-
ছোট ছোট সার্ভিসে ভাগ করা।
-
API / Event-driven communication setup করা।
-
ধীরে ধীরে পুরো অ্যাপ Microservices-এ migrate করা।
🔹 সারাংশ
-
Microservices = ছোট ছোট স্বাধীন সার্ভিস, আলাদা ডিপ্লয় ও স্কেলযোগ্য।
-
সুবিধা: Scalability, Fault Isolation, Tech Flexibility, Team Autonomy।
-
অসুবিধা: Complexity, Network Latency, Data Consistency, DevOps Overhead।
-
ছোট প্রোজেক্টে Monolith সেরা, বড় প্রোজেক্টে Microservices।