Modular Monolith Architecture
1. What is Modular Monolith?
Modular Monolith হলো Monolith এর improved version। মানে, পুরো application এক deployable unit হলেও ভেতরে application কে module (feature ভিত্তিক আলাদা অংশ) এ ভাগ করা হয়।
➡️ Monolith এ সবকিছু একসাথে tightly coupled থাকে। ➡️ Modular Monolith এ internal separation থাকে, কিন্তু deploy হয় একটা application হিসেবেই।
2. Structure of Modular Monolith
Modular Monolith সাধারণত নিচের মত ভাগ করা হয়:
-
UI Layer → User interaction।
-
Business Layer → ভেতরে আবার অনেকগুলো Module। যেমন:
- User Module
- Product Module
- Order Module
- Payment Module
-
Data Layer → প্রতিটি module নিজের data access code maintain করে।
প্রত্যেকটা module internally independent, কিন্তু একসাথে deploy হয়।
3. How Modular Monolith Works
ধরে নেন একটা E-commerce Application:
- User "Buy Product" এ ক্লিক করলো।
- Request গেলো → Order Module এ।
- Order Module, Product Module এর সাথে কথা বললো → stock আছে কিনা।
- তারপর Order Module → Payment Module কে কল করলো → payment successful কিনা।
- সব মিলিয়ে response UI তে ফিরে এলো।
4. Advantages of Modular Monolith
✅ Clear Separation of Concerns → প্রতিটি module আলাদা responsibility রাখে। ✅ Maintainability → বড় কোডবেসও সহজে handle করা যায়। ✅ Performance → Inter-module communication একই process এর মধ্যে, তাই fast। ✅ Easier Migration → চাইলে ভবিষ্যতে আলাদা module কে আলাদা service (Microservice) এ convert করা যায়। ✅ One Deployment → পুরো app একসাথে deploy করা হয়, তাই DevOps সহজ।
5. Disadvantages of Modular Monolith
❌ Deployment Coupling → ছোট পরিবর্তনের জন্যও পুরো application deploy করতে হয়। ❌ Module Dependency Problem → যদি ভালোভাবে boundary maintain না করা হয়, তাহলে আবার tightly coupled হয়ে যাবে। ❌ Scaling Limitations → আলাদা module কে independent ভাবে scale করা যায় না (যেমন শুধু Payment scale করা যাবে না)।
6. When to use Modular Monolith
- যখন application ছোট থেকে medium আকারে হবে।
- Team structure ছোট থেকে medium।
- Future এ Microservice এ migrate করার plan আছে।
- Maintainable architecture চাই, কিন্তু microservices এর complex DevOps এখনই দরকার নেই।
7. When NOT to use
- Huge enterprise level application → যেখানে প্রতি module আলাদা ভাবে scale করা দরকার।
- যখন আলাদা team সম্পূর্ণ স্বাধীনভাবে কাজ করবে।
8. Real Life Examples
- E-commerce Application (Medium Scale) → যেখানে User, Product, Order, Payment আলাদা module কিন্তু একসাথে deploy হয়।
- Learning Management System (LMS) → Student Module, Teacher Module, Course Module, Exam Module → সব এক app এ।
- ERP ছোট version (Accounts, HR, Sales সব module একসাথে)।
9. Scaling in Modular Monolith
- Scaling মূলত Vertical Scaling → বড় server, বেশি RAM/CPU।
- Horizontal scaling করলে পুরো app replicate করতে হয়। 👉 Independent module scaling সম্ভব না।
10. Deployment in Modular Monolith
- একসাথে deploy হয়।
- Docker container বানালে → এক container এ সব modules bundled থাকে।
- CI/CD সহজ কারণ এক pipeline এ সবকিছু।
11. Diagram (Textual Representation)
------------------------------
| Modular Monolith App |
|------------------------------|
| UI Layer (React/HTML) |
|------------------------------|
| Business Layer |
| ----------------------- |
| | User Module | |
| | Product Module | |
| | Order Module | |
| | Payment Module | |
| ----------------------- |
|------------------------------|
| Data Access Layer |
------------------------------
|
v
Database(s)👉 সব এক application এর মধ্যে, কিন্তু module গুলো আলাদা আলাদা।
12. Developer Experience
- Beginners → সহজে structure বোঝা যায়।
- Team → আলাদা feature নিয়ে আলাদা developer কাজ করতে পারে।
- Large Team → যদি boundary ভালোভাবে না করা হয়, তাহলে আবার monolith এর মতো mess হয়ে যেতে পারে।
13. Summary
- Modular Monolith = Monolith + Internal Modularity।
- Easy maintainability, fast performance।
- Deployment সহজ, কিন্তু scaling এ limitation।
- Microservice এর দিকে যাওয়ার transition architecture।