N-Tier Architecture
1. What is N-Tier Architecture?
N-Tier (বা Multi-Tier) Architecture হলো এমন একটি সফটওয়্যার design pattern যেখানে application কে বিভিন্ন layer বা tier এ ভাগ করা হয়। প্রতিটি tier এর নিজস্ব কাজ থাকে, এবং প্রতিটি tier অন্য tier এর সাথে communicate করে।
-
"Tier" মানে একটা আলাদা স্তর (layer), যেখানে নির্দিষ্ট responsibility assign করা হয়।
-
সবচেয়ে common হলো 3-Tier Architecture:
-
Presentation Tier (UI)
-
Business Logic Tier
-
Data Tier
2. Structure of N-Tier Architecture
একটি সাধারণ N-Tier Architecture এ থাকে:
-
Presentation Tier (UI Layer)
- User interaction এর জায়গা।
- যেমন Website, Mobile App, Desktop App।
-
Business Logic Tier (Application Layer)
- Rules, validation, process, authentication, calculation সব এখানে হয়।
- Example: Order process, Payment validation।
-
Data Tier (Database Layer)
- Database management।
- Data store, retrieve, update, delete।
এর বাইরেও Security Layer, Integration Layer, Service Layer ইত্যাদি add করা যায়।
3. How N-Tier Application Works
ধরেন আপনি একটা E-commerce site এ "Buy Now" button চাপলে কি হয়:
- Presentation Tier → আপনি button চাপ দিলে request server এ যায়।
- Business Logic Tier → server check করে → আপনার account আছে কিনা, payment valid কিনা।
- Data Tier → database থেকে product availability check করে।
- সব মিলিয়ে response তৈরি হয় এবং UI তে পাঠানো হয় → "Order Placed Successfully!"
4. Advantages of N-Tier Architecture
✅ Separation of Concerns → প্রতিটি layer এর আলাদা দায়িত্ব। ✅ Maintainability → কোড clean থাকে। ✅ Scalability → আলাদা layer scale করা যায় (যেমন শুধু database scale করা)। ✅ Security → direct database access বন্ধ রাখা যায়, সবকিছু business layer এর মাধ্যমে হয়। ✅ Reusability → business logic একবার লিখে web app, mobile app দুই জায়গায় ব্যবহার করা যায়।
5. Disadvantages of N-Tier
❌ Performance Issue → বেশি layer থাকলে request → response সময় বাড়ে। ❌ Complexity → beginners এর জন্য setup জটিল মনে হয়। ❌ Over-engineering → ছোট project এ অপ্রয়োজনীয় হতে পারে।
6. When to use N-Tier
- যখন application বড় হবে বলে ধারণা।
- যখন security খুব গুরুত্বপূর্ণ (Banking, Finance)।
- যখন আলাদা team UI, Business Logic, Database নিয়ে কাজ করবে।
- Long term maintenance দরকার হলে।
7. When NOT to use
- ছোট project (যেমন একটা simple blog)।
- যেখানে দ্রুত MVP বানাতে হবে।
8. Real Life Examples
- Banking Systems → Frontend (ATM UI বা Mobile Banking App), Business Logic (Transaction validation), Database (Account balance)।
- Enterprise ERP Software (SAP, Oracle ERP)।
- ASP.NET MVC Applications (UI, Controller, Database আলাদা)।
9. Scaling in N-Tier
- Horizontal Scaling → Business layer আলাদা server এ replicate করা যায়।
- Database Scaling → Master-Slave বা Cluster করা যায়।
- UI layer আলাদা load balancer দিয়ে scale করা যায়।
10. Deployment in N-Tier
-
প্রতিটি tier আলাদা server/container এ deploy করা যায়।
-
Example:
- UI → React App (CDN এ host করা)।
- Business Logic → Node.js/NestJS (Server বা Container এ)।
- Data Tier → MySQL/PostgreSQL Database Server।
11. Diagram (Textual Representation)
User (Browser/Mobile)
|
v
----------------------
| Presentation Tier |
| (UI - React/HTML) |
----------------------
|
v
----------------------
| Business Logic Tier |
| (APIs, Services) |
----------------------
|
v
----------------------
| Data Tier |
| (MySQL, MongoDB) |
----------------------👉 প্রতিটি layer sequential ভাবে কাজ করে।
12. Developer Experience
- Beginners → Structure clear, maintainable।
- Large Team → Productivity বেশি, কারণ আলাদা টীম আলাদা layer maintain করতে পারে।
13. Summary
- N-Tier = Layered Approach।
- বেশি secure, maintainable এবং scalable।
- Large scale applications এর জন্য ভালো।
- ছোট app এর জন্য overkill হতে পারে।