Application Architecture
Monolithic (মনোলিথিক) একটি একক অ্যাপ্লিকেশন যা একটি ইউনিট হিসেবেই কাজ করে। সব ফিচার, লজিক এবং ডাটাবেইস অ্যাক্সেস একসাথে থাকে। সবকিছু মিলিয়ে একটাই কোডবেইস। উদাহরণ: পুরনো ভার্সনের বড় সফটওয়্যার যেমন ERP সিস্টেম। N-Tier (এন-টিয়ার) এই আর্কিটেকচারে অ্যাপ্লিকেশনটি একাধিক স্তরে বিভক্ত হয় — যেমন Presentation (UI), Business Logic, এবং Data Layer। প্রতিটি স্তর আলাদা দায়িত্ব পালন করে। উদাহরণ: ওয়েব অ্যাপ্লিকেশন যেখানে UI, সার্ভার লজিক ও ডাটাবেইস আলাদা আলাদা স্তরে কাজ করে। Modular Monolith (মডুলার মনোলিথ) মনোলিথিক হলেও এখানে অ্যাপ্লিকেশনটি ছোট ছোট মডিউলে ভাগ করা হয়। প্রত্যেক মডিউলের নিজস্ব কাজ থাকে, কিন্তু সবকিছু একই কোডবেইসে থাকে। উদাহরণ: একটি বড় কোডবেইসে "User", "Product", "Order" মডিউল আলাদা রাখা। Microservice (মাইক্রোসার্ভিস) এটি ছোট ছোট সার্ভিসের সমন্বয়ে গঠিত, যেগুলো আলাদাভাবে ডিপ্লয় করা যায়। প্রতিটি সার্ভিসের নিজস্ব ডেটাবেইস ও লজিক থাকে। উদাহরণ: আলাদা সার্ভিস শুধু পেমেন্ট হ্যান্ডেল করে, আরেকটা সার্ভিস ইউজার ম্যানেজ করে। Event Driven (ইভেন্ট ড্রিভেন) এই আর্কিটেকচারে সিস্টেমের অংশগুলো ইভেন্ট পাঠায় এবং অন্য অংশগুলো সেই ইভেন্ট রেসপন্স করে। loose coupling এর জন্য ভালো। উদাহরণ:একজন ইউজার অর্ডার করল — এটি একটি ইভেন্ট, এরপর পেমেন্ট সার্ভিস, ইনভেন্টরি সার্ভিস সেই ইভেন্টে রেসপন্স করে। Cloud Native (ক্লাউড নেটিভ) ক্লাউডের সুবিধা যেমন স্কেলিং, রেজিলিয়েন্স ব্যবহার করে অ্যাপ্লিকেশন তৈরি করা হয়। সাধারণত কন্টেইনার, Kubernetes ইত্যাদি ব্যবহৃত হয়। উদাহরণ: অ্যাপটি AWS বা Azure-এ রান করে এবং অটোমেটিক স্কেল হয়। Serverless (সার্ভারলেস) এই মডেলে ডেভেলপারদের সার্ভার মেইনটেইন করতে হয় না। ফাংশন নির্দিষ্ট ইভেন্টে রান হয়, ক্লাউড প্রোভাইডার সার্ভার ম্যানেজ করে। উদাহরণ: AWS Lambda, Google Cloud Functions।

Monolithic (মনোলিথিক)
একটি একক অ্যাপ্লিকেশন যা একটি ইউনিট হিসেবেই কাজ করে। সব ফিচার, লজিক এবং ডাটাবেইস অ্যাক্সেস একসাথে থাকে। সবকিছু মিলিয়ে একটাই কোডবেইস।
উদাহরণ: পুরনো ভার্সনের বড় সফটওয়্যার যেমন ERP সিস্টেম।
N-Tier (এন-টিয়ার)
এই আর্কিটেকচারে অ্যাপ্লিকেশনটি একাধিক স্তরে বিভক্ত হয় — যেমন Presentation (UI), Business Logic, এবং Data Layer। প্রতিটি স্তর আলাদা দায়িত্ব পালন করে।
উদাহরণ: ওয়েব অ্যাপ্লিকেশন যেখানে UI, সার্ভার লজিক ও ডাটাবেইস আলাদা আলাদা স্তরে কাজ করে।
Modular Monolith (মডুলার মনোলিথ)
মনোলিথিক হলেও এখানে অ্যাপ্লিকেশনটি ছোট ছোট মডিউলে ভাগ করা হয়। প্রত্যেক মডিউলের নিজস্ব কাজ থাকে, কিন্তু সবকিছু একই কোডবেইসে থাকে।
উদাহরণ: একটি বড় কোডবেইসে "User", "Product", "Order" মডিউল আলাদা রাখা।
Microservice (মাইক্রোসার্ভিস)
এটি ছোট ছোট সার্ভিসের সমন্বয়ে গঠিত, যেগুলো আলাদাভাবে ডিপ্লয় করা যায়। প্রতিটি সার্ভিসের নিজস্ব ডেটাবেইস ও লজিক থাকে।
উদাহরণ: আলাদা সার্ভিস শুধু পেমেন্ট হ্যান্ডেল করে, আরেকটা সার্ভিস ইউজার ম্যানেজ করে।
Event Driven (ইভেন্ট ড্রিভেন)
এই আর্কিটেকচারে সিস্টেমের অংশগুলো ইভেন্ট পাঠায় এবং অন্য অংশগুলো সেই ইভেন্ট রেসপন্স করে। loose coupling এর জন্য ভালো।
উদাহরণ:একজন ইউজার অর্ডার করল — এটি একটি ইভেন্ট, এরপর পেমেন্ট সার্ভিস, ইনভেন্টরি সার্ভিস সেই ইভেন্টে রেসপন্স করে।
Cloud Native (ক্লাউড নেটিভ)
ক্লাউডের সুবিধা যেমন স্কেলিং, রেজিলিয়েন্স ব্যবহার করে অ্যাপ্লিকেশন তৈরি করা হয়। সাধারণত কন্টেইনার, Kubernetes ইত্যাদি ব্যবহৃত হয়।
উদাহরণ: অ্যাপটি AWS বা Azure-এ রান করে এবং অটোমেটিক স্কেল হয়।
Serverless (সার্ভারলেস)
এই মডেলে ডেভেলপারদের সার্ভার মেইনটেইন করতে হয় না। ফাংশন নির্দিষ্ট ইভেন্টে রান হয়, ক্লাউড প্রোভাইডার সার্ভার ম্যানেজ করে।
উদাহরণ: AWS Lambda, Google Cloud Functions।