Əsas məzmuna keçin

Back-of-the-Envelope Hesablamalar

Back-of-the-envelope hesablamalar sistem dizaynında əsas parametrləri tez qiymətləndirmək üçün istifadə olunan təxmini hesablama üsuludur. Bu üsul sistem tələblərini başa düşmək və doğru arxitektura seçmək üçün vacibdir.

Nə üçün lazımdır?

  • Tez qiymətləndirmə: Sistem tələblərini sürətlə təyin etmək
  • Resurs planlaması: Lazımi resursları təxmin etmək
  • Bottleneck aşkarlama: Potensial problemləri erkən tapmaq
  • Dizayn seçimi: Fərqli dizayn variantlarını müqayisə etmək
  • Feasibility yoxlama: Sistemin həyata keçirilə bilinməsini yoxlamaq

Əsas Parametrlər

  • QPS (Queries Per Second): Saniyədə sorğu sayı
  • Storage: Məlumat saxlama tələbləri
  • Bandwidth: Şəbəkə keçiricilik tələbləri
  • Latency: Cavab verməsinə tələb olunan vaxt
  • Resources: Server, CPU, RAM tələbləri

Hesablama Növləri

  • Load Estimation: Trafik və istifadəçi yükü təxmini
  • Storage Estimation: Verilənlər bazası və faylların həcmi
  • Bandwidth Estimation: Şəbəkə trafik həcmi
  • Latency Estimation: Cavab sürəti təxmini
  • Resource Estimation: Server və avadanlıq sayı

Əsas Rəqəmlər (Jeff Dean)

  • L1 cache: 0.5 ns
  • L2 cache: 7 ns
  • RAM: 100 ns
  • SSD random read: 150 µs
  • Disk seek: 10 ms
  • Network (same datacenter): 500 µs
  • Network (intercontinental): 150 ms

Məlumat Vahidləri

  • KB: 10³ = 1,000 bytes
  • MB: 10⁶ = 1,000,000 bytes
  • GB: 10⁹ = 1,000,000,000 bytes
  • TB: 10¹² = 1,000,000,000,000 bytes
  • PB: 10¹⁵ bytes

Availability Rəqəmləri

  • 99%: 3.65 gün downtime/il
  • 99.9%: 8.8 saat downtime/il
  • 99.99%: 52.6 dəqiqə downtime/il
  • 99.999%: 5.3 dəqiqə downtime/il

Hesablama Nümunəsi: Twitter Kimi Platform

Fərziyyələr:

  • 300 milyon aylıq aktiv istifadəçi
  • 50% istifadəçi gündəlik aktiv
  • Hər istifadəçi gündə 2 tweet yazır
  • 10% tweet media məzmun daşıyır
  • Data 5 il saxlanılır

Hesablamalar:

QPS Hesablama:
DAU = 300M × 50% = 150M
Tweet QPS = 150M × 2 ÷ 86,400 saniyə ≈ 3,500
Peak QPS = 2 × 3,500 ≈ 7,000

Storage Hesablama:
Tweet məzmunu = 64 byte (ID) + 140 byte (text) ≈ 200 byte
Media = 1 MB (10% tweet)
Gündəlik media = 150M × 2 × 10% × 1MB = 30 TB
5 illik storage = 30 TB × 365 × 5 ≈ 55 PB

Hesablama Üsulları

  • Yuvarlaqlaşdırma: 99,987 ÷ 9.1 → 100,000 ÷ 10 = 10,000
  • Fərziyyələri yazmaq: Bütün təxmini rəqəmləri qeyd et
  • Vahidləri göstərmək: "5" əvəzinə "5 MB" yazmaq
  • Təcrübə: QPS, storage, cache hesablamalarını məşq etmək

Hesablama Strategiyaları

  • Order of Magnitude: 10-un dərəcələri ilə təxmin
  • Analogy: Tanış sistemlərlə müqayisə
  • Dimensional Analysis: Ölçü vahidləri ilə əlaqələr
  • Rule of Thumb: Sahə üzrə tanınan qaydalar
  • Benchmarking: Sənaye standartları ilə müqayisə

Əsas Problemlər

  • Dəqiqlik çatışmazlığı: Təxmini hesablamalar həmişə dəqiq olmur → Mümkün qədər real məlumat istifadə et
  • Fərziyyələrə asılılık: Yanlış fərziyyələr səhv nəticələr verir → Fərziyyələri təsdiqləmək lazımdır
  • Məhdud əhatə: Bütün mürəkkəbliyi əhatə etmir → Detallı analiz üçün başqa üsullarla tamamla
  • Təcrübə asılılığı: Nəticələr mühəndisin təcrübəsindən asılıdır → Komanda ilə müzakirə et
  • Nazik faktortların atlanması: Vacib detallar gözləm atına bilir → Checklist istifadə et
graph TB
Problem[🎯 Problem] --> Assumptions[📝 Fərziyyələr]
Assumptions --> Calculations[🔢 Hesablamalar]

subgraph "Hesablama Növləri"
QPS[📊 QPS Estimation<br/>Saniyədə sorğu]
Storage[💾 Storage Estimation<br/>Məlumat həcmi]
Bandwidth[🌐 Bandwidth Estimation<br/>Şəbəkə keçiriciliyi]
Latency[⏱️ Latency Estimation<br/>Cavab sürəti]
Resources[🖥️ Resource Estimation<br/>Server sayı]
end

Calculations --> QPS
Calculations --> Storage
Calculations --> Bandwidth
Calculations --> Latency
Calculations --> Resources

subgraph "Əsas Rəqəmlər"
Memory[💾 RAM: 100ns]
Disk[💿 Disk seek: 10ms]
Network[🌐 Network: 500µs]
Cache[⚡ L1 cache: 0.5ns]
end

subgraph "Praktik Nümunə"
Twitter[🐦 Twitter Platform]
Users[👥 300M MAU]
DAU[📱 150M DAU]
Tweets[📝 3,500 QPS]
Storage2[💾 55 PB/5 years]
end

Twitter --> Users
Users --> DAU
DAU --> Tweets
Tweets --> Storage2

style Problem fill:#e1f5fe
style Calculations fill:#f3e5f5
style Twitter fill:#e8f5e8
style Memory fill:#fff3e0
style Disk fill:#fff3e0
style Network fill:#fff3e0
style Cache fill:#fff3e0