5. Most important quality attributes: Performance, Scalability, Availability, Fault Tolerance & High Availability, SLA, SLO, SLI

Software Architecture-এর সবচেয়ে গুরুত্বপূর্ণ Quality Attributes — বিশেষ করে Performance, Scalability, Availability, Fault Tolerance, High Availability, এবং SLA, SLO, SLI। আমি বাস্তব উদাহরণ ও কিছু গণিত (calculation) সহ বোঝাবো।

১. Performance (পারফরম্যান্স)

🔹 সংজ্ঞা:

Performance হলো সিস্টেম কত দ্রুত বা দক্ষতার সাথে কাজ করছে তা পরিমাপ করার ক্ষমতা।
👉 এটি মূলত রেসপন্স টাইম, থ্রুপুট এবং রিসোর্স ইউটিলাইজেশন এর মাধ্যমে মাপা হয়।

🔹 উদাহরণ:

ধরা যাক, আপনার E-Commerce ওয়েবসাইট আছে।

  • Goal: প্রতিটি পেজ লোড টাইম ২ সেকেন্ডের মধ্যে থাকতে হবে।

মাপার উপায়:

  • Response Time: ইউজারের রিকোয়েস্ট থেকে সার্ভারের রেসপন্স পাওয়া পর্যন্ত সময়।

  • Throughput: প্রতি সেকেন্ডে কত রিকোয়েস্ট সার্ভার হ্যান্ডেল করতে পারে।

গাণিতিক উদাহরণ:

  • ধরুন, প্রতি সেকেন্ডে ১০০০ রিকোয়েস্ট আসে

  • সার্ভারের রেসপন্স টাইম ১.৫ সেকেন্ড

  • Throughput = 1000 req/sec (সফলভাবে হ্যান্ডেল করা)

অর্থাৎ সার্ভার এই লোডের জন্য পারফরম্যান্স মানদণ্ড পূরণ করছে।


🔹 ২. Scalability (স্কেলেবিলিটি)

🔹 সংজ্ঞা:

Scalability হলো সিস্টেমের ক্ষমতা বড় লোড, ইউজার বা ডেটার জন্য প্রসারিত করার।

  • Vertical Scaling: একটি সার্ভারের রিসোর্স বাড়ানো (CPU, RAM)

  • Horizontal Scaling: সার্ভারের সংখ্যা বাড়ানো (Load Balancer ব্যবহার করে)

🔹 উদাহরণ:

ধরা যাক, আপনার সিস্টেম ১০০০ concurrent users হ্যান্ডেল করতে পারে।

  • যদি আপনি ১০,০০০ concurrent users হ্যান্ডেল করতে চান, তখন horizontal scaling করতে হবে।

Math Example:

  • একটি সার্ভার 1000 requests/sec হ্যান্ডেল করতে পারে

  • যদি 5টি সার্ভার যুক্ত করি → Total Capacity = 5 × 1000 = 5000 requests/sec

  • যদি 10,000 requests/sec চাই → 10 সার্ভার লাগবে

স্কেলেবিলিটি মানে, লোড বাড়লেও সিস্টেমের পারফরম্যান্স ধরে রাখা।


🔹 ৩. Availability (উপলব্ধতা)

🔹 সংজ্ঞা:

Availability হলো সিস্টেম কত সময় ইউজারের জন্য online বা accessible থাকে।

গাণিতিকভাবে:

Availability (%)=UptimeUptime + Downtime×100\text{Availability (\%)} = \frac{\text{Uptime}}{\text{Uptime + Downtime}} \times 100

🔹 উদাহরণ:

  • ধরুন, একটি সিস্টেম 1 বছর = 365 দিন = 8760 ঘন্টা

  • Downtime = 8 ঘন্টা

Availability=8760−88760×100≈99.91%Availability = \frac{8760-8}{8760} \times 100 \approx 99.91\%

সুতরাং, 99.9% availability মানে বছরে ~৮.৭ ঘন্টা downtime অনুমোদিত।


🔹 ৪. Fault Tolerance & High Availability

🔹 Fault Tolerance

সিস্টেমের ক্ষমতা ত্রুটি বা ব্যর্থতা ঘটলেও কাজ চালিয়ে যাওয়ার

Example:

  • একটি সার্ভারের HDD failure হলে, অন্য সার্ভারে ডেটা থেকে সার্ভিস চলবে।

  • Techniques: Redundancy, Replication

🔹 High Availability (HA)

সিস্টেমের uptime নিশ্চিত করা (downtime কমানো)।

  • সাধারণত HA = Fault Tolerance + Load Balancing + Failover Mechanism

Math Example:

  • দুটি redundant সার্ভার (active-passive)

  • Each server availability = 99%

HAtotal=1−(1−0.99)2=0.9999=99.99%HA_{total} = 1 – (1-0.99)^2 = 0.9999 = 99.99\%

অর্থাৎ, দুটি সার্ভার থাকলে সিস্টেম availability বাড়ে।

SLA (Service Level Agreement)

সংজ্ঞা:

SLA হলো সার্ভিস প্রোভাইডার এবং ক্লায়েন্টের মধ্যে চুক্তি
এটি লিখিত চুক্তি যেখানে নির্দিষ্ট করা থাকে, সার্ভিস কেমন হবে, কতক্ষণ অনলাইন থাকবে, এবং কোনো ব্যর্থতার ক্ষেত্রে কি প্রতিকার থাকবে।

উদাহরণ:

ধরা যাক, আপনি একটি Cloud Hosting Provider এবং আপনার ক্লায়েন্ট চায়—

  • সার্ভিস 99.9% uptime গ্যারান্টি দেবে

  • প্রতিটি support ticket-এ response time ≤ 1 ঘন্টা হবে

  • কোনো downtime হলে প্রতি ঘণ্টায় $100 credit ক্লায়েন্টকে ফেরত দিতে হবে

এটি হলো SLA — অফিসিয়াল চুক্তি যা ক্লায়েন্টের সাথে স্বাক্ষরিত।

SLO (Service Level Objective)

সংজ্ঞা:

SLO হলো SLA পূরণের জন্য নির্ধারিত লক্ষ্য বা উদ্দেশ্য

  • এটি সাধারণত একটি পরিমাপযোগ্য মেট্রিক দিয়ে লেখা হয়।

  • SLO ঠিক রাখলে SLA পূরণ হওয়ার সম্ভাবনা বেড়ে যায়।

উদাহরণ:

উপরের SLA অনুযায়ী SLO হতে পারে:

  • Uptime SLO: সার্ভিসের uptime ≥ 99.9%

  • Response SLO: সব support ticket-এ response ≤ 1 hour

  • Error Rate SLO: প্রতি মাসে সার্ভিস error rate ≤ 0.1%

SLO হলো SLA-এর মধ্যবর্তী লক্ষ্য যা সার্ভিসের মান বজায় রাখে।


🔹 Ganitik (Math) উদাহরণ:

ধরা যাক, এক মাসে 30 দিন = 720 ঘন্টা সার্ভিস চালু থাকার কথা।

  • SLO অনুযায়ী uptime ≥ 99.9%

Downtimeallowed=720×(1−0.999)=0.72 hours≈43.2minutesDowntime_{allowed} = 720 \times (1 – 0.999) = 0.72 \text{ hours} \approx 43.2 minutes

অর্থাৎ, এই মাসে 43.2 মিনিটের বেশি downtime হলে SLO পূরণ হয়নি।

SLI (Service Level Indicator)

সংজ্ঞা:

SLI হলো সেই মেট্রিক যা SLO পরিমাপ করে

  • এটি হচ্ছে পর্যবেক্ষণযোগ্য ও পরিমাপযোগ্য মান

  • উদাহরণ: uptime %, response time, error rate, latency ইত্যাদি।

উদাহরণ:

  • Uptime SLI: 99.85%

  • Response Time SLI: 0.8 sec average

  • Error Rate SLI: 0.05%

SLI হলো পরিসংখ্যান বা ডেটা, যা SLO-এর সাথে তুলনা করে দেখা হয়।

বাস্তব উদাহরণ — Full Cycle

ধরা যাক, একটি Online Food Delivery System:

ধাপ উদাহরণ
SLA সার্ভিস 99.9% uptime এবং support ticket 1 ঘন্টার মধ্যে response। কোনো downtime হলে ক্লায়েন্টকে $100 credit।
SLO এই মাসে সার্ভিস uptime ≥ 99.9%, response time ≤ 1 hour, error rate ≤ 0.1%
SLI সার্ভিসের প্রকৃত uptime = 99.86%, average response time = 0.9 hour, actual error rate = 0.08%

Math analysis:

  • Allowed downtime (SLO) = 720 × 0.001 = 0.72 hr ≈ 43.2 min

  • Actual downtime (SLI) = 1 hr → SLO পূরণ হয়নি

  • কিন্তু, যদি downtime ≤ 43.2 min হয় → SLO পূরণ, SLA গ্যারান্টি বজায় থাকে।

Key Points to Remember

  1. SLA = চুক্তি (Contract)

  2. SLO = লক্ষ্য (Target)

  3. SLI = মেট্রিক (Actual Measurement)

🔹 সহজভাবে:

SLI = সিস্টেমের performance মাপা মান
SLO = সেই performance-এ থাকা লক্ষ্য
SLA = চুক্তি যা লক্ষ্য অনুযায়ী ক্লায়েন্টকে value দেবে

[ SLI (Metric) ] → পরিমাপ করে দেখা হয়
|
v
[ SLO (Objective) ] → SLA meet হচ্ছে কিনা নির্ধারণ করে
|
v
[ SLA (Agreement) ] → ক্লায়েন্টের সাথে চুক্তি

সংক্ষেপে

Attribute সংজ্ঞা Key Metric উদাহরণ
Performance সিস্টেম কত দ্রুত কাজ করে Response Time, Throughput Page load < 2 sec
Scalability লোড বা ইউজার বাড়লেও পারফরম্যান্স ধরে রাখা Requests/sec, Users 1000→10,000 users
Availability সিস্টেম কতো সময় অনলাইন Uptime % 99.9% → 8.7 hr downtime/year
Fault Tolerance ত্রুটি হলেও কাজ চালানো Redundancy HDD failure, system runs
High Availability সর্বোচ্চ uptime নিশ্চিত করা Multi-server failover HA 99.99%
SLA চুক্তি অনুযায়ী সার্ভিস স্তর Agreement 99.9% uptime SLA
SLO SLA পূরণের জন্য লক্ষ্য Target metric Uptime ≥ 99.9%
SLI SLO পরিমাপের মেট্রিক Metric Actual uptime %

 


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 *