System Design: Modullar
Proqram sistem dizaynına təkrarlana bilən metod kimi yanaşır: tələbləri və keyfiyyət atributlarını müəyyən etmək, həcmi qiymətləndirmək, API və data modelini qurmaq, seçimləri trade-off ilə əsaslandırmaq. Metod 6–8 klassik case study üzərində tətbiq olunur və hər biri yazılı trade-off təhlili ilə bitir.
01
Tələblər və keyfiyyət atributları
Dizayna başlamazdan əvvəl nəyi həll etdiyimizi və nəyi etmədiyimizi dəqiqləşdiririk.
- Funksional və qeyri-funksional tələblər
- Əlçatanlıq, gecikmə, dayanıqlılıq və uyğunluq atributları
- Məhdudiyyətlər və fərziyyələrin açıq yazılması
- SLI/SLO anlayışı
- Scope-u məhdudlaşdırmaq
Laboratoriya: Qeyri-müəyyən bir tapşırıq üçün tələblər və fərziyyələr siyahısı yazıb qeyri-məqsədləri müəyyən etmək.
02
Qiymətləndirmə
Dəqiq rəqəm yox, qərara təsir edən böyüklük sırası lazımdır.
- Sorğu/saniyə və peak faktoru
- Saxlama və bandwidth hesabı
- Oxuma/yazma nisbəti
- Hesablamanın qərara təsiri
- Fərziyyələrin açıq göstərilməsi
Laboratoriya: Seçilmiş sistem üçün trafik və saxlama qiymətləndirməsi hazırlayıb nəticənin hansı qərara təsir etdiyini yazmaq.
03
API və data dizaynı
Sorğu nümunələrindən başlayıb API və data modelini onlara uyğun qururuq.
- Resurs və əməliyyat dizaynı
- Pagination, idempotency və rate limit
- Normallaşma və denormallaşma
- Index və sorğu nümunələrinin uyğunluğu
- Schema təkamülü
Laboratoriya: Verilmiş sistem üçün API müqaviləsi və cədvəl sxemi çıxarıb əsas sorğuların necə icra olunduğunu izah etmək.
04
Caching və queue-lar
Gecikməni azaldan və yükü hamarlayan iki əsas alətin dəyərini və riskini qiymətləndiririk.
- Cache-aside, write-through, write-behind
- Invalidasiya və stale data
- Cache stampede və qorunma
- Queue ilə yükün ayrılması və backpressure
- Dead letter və təkrar cəhd
Laboratoriya: Oxuma-ağır servisə cache əlavə edib stale data və stampede ssenarilərini simulyasiya etmək.
05
Storage seçimi və miqyaslanma
İş yükünə uyğun saxlama növünü seçir və oxuma/yazma miqyaslanması variantlarını müqayisə edirik.
- Relational, key-value, document, search və object storage
- Read replica və replikasiya gecikməsi
- Sharding açarı və re-sharding çətinliyi
- Hot key problemi
- CAP və PACELC-in praktik mənası
Laboratoriya: Eyni iş yükü üçün iki storage variantını müqayisə edən qısa qərar sənədi yazmaq.
06
Uyğunluq və uğursuzluq rejimləri
Sistemin harada və necə sınacağını əvvəlcədən düşünürük.
- Strong, eventual və causal consistency
- Single point of failure axtarışı
- Timeout, retry və idempotency
- Qismən uğursuzluq və degradasiya strategiyası
- Disaster recovery anlayışı: RPO və RTO
Laboratoriya: Dizayn olunmuş sistem üçün uğursuzluq rejimləri cədvəli hazırlayıb hər biri üçün cavab və zərər qiymətləndirməsi yazmaq.
07
Case study-lər I: URL shortener, rate limiter, notification
Metodu nisbətən məhdud scope-lu üç klassik məsələyə tətbiq edirik.
- URL shortener: ID generasiyası, yönləndirmə yükü, analitika
- Rate limiter: token bucket, sliding window, paylanmış sayğac
- Notification sistemi: kanallar, prioritet, təkrar cəhd
- Hər üçündə qiymətləndirmə və trade-off təhlili
Laboratoriya: Üç məsələdən ikisini seçib tam yazılı dizayn sənədi və trade-off təhlili hazırlamaq.
08
Case study-lər II: payments ledger, feed, search
Uyğunluq, miqyas və axtarış baxımından daha çətin üç məsələni təhlil edirik.
- Payments ledger: double-entry, idempotency, audit izi
- Feed: fan-out on write və read, hot istifadəçilər
- Search: invert index, indeksləmə gecikməsi, relevantlıq
- Hər üçündə uyğunluq və uğursuzluq təhlili
Laboratoriya: Üç məsələdən birini seçib dizayn sənədi yazmaq və həmyaşıd review-dan sonra yenidən işləmək.