High Availability и SLA
High Availability и SLA
1) Терминдер және бизнеспен байланыс
SLI (Service Level Indicator) - сервистің өлшенетін көрсеткіші (мысалы, 2xx/3xx ≤ T мс табысты сұраныстардың үлесі).
SLO (Service Level Objective) - SLI нысаналы мәні (мысалы, "99. Сұраулардың 95% ≤ 300 мс").
SLA (Service Level Agreement) - клиент алдындағы келісімшарттық міндеттеме (бұзушылық кезіндегі айыппұлдар/кредиттер).
HA (High Availability) - SLO/SLA орындауға мүмкіндік беретін сәулеттік және операциялық шаралар.
Қағидат: SLA SLO-ға, ал SLO - бақыланатын SLI-ге сүйенеді. SLA-да өлшемейтін нәрсені уәде ете алмайсыз.
2) «Тоғыздар» және қол жетімділік математикасы
Кезеңдегі қолжетімділік = 'жұмыс уақыты/жалпы _ уақыт'. Бағдарлар (бір жылға):Қол жетімділік композициясы
Тізбекті тізбек («қызыл жол» бойынша тәуелділік): 'A _ total = Π A_i' (әрбір компонент жиынтықты азайтады).
Қатарлас актив-актив тораптары: 'A _ total = 1 − Π (1 − A_i)' (резерв жиынтықты арттырады).
3) Нені өлшеу керек (дұрыс SLI)
Пайдаланушы көзқарасы: негізгі операциялардың сәтті аяқталуы (login, депозит, чек-аут) және олардың жасырындылығы p99.
Сағат дәлізі: жылжымалы терезелер бойынша (5/30/60 мин) және өңірлер бойынша біріктіріңіз.
Ерекшеліктер: «жоспарланған терезелер» SLO-да ескеріледі, ал SLA-да - егер келісімшартта осылай деп айтылса ғана.
- Қол жетімділік: сәтті жауаптардың үлесі ≤ Т.
- Сапасы: p95/p99 latency.
- Құрамдас: «табысты депозиттердің үлесі ≤ 5 с».
4) Error Budget және жану жылдамдығы
Error Budget = `1 − SLO`. 99 үшін. 95% ай сайынғы терезе 0 береді. 05% қате/бос тұру.
Burn-rate: бюджет шығысының жылдамдығы (мысалы, 4 × сіз 6 сағаттың ішінде күндік лимитті жейсіз дегенді білдіреді).
Саясат: тез жану кезінде - релиздерді тоқтату, тұрақтандыруға назар аудару, feature-freeze.
5) HA архитектурасы: тораптан аймаққа дейін
5. 1 Торап/сервис
N + 1: кем дегенде бір артық реплика (Deployment ≥ 2, PDB, anti-affinity).
Ресурстарды оқшаулау: CPU/RAM/IO лимиттері, басымдықтар (PriorityClass).
Graceful shutdown/drain: Қайта бастау кезінде сұраулар үзілмеген.
5. 2 Аймақ/өңір
Multi-AZ: әртүрлі аймақтардағы репликалар, кросс-аймақтық теңгерім, тәуелсіз қоректендіру/желі.
Multi-region: актив-актив (қиын: деректер/консистенттілік) немесе актив-пассив (қарапайым: RPO-дан жоғары).
Деректер: ақша/тапсырыстар үшін CP (кворум/RAFT), кэш/витриналар үшін EC/AP.
5. 3 Желілік қабат және периметр
L7-LB с health-checks, retry/timeout/circuit-breaking.
GSLB/DNS/Anycast жаһандық трафик үшін, қысқа TTL.
Egress-бақылау және сыртқы PSP/провайдерлерге дейінгі істен шығуға төзімді арналар.
6) Құлау орнына тозу
Feature kill-switch (фича-жалаушалар): сыни емес өшіру, «қызыл жолды» сақтау.
Жеңілдетілген жолдарға ауысу: синхрон → асинхрон/кезек, «өңдеуге қабылданды».
Rate-limit/квоталар: барлығын түсіргеннен гөрі трафикті шектеген жақсы.
Stale режимдері: origin қол жетімді болмаған жағдайда кэшті/статикалық деректерді беру.
7) Тәуелділіктерді басқару
Тәуелділік картасы (service map): тікелей/транзитті, сындарлы, әрқайсысының SLO.
Осал буындар: SLA-сыз сыртқы провайдер кэшпен/кезекпен/телнұсқамен айналады.
Bulkhead-оқшаулау: әртүрлі қосылыстар пулы/баяу бағыттар үшін квоталар.
Timeouts> Retries: қысқа таймауттар, демпотенттік операциялар үшін ең көп дегенде 1 ретрай.
8) Операциялар және өзгерістер
Change management: канарейка/blue-green, SLO-гейтс арқылы релиздер, автоматты кері қайту.
Жоспарланған терезелер: ұзындығын, кезеңділігін, коммуникациясын стандарттаңыз.
Оқиғалар: рөлдер (IC/Comms/Tech/DB), runbook 'и, түзетуші әрекеттері бар постмортемалар.
Секьюрити-ивенттер: компрометация кезінде - «паника-режим» (read-only/токендер/ротация/блоктау).
9) Бақылау және алертинг
Әрбір маршрутқа RED-модель (Rate, Errors, Duration).
SLI-дашбордтар: өңір бойынша және клиенттік сегмент бойынша қолжетімділік/жасырындылық.
Burn-rate алерта: жылдам (1h) 14. 4 ×), баяу (6h, 2 ×) - SLO үзілгенге дейінгі сигнал.
(Exemplars) даналары: метрикадан trace_id бойымен трассаға өту.
Синтетика: сыртқы нүктелерден алынған сынамалар (периметр, төлем флоу).
10) Істен шығуға төзімділік тестілері
Game-days: АЗ/аймақтарды ажырату сценарийлері, ДБ/кэштің тозуы, сыртқы провайдерлердің істен шығуы.
Chaos-құралдары: желі фолттары (latency/loss), kill-pods, CPU/IO қайта тиеу.
DR-drills: Tier-0 жүйелер үшін RTO/RPO өңдеу («Бэкаптар және DR» қараңыз).
11) SLA жобалау
«Қол жетімділік» анықтамасы: оқиға деп есептелетін (5xx, уақыт> T, домен қателері).
Есептеу терезесі: ай/тоқсан; жоспарлы жұмыстарды қосу/алып тастау.
Кредиттер/айыппұлдар: шәкіл (мысалы, 99. 9–99. 99% - X%, төмен - Y%).
Клиенттің міндеттері: интеграция, ретра, ақылға қонымды шектерде, лимиттер.
Нотификация және климаттар рәсімі: мерзімдері, форматы, дәлелдеу базасы (логи/метрика).
Форс-мажор: заңды тұжырым және шекаралар.
- "SLI бойынша API қолжетімділігі "табысты ≤ 500 мс" 99-дан төмен емес. күнтізбелік айда 95%. Жоспарлы терезелер (48 сағат бұрын жарияланған 60 мин/айға дейін) алынып тасталды. 99-да. 90–99. 95% - кредит 5%; 99. 80–99. 90% — 10%; <99. 80% — 25%.»
12) Тоғызыншы жылдардың экономикасы
Әрбір қосымша «тоғыз» шығыстарды желілік емес өсіреді (қосарлы өңірлер, кворумдар, провайдерлер дублдері, 24 × 7). Tiering SLO қолданыңыз:- Tier-0 (ақша/тапсырыстар): 99. 95–99. 99%, мульти-AZ, DR дайын.
- Tier-1 (негізгі фичтер): 99. 9–99. 95%, мульти-AZ.
- Tier-2 (сыни емес): 99. 5–99. 9%, оқыс оқиғалар кезінде тоқтың тозуына жол беріледі.
13) Қабаттар бойынша HA паттерндері
Периметр: CDN/edge, multi-CDN немесе GSLB, WAF, rate-limit.
Теңгерім: L7 outlier-ejection, таймауттар/ретрациялар, sticky/consistent-hash.
Қосымшалар: көлденең скейл, readiness/liveness, PDB, topology spread.
Деректер: leader + replicas, CP үшін quorum, L2 кэш, idempotency, PITR.
Кезектер: зеркалау/мультикластер, дедуп, DLQ.
Құпиялар/конфигалар: GitOps, атомарлық снапшоттар, rollback.
14) Қарсы үлгілер
Өлшеу құралдары мен сыртқы синтетикасыз SLA.
SPOF ретінде бірыңғай аймақ/кластер.
Бақылаусыз ретрациялар → «өзі-DDoS».
Ыстық жолдағы ұзақ транзакциялар/мутекстер.
«Ауыр» көші-қон/канареяларсыз релиздер және кері қайтару жоспары.
Оқиға кезінде runbook және стейкхолдерлермен сөйлесудің болмауы.
15) Енгізу чек-парағы (0-60 күн)
0-15 күн
Сыни пайдаланушы SLI-ді анықтау, Tier-0/1/2 деңгейлері бойынша SLO-ны орнату.
Burn-rate алаңдарын, SLO-дашбордтарын, периметрді синтетикалық тексеруді қосу.
SPOF: ≥ 2 реплика, PDB, фронттар мен сыни БД үшін multi-AZ алып тастау.
16-40 күн
SLO-гейтингі және авто-қайтарымы бар канареялық релиздерді енгізу.
Тәуелділік картасы + әрбір «қызыл жол» бойынша квоталар/пулдар/таймауттар/СВ.
Жоспарлы терезелер мен коммуникациялардың регламенті, инцидент-хабарламалардың үлгілері.
41-60 күн
Game-day: AZ өшіру, сыртқы провайдердің істен шығуы, трафиктің «бурсты».
Факті бойынша SLA және кредиттерді қайта есептеу, клиенттерге есептерді жариялау.
« тоғыздың құны» қайта қарау және тир бойынша қайта салу.
16) Жетілу метрикасы
Сындарлы бағыттардың 95% ≥ SLI/SLO және burn-rate алерталары бар.
SLO қателері релиздерді авто-мұздатумен (policy) қатар жүреді.
Multi-AZ қамту Tier-0 = 100%, табысты DR-drills ≥ 1/тоқсан.
«Детектирлеу → митигация» уақыты p50 <5 мин. p95 <15 мин.
«Релиздік инциденттер» корреляциясы - жүргізіледі және қысқартылады (rollback rate ↓).
Инциденттер/кредиттер туралы жария есеп - N жұмыс күні ішінде.
17) Мысалдар мен сниппеттер
Burn-rate (ереже идеясы):- Жылдам: "SLO 99. 95%, терезе 1 сағ. burn ≥ 14. 4× → page on-call».
- Баяу: «терезе 6 сағат, burn ≥ 2 × → ticket & мониторинг».
yaml circuit_breakers:
thresholds:
- max_connections: 200 max_pending_requests: 100 max_requests: 1000 max_retries: 1 outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s max_ejection_percent: 50
SLO талдауы бар канарейка (Argo Rollouts, идея):
yaml analysis:
templates:
- name: slo-burn metrics:
- name: error-rate successCondition: result < 0. 005 provider: prometheus
SLI тұжырымының мысалы:
SLI: fraction_of_good_requests = good(HTTP 2xx/3xx ≤ 500ms) / all(requests)
SLO: ≥ 99. 95% per calendar month, per region
18) Қорытынды
High Availability - бұл тек кластерлер мен репликалар ғана емес, сәулет, процестер мен метрикалардың келісілген жиынтығы: нақты SLI/SLO, шынайы SLA, экономикалы «тоғыздар», құлдыраудың орнына құлдырау, таймауттар/квоталар тәртібі, канареялық релиздер, тұрақты жаттығулар және ашық коммуникация. Өлшенетін және басқарылатын қолжетімділікті жасаңыз - ол лотерея емес, бәсекелестік артықшылыққа айналады.