Backend
Application Architecture
N-tier Architecture

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 এ থাকে:

  1. Presentation Tier (UI Layer)

    • User interaction এর জায়গা।
    • যেমন Website, Mobile App, Desktop App।
  2. Business Logic Tier (Application Layer)

    • Rules, validation, process, authentication, calculation সব এখানে হয়।
    • Example: Order process, Payment validation।
  3. 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 চাপলে কি হয়:

  1. Presentation Tier → আপনি button চাপ দিলে request server এ যায়।
  2. Business Logic Tier → server check করে → আপনার account আছে কিনা, payment valid কিনা।
  3. Data Tier → database থেকে product availability check করে।
  4. সব মিলিয়ে 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 হতে পারে।