Էկոհամակարգի նորարարությունները առանց դաունթայմի
(Բաժին ՝ Էկոհամակարգ և ցանց)
1) Նպատակը և սկզբունքները zero-downtime
Zero-downtime-նորարարությունները ապահովում են ցանցի և ապրանքների շարունակական աշխատանքը կոդի, միգրացիայի, տվյալների սխեմաների և պարամետրերի փոփոխության ժամանակ։ Հիմնական սկզբունքները
Առաջ/առաջ (backward/forward) համատեղելիությունը մրցույթի սահմաններում։
Աստիճանությունը (progressive divery) «մեծ ոճի» փոխարեն։
Դիտարկումը և շրջադարձը 'մետրերը, հետքերը, արագ արձագանքը։
Idempotenty-ը և անվտանգ ռետրերը ցանցային և հիբրիդային հոսքերի համար։
Ձախողումների մեկուսացումը 'cell-ճարտարապետություն, circuit-breakers, fan-uta լիմիթներ։
2) Արտահանման ռազմավարությունը առանց դաունթայմի
Blue-Green-ը երկու նույնական ապակիներ է (Blue = 108, Green = new)։ Տրամագիծը փոխվում է ատոմային մակարդակում հավասարակշռիչի մակարդակի վրա, որը հնարավորություն ունի ակնթարթային արձագանք։
Canary-ը կոդավորման էքսպորտային մասն է (1 տոկոսը 355 տոկոսն է, 20 տոկոսը 2450 տոկոսը 24100 տոկոսն է) SLO-gatts-ի հետ։
Rolling-ը փամփուշտի հանգույցային նորարարությունն է, որը ստուգում է պատրաստակամությունը (readiness) և drenage-ը։
Shadow/Traffic Mirroring-ը նոր տարբերակի հարցումների հացահատիկ է, առանց պատասխանների ազդեցության։
Feature Flags-ը Ֆիչի բիզնես փոխակերպումն է անփոփոխ API (gradium rollout)։
Dark Launch-ը հեռուստատեսության և ավելացման համար թաքնված տրամաբանության ճյուղեր է։
Առաջարկություն 'քննադատական ծառայությունների համար' canary + rolling + feature flags համադրություն; կողպեքների և API-ի համար 'blue-green կարճ անցումով։
3) Պայմանագրային համատեղելիությունը (API/իրադարձություններ/արձանագրություն)
API 'URI/վերնագրերի տարբերակումը; դաշտերի ավելացումը թույլատրելի է, հեռացումը/վերանվանումը միայն «ավանդի պատուհանի» միջոցով է։
Իրադարձությունները (event-bus) '«միայն ավելացնելով» դաշտերը։ բանալիները անփոփոխ են։ նոր տեսակներ 'որպես նոր թեմաներ/տարբերակներ։
Սխեմաները (Avro/JSON-Schema/Eurobuf) 'սխեմա-կոդեր, «BACKWARD' FOX» համատեղելիությունը։
Ցանցի արձանագրությունը/R2R: version handshake և capability negotiation (կոդերը հայտարարում են աջակցված տարբերակները/ֆիչին)։
Gateways: vN և vN + 1 (transcoding/field mapping )-ի ընթացքում։
Դեպրեքեյթի քաղաքականությունը (օրինակ), հայտարարությունն է, որ նախազգուշացման 90 օրվա ընթացքում նշվում է «deprecated» դրոշը դաշտի/endpoint հեռացումը։
4) Տվյալների ցանկը առանց կանգնելու (Expand no Migrate Nobract)
1. Expand-ը նոր կառուցվածքներ/ինդեքսներ/սյունակներ ավելացնելն է (nullable/c defolt), երկու (dult-write) հին և նոր ձևաչափով։
2. Migrate-ը ֆոնային կոմպոզիցիաներ է, backfill, կոնսիստենտալիզմի վալիդատորներ։ կարդացեք ադապտերի միջոցով, որն աջակցում է երկու սխեմաներին։
3. Medract-ը անջատել ընթերցումը/ձայնագրությունը հին սխեմայում, հեռացնել ռուսական պարտքը «դեպրեքսային պատուհանի» ավարտից հետո։
SQL (պարզեցված)
sql
-- Expand
ALTER TABLE payouts ADD COLUMN payout_ref TEXT NULL;
CREATE INDEX CONCURRENTLY ix_payouts_ref ON payouts(payout_ref);
-- Migrate (batch + idempotent)
UPDATE payouts SET payout_ref = concat('ref_', id) WHERE payout_ref IS NULL;
-- Contract (after compatibility window)
ALTER TABLE payouts ALTER COLUMN payout_ref SET NOT NULL;
Իրադարձությունների գործարքը 'օգտագործեք Disbox (գործարք իրադարձության ձայնագրությամբ) + CDC-ը երաշխավորված առաքման համար։
5) Երկարատև կապեր և ջրահեռացում
Graceful shutdown: SIGTERM-ը խորհուրդ է տալիս դադարեցնել նոր հարցումների ընդունումը նախատեսվում է տեղադրել «readiness = fail»: սպասել Direct Socket/HTTP2/QUIC strims-ին։
Connational infainging-ը հավասարակշռության վրա '"deregister _ entay' 30-120 s, sticky նստաշրջանների միջոցով, ոչ թե IP-ի միջոցով։
Back-pressure: սահմանափակել նոր apstrims p99 _ latency աճի ժամանակ։
6) MSK և հաճախորդների տարբերակումը
SemVer-ի համար; LTS-ճյուղը, որն ունի ընդլայնված աջակցության պատուհան (օրինակ, 12 ամիս)։
Policy: «առնվազն երկու ակտիվ մինորատիվ տարբերակներ»; հեռուստացույց հաճախորդների մասնաբաժնի համար ըստ տարբերակների. ավտոմատ նախազգուշացումներ ապգրեյդի անհրաժեշտության մասին։
Կրիտիկական փոփոխություններ (1934). Անցված դրոշը հին տարբերակների միջոցով դաջվածքից հետո։
7) Ցանցի և հանգույցների նորարարությունները
Soft-fork-ը 'կանոնների ընդլայնումը առանց հին հանգույցների խախտման (capabilities)։
Hard-fork-ը 'նախապես հայտարարված պատուհանը, կրկնակի վալիդացիան, «կանարյան վալիդատորները», պաշտպանությունը «reorg/rollback» հակամարտություններից, Time-71-ը ակտիվացման վրա։
Քրոս-շղթայական ապդեյտներ 'governations կամուրջները փոխանցում են ակտիվացման ազդանշաններ։ ռասինխրոնիզացիայի դեպքում տեղական circuit-breaker է։
8) Կազմաձևը և գաղտնիքները որպես տվյալներ
Կենտրոնացված ռուսական-2019-ը տարբերակով, թվային ստորագրություններով և արձագանքով։
Secrets rotation առանց dountaim: Կրկնակի բանալիներ (old/new), մեկ այլ տերմին; զրոյական հոսքեր KFC/PKI-ի համար։
Feature-flags-ը առանձին սթորում, միացությունների/անջատումների աուդիտ։
9) Pipeline Records և ավտոմատ «խաղացողներ»
Стадии: build → unit → security scan → e2e/stage → shadow → canary → 100%.
Գեյթի կանգառներ
Error-budget burn-rate, p95/p99 latency, error-rate, success-rate իրադարձությունների/վճարումների նվազումը, dead-letter հերթերի աճը։
Avto-state, երբ SLO-ն խախտվում է ցանկացած փուլից։
Օրինակ (կեղծ-YAML)
yaml release:
strategy: canary steps:
- name: shadow traffic_mirror: 5%
gates: [no_data_loss, no_pii_leak]
- name: canary_1 traffic: 1%
gates: [error_rate<0. 2%, p99<400ms]
- name: canary_2 traffic: 10%
gates: [slo_ok_1h, zero_deadletters]
- name: rollout traffic: 100%
gates: [stability_6h]
- name: bake duration: 24h action: finalize_or_rollback
10) Դիտողությունն ու SLO-ն ածխաջրածինների համար
Հիմնական SLI
p95/p99 latency edpointam; error-rate (5xx + fatal 4xx); success-rate իրադարձություններ; գետերի մասնաբաժինը; լաց եղիր։ «relay» մասնաբաժինը P2P-ում; հաճախորդների մասնաբաժինը ըստ տարբերակների։
SLO (օրինակ)
p99 API 24400 ms; error-rate ≤ 0. 2%; success-rate իրադարձություններ թիվ 99։ 5%; lage-ը թիվ 2 s; MTTR արձագանք թիվ 15
Dashbords-ը 'համեմատություն «մինչև/հետո», կանարյան գրաֆիկները, կախվածության քարտեզը (wwww.map), burn-rate 1ch/6h ալտերտերը։
11) Արձագանքներ և «kill-switch»
Avto-rapat 'պահեք վերջին «լավ» արտեֆակտները և եզրերը։ «1-կոճակ» rollback հավասարակշռության վրա (Blue no Green)։
Partial rollback: ficheflag անջատում է նոր տրամաբանությունը, երբ պահպանվում է երկուական։
Eurollback: Միայն «read-paths» -ի համար; «write-paths» -ի համար պաշտպանված կոմպոզիցիաներ են (երբեք մի հեռացրեք հին սյուները մինչև պատուհանի ավարտը)։
Kill-switch: կենտրոնացված դրոշը ռուսական անկայուն ենթահամակարգի համար։
12) Փորձարկում առանց անցքի
Պայմանագրային թեստերը հեշտ են հաճախորդների արտահանման դեմ (consumer-driven)։
Սխեմային թեստեր, որոնք ունեն կոդավորման ստուգում (schema-compat)։
Chaos-թեստերը steijing- ում 'հանգույցների/տարածաշրջանների անջատումը, MST/TURN/KMS/IV դեգրադացիան, «ռետրերի փոթորիկը»։
Բեռի/ռեմարկետի թեստերը 'կանարյան տարածքներ և «տաք» երթուղիներ։
13) Հաղորդակցությունների և կոմպլանսի բաղադրիչները
Ռելիզի նոտաները 'ինչ է փոխվում, ազդեցությունը, պատուհանները/Devrexeit-ը, գործընկերների համար գործողությունները։
SLA պատասխանները պատահականության համար ՝ MTTA 245 րոպե, առաջին ապդեյթ կարգավիճակը 15 րոպե, post-mortem 2472 ռուբլիներ։
Հետքերի աուդիտ 'բոլոր դիֆերենցիալ փոփոխությունները և օրինագծերը դիմումների/բացթողումների, արտեֆակտների ստորագրման հետ։
14) Հատուկ դեպքեր
Հիբրիդային/ֆինանսական հոսքերը 'խիստ իկեմպոտենտություն, idempotency-key, medibox + CDC, «անխուսափելի»։
Socket/strims-ը 'handshake-ի արձանագրության տարբերակը, ռեքոննետը ամփոփման հետ (resume tokens)։
Քաշ/edge: «stale-wile-revalidate», քեշի կրկնակի տարբերակները, TTL-հիգիենան կիսագնդի ընթացքում։
Բջջային հաճախորդները 'ստորների ստացիոնար rollout, հարկադիր apdait-ի վրա։
15) Chek-թերթ zero-downtime
1. Պայմանագրային համատեղելիությունը և սխեմայի լուծումը տրամադրված են։
2. Expand wwww.Migrate Medract-ը և ավտոմատիզացված է։
3. Balault/Ingress աջակցում է blue-green և drenage։
4. Canary-interpline-ը SLO-gatts-ի և Auto-ի հետ։
5. Feature-flags-ը և kill-switch-ը հասանելի են 24/7։
6. Corbox + CDC-ը և idempotention-ը ներառված են բոլոր write ճանապարհների համար։
7. Dashbords «ռելիզը առողջության» և burn-rate ալերտները ակտիվ են։
8. Հաղորդակցությունները և դեպրեքսային քաղաքականությունը հայտարարվել են նախօրոք։
9. Ամեն շաբաթ արձագանքի փորձարկումը։ եռամսյակային chaos-day.
16) Գլոսարիա
Progressive progressivery-ը ֆիչերի ստացիոնար արտադրությունն է, որը վերահսկում է ռիսկերը։
Schema registry-ը սխեմաների տարբերակների տեղադրումն է ռուսական քաղաքական գործիչների հետ։
Windobox/CDC-ը գործարքների իրադարձությունների երաշխավորված հրապարակումն է։
Blue-Green-ը զուգահեռ ապակիներ է, որոնք ունեն ատոմային շարժիչ։
Canary-ը մրցույթի մասնաբաժնի աստիճանական ավելացումն է նոր տարբերակով։
Graceful shutdown/intaining-ը ակտիվ շարժիչների ճիշտ ավարտն է։
Արդյունքն այն է, որ զրոյական դաունտայմը ոչ թե մեկ հնարք է, այլ համակարգ 'պայմանագրեր, սխեմաների համատեղելիություն, հիբրիդային ռազմավարություններ, դիտողություններ, անվտանգ վճարումներ և երաշխավորված արձագանք։ Այս շրջանակին հետևելով ՝ էկոհամակարգը թարմացվում է արագ, կանխատեսելի և առանց օգտագործողների և գործընկերների ցավի։