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
- 
SLA = চুক্তি (Contract)
 - 
SLO = লক্ষ্য (Target)
 - 
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 % |