Microservices Architecture কী?

default

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 সাধারণত থাকে:

  1. Service per Business Capability

    • প্রতিটি সার্ভিস এক ফিচার handle করে।

  2. Independent Database

    • প্রতিটি সার্ভিসের আলাদা ডেটাবেস বা schema থাকতে পারে।

  3. Communication

    • HTTP REST API / gRPC / Message Queue (Kafka, RabbitMQ)

  4. 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 ব্যবহার করা উচিত?

  1. Application বড় এবং complex → অনেক ফিচার, ইউজার।

  2. Multiple Teams → আলাদা টিম আলাদা সার্ভিস নিয়ে কাজ করবে।

  3. Scalability প্রয়োজন → কোন সার্ভিসে বেশি load, শুধু সেইটিকে স্কেল করতে হবে।

  4. High Availability & Fault Tolerance দরকার → একটা সার্ভিস down হলেও সিস্টেম চালু থাকবে।

  5. Continuous Deployment & Rapid Release দরকার।


🔹 কখন Microservices এড়িয়ে চলা উচিত?

  • ছোট প্রোজেক্ট বা MVP → Monolith সহজ।

  • টিম ছোট → সার্ভিস আলাদা করলে DevOps overhead বাড়ে।

  • নতুন টিম বা নতুন প্রোজেক্ট, যেখানে DevOps infra নেই।


🔹 Real Life Example

  • Netflix, Amazon, Uber → Microservices

  • ছোট কোম্পানির বা নতুন প্রোজেক্ট → Monolith দিয়ে শুরু করে, পরে Microservices-এ মাইগ্রেট।


🔹 Monolith → Microservices Migration

  1. Monolith-এর মডিউলগুলো identify করা (যেমন Cart, Payment)।

  2. ছোট ছোট সার্ভিসে ভাগ করা।

  3. API / Event-driven communication setup করা।

  4. ধীরে ধীরে পুরো অ্যাপ Microservices-এ migrate করা।


🔹 সারাংশ

  • Microservices = ছোট ছোট স্বাধীন সার্ভিস, আলাদা ডিপ্লয় ও স্কেলযোগ্য।

  • সুবিধা: Scalability, Fault Isolation, Tech Flexibility, Team Autonomy।

  • অসুবিধা: Complexity, Network Latency, Data Consistency, DevOps Overhead।

  • ছোট প্রোজেক্টে Monolith সেরা, বড় প্রোজেক্টে Microservices।


Mohammad Zubair

I'm Mohammad Zubair, a passionate software engineer working in the dynamic world of IT. Currently, I'm proud to be a part of HawarIT, a thriving Dutch-Bangladeshi joint venture company, where I contribute my expertise and enthusiasm to the field of software engineering.

Leave a Reply

Your email address will not be published. Required fields are marked *