Əks piramida modeli
Memarlıqda «əks piramida modeli» nədir
Əks piramida modeli sistemlərin və protokolların layihələndirilməsi üsuludur, burada ən vacib və minimal tələb olunan məlumat/funksionallıq birinci və zəmanətli ötürülür, daha az kritik detallar isə mütərəqqi və isteğe bağlı əlavə edilir. Termin jurnalistikadan bir fikir götürür (ən əsası - əvvəlcə), lakin mühəndislik vəzifələrinə uyğunlaşdırılmışdır: kritik yol hər hansı bir şəraitdə işləyir, qalan hər şey - «zənginləşdirmə təbəqələri».
İntuitiv şəkil: yuxarıdan ensiz zirvə «minimum zəmanət müqaviləsi» (MGC), aşağıda - genişləndirmə, optimallaşdırma və resurslar/uyğunluq olduqda sistemin tətbiq etdiyi zəngin xüsusiyyətlər.
Harada tətbiq olunur
Şəbəkə protokolları və API: REST/gRPC/GraphQL, webhucks, hadisə brokerləri.
Streaming kanalları: WebSocket, SSE, Kafka/NATS, RTC.
Xidmətlərin arxitekturası: kritik yol vs. yan təsirləri (audit, analitika, cash-heating).
Mobile/Web müştəriləri: ilk «skelet» UI və açar məlumatlar, sonra tənbəl yükləmə media və tövsiyələr.
Ödəniş və risk zəncirləri: avtorizasiya/rezervasiya - prioritet; antifrod/analiz - asinxron, son tarixlərlə.
Müşahidə: həmişə log/minimum səviyyənin metrikası; trace/profil - sempling.
Modelin prinsipləri
1. Minimum zəmanət müqaviləsi (MGC)
Sahələr və əməliyyatlar dəsti, onsuz ssenarinin mənası yoxdur. Sabitdir, geri uyğundur və birinci keçir.
2. Mütərəqqi zənginləşdirmə
Əlavə sahələr/funksiyalar isteğe bağlı uzantılar (capabilities/feature flags/Negotiation) kimi verilir.
3. Rədd edilmədən deqradasiya
Sistem həddindən artıq yükləndikdə və ya qismən əlçatmazsa, MGC-nin işləmə qabiliyyətini qoruyaraq isteğe bağlı təbəqələri atır.
4. Açıq prioritetləşdirmə və SLA
Hər bir təbəqə üçün - öz SLO (gizli, əlçatanlıq), növbələr və xidmət sinifləri (QoS).
5. Sxemlərin əlavə təkamülü
Yeni sahələr nullable/optional kimi əlavə olunur, müştərilərə zərər vermir; sərt dəyişikliklər - yalnız yeni versiyası vasitəsilə.
6. Laylar üzrə müşahidə
Metrik və loglər kritik olaraq qeyd olunur: 'core.', 'enh.', 'batch.' Sistemin yük altında nə bağışladığını görmək üçün.
«Klassik» laylar piramidası ilə müqayisə
Klassik memarlıq (aşağı - baza, yuxarı - UI) asılılıqları vurğulayır.
Əks piramida çatdırılma qaydasını və əhəmiyyətini vurğulayır: əvvəlcə «core», sonra «nice-to-have».
Model üzrə protokolların layihələndirilməsi
1) REST/HTTP
MGC: minimum resurs/end-point və məcburi sahələr.
Genişləndirmələr:- Məzmun neqasiya ('Accept', 'Prefer'),
- Seçici detal üçün '? include = '/'? fields =' parametrləri,
- Link əvəzinə «ağır» əlavələr (pre-signed URLs).
- Deqradasiya: vaxt ərzində MGC-ni daxili kolleksiyalar olmadan vermək; Böyük cisimlər üçün 206 Partial Content.
- Version: köhnə müqavilələri dəyişdirmədən əlavə sahələr; əsas versiyası yalnız pozucu dəyişikliklər üçün.
2) gRPC
proto: təhlükəsiz nömrələnmiş yeni 'optional' sahələri; silinmiş etiketləri yenidən istifadə etməyin.
Server-side deadlines və per-method QoS (kritik RPC prioritet yuxarıda).
Streaming: ilk mesajlar - başlıqlar/nəticələr, sonra çanta detalları.
3) Hadisə şinləri (Kafka/NATS)
Əsas hadisə: 'event _ type', 'id', 'occurred _ at', minimal biznes sahələri.
Zənginləşdirmə: outbox/CDC və ayrı-ayrı mövzular '-enriched'.
Əvvəlcə, detallar sonra: istehlakçılar iş prosesini nüvədə tamamlaya bilər və detallar asenxron şəkildə yüklənir.
Əks piramida ilə yaxşı birləşən nümunələr
Critical Path First: Sinxron «məcburi» asenkron yan təsirlərdən ayırın.
Write-ahead/Outbox: hadisə faktını qeyd, qalan - fon çatdırılma.
Lazy & Incremental Fetch: pagination, kursorlar, 'If-Modified-Since '/ETag.
Capabilities Discovery: server/müştəri hansı uzantıların dəstəklədiyini açıq şəkildə bildirir.
Backpressure & Budgets: son tarixlər, bir qat üçün CPU/IO limitləri; yük altında ikinci dərəcəli vəzifələrin ləğvi.
SLO-Scoped Caching: «nüvəni» daha aqressiv, zənginləşdirmə - daha qısa/daha incədir.
Tətbiq alqoritmi
1. Ssenarilərin xəritəsi: User Journey yazın və "dəyər anı 'nı seçin.
2. MGC müəyyən: dəyəri nail olmaq üçün minimum sahələr/əməliyyatlar.
3. Laylara bölün: 'core', 'extended', 'analytics/batch'.
4. Hər qat üçün SLO/SLA və QoS təyin edin.
5. Deqradasiyanı layihələndirin: N% arızalar/p95 artımı ilə nə atırıq?
6. Sxemlərin təkamülü: versiya siyasəti, additive-first.
7. Müşahidə: Metrik/Log/Trace-də təbəqə etiketləri, «core» -də alertlər.
8. Test: xaos-mühəndislik və laylar üzrə fault-injection.
9. Başlanğıc və geribildirim: Ficheflags uzantılarını işə salırıq və kanaryada yuvarlayırıq.
Laylar üzrə metriklər və SLO
Core: p95/p99 gecikmə, uğurlu kritik əməliyyatların payı, pozulma müqaviməti.
Extended: zənginləşdirilmiş cavabların faizi, orta yükləmə vaxtı.
Batch/Analytics: real vaxt lag, pəncərə arxasında işlənmiş hadisələr payı.
Biznes metrikası: həddindən artıq yükləmə zamanı «dəyər anına» qədər konvertasiya.
Antipatternlər
«Hamısı core»: uzantılar məcburi olur, deqradasiya mümkün olmur.
Yeni əsas versiyası olmadan MGC pozucu dəyişikliklər.
Gizli kövrəklik: kritik yol xarici «ikinci dərəcəli» asılılıqlara əsaslanır (məsələn, antifrod sinxron çağırışı).
Gizli uzantılar: Müştərilər nə aça/söndürə biləcəyini bilmirlər.
Observability olmaması: sistem «səssizcə» deqradasiya edir və siz harada olduğunu görmürsünüz.
Nümunələr
A. İstifadəçi profili (REST)
MGC: `id`, `display_name`, `avatar_url`, `tier`.
Uzantıları: 'badges []', 'social _ links []', 'recent _ activity []' po '? include ='.
Deqradasiya: Taymaut zamanı MGC və yığma resurslarına (HATEOAS/URLs) istinadlar verin.
B. Ödəniş icazəsi
MGC: avtorizasiyanın nəticəsi (approved/declined), 'transaction _ id', 'amount', 'currency'.
Uzantıları: 3DS telemetriya, risk-skor, geo, partnyor atributu - «payment» hadisəsində asenxron. authorized`.
Deqradasiya: analitika uğursuzluqları zamanı ödəniş gedir, audit/skorinq isə yetişir.
V. Axın kotirovkaları
MGC: son «şəkil» qiymət.
Uzantıları: şüşə dərinliyi, yığılmış göstəricilər - snapshot sonra axın.
Deqradasiya: genişləndirmə yeniləmələrinin tezliyi yük altında düşür, lakin snapshot sabitdir.
Version və təkamül
Additive-first: Yeni sahələr 'optional/nullable', köhnələri qalır.
Semantic Versions: 'v1' nüvəsi üçün; 'v1. x '- uzantıları;' v2 '- MGC dəyişdikdə.
Kodda müqavilələr: JSON Schema/Protobuf + CI-« qırılmayan »difflərin validasiyası.
Təhlükəsizlik və uyğunluq
MGC imzalanmış/təsdiqlənmiş: minimum sahə dəsti kriptoqrafik bütövlüyə malikdir.
Least Privilege: ayrı-ayrı mal-qara ilə zənginləşdirməyə çıxış.
PII/findans: genişləndirmə, açar ayrılması və TTL.
Müşahidə və hata ayıklama
Metrik prefikslər: 'core. request. duration`, `enh. attach. load_time`, `batch. lag`.
Sampling: 100% core səhvləri üçün log; uzantıları sempleme.
Feature flags telemetry: Hansı müştərilərdə hansı uzantıların daxil olduğunu görmək olar.
Giriş çek siyahısı (qısa)
- MGC tərəfindən müəyyən edilmiş və sənədləşdirilmişdir.
- Uzantılar capabilities/flags vasitəsilə elan edilmişdir.
- SLO/QoS/laylar üzrə növbələr.
- Deqradasiya xaos testləri ilə yoxlanılır.
- Sxemlərin təkamülü yalnız «qırılma» olmadan əlavə olunur.
- Metriklər/treys/loqlar təbəqələrə bölünür.
- Uzantıları daxil etmək üçün müştərilər üçün sənədləşdirmə.
FAQ
Əks piramida laylı memarlığı əvəz edirmi?
Yox. Bu ortoqonal prinsipdir: adi təbəqələr üzərində funksionallığı necə çatdırmaq və prioritet etmək olar.
Nə zaman tətbiq edilmir?
Qismən çatdırılma mənasız olduğu oflayn paketlərdə (atomik kriptotokollar) və ya bütün sahələr eyni dərəcədə kritik olduqda.
"graceful degradation 'dan nə fərqi var?
Əks piramida əvvəlcə minimum kifayət qədər müqavilə və onun prioritetlərini layihələndirir və artıq yüklənmiş sistemi «faktdan sonra» xilas etməyə çalışmır.
Yekun
Əks piramida modeli memarlığa və protokollara hər hansı bir yük altında faydalı olmağa kömək edir: əsas şey əvvəlcə və şübhəsiz; qalanları - mümkünsə. Bu kritik yolun əlçatanlığını artırır, fichin çıxarılmasını sürətləndirir və pozulmadan təkamülü asanlaşdırır.