1. System Design কী (Introduction to System Design)

System Design বলতে বোঝায় — একটি বড় সফটওয়্যার সিস্টেমকে এমনভাবে পরিকল্পনা ও গঠন করা, যাতে সেটি নির্দিষ্ট কাজ ভালোভাবে, দ্রুত এবং নির্ভরযোগ্যভাবে সম্পন্ন করতে পারে।

সহজভাবে বললে, এটি হলো সফটওয়্যার সিস্টেমের নকশা বা স্থাপত্য (architecture)
যেখানে আমরা ঠিক করি:

  • কীভাবে সিস্টেমটি কাজ করবে,

  • কোন কোন অংশ থাকবে (modules/components),

  • সেগুলোর মধ্যে যোগাযোগ কীভাবে হবে,

  • এবং সিস্টেম কীভাবে স্কেল (scale), পারফর্ম (perform) ও রিলায়েবল (reliable) থাকবে।


🎯 উদাহরণ:

ধরা যাক তুমি একটি E-Commerce System ডিজাইন করছো (যেমন Daraz)।
তাহলে system design-এর সময় ভাবতে হবে —

  • User কীভাবে লগইন করবে

  • Product ডেটা কোথায় সংরক্ষণ হবে

  • Payment সিস্টেম কীভাবে যুক্ত হবে

  • Load বাড়লে সার্ভার কীভাবে সামলাবে

  • ডেটা নিরাপত্তা (security) কীভাবে বজায় থাকবে

এই সব বিষয় পরিকল্পনা করাই হলো System Design


🏗️ System Design-এর ধরণ (Types)

১. High-Level Design (HLD)

  • এখানে বড় কাঠামো বা আর্কিটেকচার ঠিক করা হয়।

  • যেমন: কোন কোন module থাকবে (User, Product, Order, Payment), ডাটাবেস কীভাবে সংযুক্ত হবে ইত্যাদি।

২. Low-Level Design (LLD)

  • এখানে প্রতিটি module-এর ভেতরের কোড স্তরে কাজের ধরণ নির্ধারণ করা হয়।

  • যেমন: কোন ক্লাস কী কাজ করবে, কী কী ফাংশন লাগবে ইত্যাদি।


⚙️ Architectural Drivers কী (Introduction to Architectural Drivers)

Architectural Drivers হলো সেই গুরুত্বপূর্ণ বিষয়গুলো, যেগুলো একটি সফটওয়্যারের আর্কিটেকচার (স্থাপত্য) গঠন করার সময় সরাসরি প্রভাব ফেলে।
অর্থাৎ — এই বিষয়গুলোই ঠিক করে দেয় সিস্টেমের গঠন কেমন হবে।


🔑 প্রধান Architectural Drivers:

১. Functional Requirements (কার্যকরী চাহিদা)

এগুলো হলো সিস্টেমের মূল কাজ —
যেমন,

  • একজন ব্যবহারকারী লগইন করতে পারবে

  • প্রোডাক্ট সার্চ করা যাবে

  • অর্ডার প্লেস করা যাবে

👉 এই কাজগুলো সিস্টেমের মূল উদ্দেশ্য নির্ধারণ করে।


২. Quality Attributes (সিস্টেমের গুণগত বৈশিষ্ট্য)

এগুলো হলো সিস্টেমের “কেমনভাবে” কাজ করবে সেই বিষয়।
যেমন —

  • Performance: সিস্টেম কত দ্রুত কাজ করবে

  • Scalability: ব্যবহারকারী বাড়লে সিস্টেম টিকবে কিনা

  • Availability: সার্ভার সবসময় চালু থাকবে কিনা

  • Security: ডেটা নিরাপদ কিনা

  • Maintainability: ভবিষ্যতে পরিবর্তন করা কত সহজ

👉 এইগুলোই সবচেয়ে বেশি আর্কিটেকচারকে প্রভাবিত করে।


৩. Constraints (সীমাবদ্ধতা)

এগুলো হলো সেই নিয়ম বা সীমা যেগুলো তোমাকে মানতে হবে।
যেমন —

  • শুধু Azure Cloud ব্যবহার করা যাবে

  • নির্দিষ্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ (যেমন C# বা Java) ব্যবহার করতে হবে

  • বাজেট বা সময় সীমিত

👉 Constraints মানতে গিয়ে অনেক সময় আর্কিটেকচারে পরিবর্তন আনতে হয়।


৪. Business Goals (ব্যবসায়িক লক্ষ্য)

এগুলো হলো সেই কারণ, যার জন্য সিস্টেম তৈরি করা হচ্ছে।
যেমন —

  • বিক্রয় বাড়ানো

  • ব্যবহারকারী ধরে রাখা

  • গ্রাহক সন্তুষ্টি বৃদ্ধি

👉 ব্যবসার লক্ষ্য অনুযায়ী প্রযুক্তিগত সিদ্ধান্ত নিতে হয়।


🧠 সহজ উদাহরণ:

তুমি যদি একটা Online Exam System বানাও,
তাহলে Architectural Drivers হবে —

Driver Type Example
Functional ব্যবহারকারী লগইন করতে পারবে, প্রশ্ন দেখতে পারবে, উত্তর দিতে পারবে
Quality Attribute একসাথে ১০,০০০ ছাত্র পরীক্ষা দিতে পারবে (Scalability)
Constraint শুধুমাত্র .NET এবং SQL Server ব্যবহার করতে হবে
Business Goal একটি দ্রুত ও নির্ভরযোগ্য অনলাইন পরীক্ষা সিস্টেম তৈরি করা

🔍 সংক্ষেপে বললে

বিষয় অর্থ
System Design সফটওয়্যার সিস্টেমের কাঠামো, কম্পোনেন্ট ও যোগাযোগের পরিকল্পনা
Architectural Drivers সেই মূল বিষয়গুলো যা সিস্টেমের আর্কিটেকচারের ওপর সরাসরি প্রভাব ফেলে — যেমন Functional চাহিদা, Quality Attributes, Constraints, ও Business Goals

 


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 *