GH GambleHub

Zero-Downtime 2019

(Բաժին ՝ Ճարտարապետություն և Արձանագրություններ)

1) Ի՞ նչ է Zero-Downtime-ը և ինչու՞ դա անհրաժեշտ է։

Zero-Downtime-ը (ZDT) ծրագրի նոր տարբերակներ արտադրելու միջոց է, առանց օգտագործողների և առանց հարցումների կորստի։ Նպատակները

Զրոյական պարզ հաճախորդների և ինտեգրումների համար։

Կանխատեսելի օրինագծերը, արագ արձագանքը և կառավարվող ռիսկը։

SLO/SLI (լատենտ, սխալներ, հասանելիություն) պահպանումը պայմանագրերի սահմաններում։

ZDT-ի բանալին ոչ թե մեկ «կախարդական» տեխնոլոգիա է, այլ առաքման, տվյալների և գրագետ ուղղության պաթոգենների համադրություն։

2) Zero-Downtime հիմնական սկզբունքները

1. Տարբերակների համատեղելիությունը 'նոր և հին տարբերակները միևնույն ժամանակ պետք է ճիշտ մշակեն կոդերը և տվյալները։

2. Վիրահատությունների համադրելիությունը 'վերարտադրումը չպետք է կոտրի վիճակը։

3. Graceful shutdown (graceful shutdown) և drenage։

4. Առողջության կոպիտ ստուգումը 'readiness/liveness թեստեր, health-endpoints։

5. Որպես քաղաքացիների առաջին դասարան 'rollback-ը ավելի հեշտ և արագ է, քան hotfix-ը։

6. By design: www.ru, մեկ dashbords, SLO-ի ալտերտեր։

7. Ավտոմատիզացիա 'կոդավորման և արձագանքման սցենարներ' կոդ, ոչ թե ձեռքով հրահանգներ։

3) Առաքման արտոնագրերը առանց դաունթայմի

3. 1 Rolling Update

Աստիճանաբար մենք հանում ենք հին տարբերակի ինստանցների մի մասը, դրանք նորարարում ենք նոր և վերադառնում փամփուշտին։

Պլյուսներ 'տնտեսապես ենթակառուցվածքով, պարզապես k8s/ASG-ում։

Մինուսներ 'որոշ ժամանակ կլաստերը աշխատում է երկու տարբերակների հետ միաժամանակ (version skew)։

3. 2 Blue-Green

Երկու ամբողջական պրոդ-ապակիներ 'ակտիվ (Blue) և թեկնածուն (Green)։ Շարժումը ատոմային ֆլիպ է։

Պլյուսներ ՝ ակնթարթային արձագանք, մաքուր մեկուսացում։

Մինուսները ՝ ենթակառուցվածքի ծախսերը, ավելի բարդ են ստատեֆուլից։

3. 3 Canary/Առաջադիմական rollout

Մենք տալիս ենք մրցույթի փոքր մասը (1-5-10-25-50-100%) նոր տարբերակի հետ։

Պլյուսներ ՝ նվազագույն blast radius, 71-driven լուծումներ։

Մինուսներ 'անհրաժեշտ է տեսողական դիտարկում և ինտելեկտուալ միկրոօրգանիզացիա։

3. 4 Shadow traffic / Dark launch

Զերկալիմը իրական հարցումներ է տալիս նոր տարբերակում (առանց օգտագործողի պատասխանի) կամ սկսում ենք թաքնված, որպեսզի հավաքենք մետրերը։

Պլյուսներ 'խնդիրների վաղ հայտնաբերումը։

Մինուսները 'երկակի լուծումը կախվածության վրա, պետք է վերահսկել կողմնակի ազդեցությունները։

4) Խողովակաշարի և միացությունների կառավարումը

4. 1 Readiness/Liveness

Liveness-ը ասում է նվագախմբին «վերաարտադրել ինձ»։

Readiness-ը "մի ուղարկիր", ես դեռ պատրաստ չեմ "։

Դուք չեք կարող արտադրել առանց ճիշտ readiness տրամաբանության և թայմաուտների։

4. 2 Drenage International (Connational Internat

Նախքան ինստանի պուլից դուրս գալը

դադարում ենք նոր միացություններ ընդունել,

սպասում ենք ակտիվ

ընդհատում ենք «կախված» թայմաուտով։

4. 3 Sticky-նստաշրջան և L7 մակարդակի միկրոօրգանիզացիա

Sticky-ը օգտակար է stateful-սցենարներում, բայց բարդացնում է բեռի հավասարակշռությունը։

L7 կանոնները (ճանապարհին, վերնագիր, տիկնիկ, API տարբերակները) հարմար են canary/ring-ի համար։

4. 4 Երկարատև միացություններ

WindowSocket/gRPC streaming: Մինչ նորարարությունը միացրեք www.ain mode + ազդանշանը «GOAWAY»։

Պլանավորեք windows-ը, որպեսզի ավելացնենք հաճախորդների սթրիմները և բեքոֆը։

5) Տվյալների և տվյալների համատեղելիությունը BD

5. 1 Expand-Migrate-Contract

1. Expand: Մենք ավելացնում ենք նոր/ինդեքսներ/աղյուսակներ առանց հին տարբերակի կոտրելու։

2. Migrate: Մենք փոխանցում ենք ֆոնային տվյալները և idempotento (բամբեր, chekpoints)։

3. Euract 'հեռացրեք հինը միայն դեպքից հետո։

5. 2 Պրակտիկա

Խուսափեք բացառիկ DDL-loks պատուհանից։

Տարբերեք API/իրադարձությունների պայմանագրերը (schema registry, CDC)։

Ծանր միգրացիաների համար 'on.ru գործիքներ, կրկնօրինակներ, ստացիոնար դեղամիջոցներ։

Երկկողմանի ձայնագրությունը (dult-write) միայն deduplication և idempotent սպառողների հետ։

Eurobox/Inbox-ը հերթով հուսալի ինտեգրման համար։

6) Քեշի, նստաշրջաններ և ֆոնային առաջադրանքներ

Նստաշրջանները և քեշը արտաքին (Redis/Memcached), որպեսզի տարբերակները փոխազդեն։

Տաքացնելով քեշը/ջիտները/տեմպային ինդեքսները մինչև փամփուշտի միացումը։

Բաժանեք ֆոնային հերթերը ըստ վարկածի կամ օգտագործեք առաջնորդությունը մրցավազքից խուսափելու համար։

7) SLO-ում դիտողությունն ու խաղերը

Golden signals: p95/p99, error rate, RPS, saturation, lag։

Բիզնես-SLA 'հեղինակային իրավունքի, հակադարձման, հաջողակ վճարումների, ձագերի քայլերի մերժումը։

Գեյթ 'rollout շարժվում է միայն եթե canary www.baseline + քայքայման շեմն է, իսկ error budget չի այրվում։

8) Ապահով ավարտը և արձագանքը

Rapat-ը նույն pline-ն է, միայն հակառակ ուղղությամբ 'ֆիքսված թիմեր, ոչ թե «ձեռքի կրաֆտ»։

Blue-green-flip back-ի համար։ canary-ի համար քաշը մինչև 0% կամ նախորդ կայուն է։

Տվյալները ՝ փոխհատուցող գործարքներ, վերարտադրում, իրադարձությունների կրկնություն։

9) Zero-Downtime թերթերը

Նախքան ֆորումը

  • Հավաքվել է մեկ ստորագրված արտեֆակտը (immutable), SBSA-ը և կախվածության ստուգումը։
  • Readiness/liveness իրականացվել և փորձարկվել են։
  • Expand ռեժիմում միգրացիայի պլանը հաստատվում է։
  • Dashbords և alerts նոր տարբերակի համար պատրաստ են, ավելացնելով արտանետումները։
  • Ռեպատը ստուգված է staging/pre-2019 վրա։

Թողարկման ընթացքում

  • Դրենաժը ներառված է, թայմաուտները համարժեք են։
  • Մոսկվան թարգմանվում է աստիճանաբար (canary/ring) կամ flip (blue-green)։
  • Մետրիկները համեմատվում են baseline-ի հետ, խաղացողների շեմերը պահպանվում են։

Թողարկումից հետո

  • Post-35N ժամ, միջադեպերը բացակայում են։
  • Ավարտված են www.ract, հանվում են ժամանակավոր դրոշները/երթուղիները։
  • Հետադարձ հայացք, պլեյբուսների նորարարություն։

10) Anti-patternes

Recreate-deple-ը առանց փչացնելու և readiness-ը բացատրում է հարցումների բեկորները։

Չպատրաստված DDL-ն պլանավորվում է արգելափակել և թայմաուտներ 2019 թվականին։

Անհամատեղելի սխեմաների խառնուրդը կոդավորման տարբերակների միջև։

Իդեմոտենտության բացակայությունը վերամշակումների և վորկերների մեջ։

«Վերցրեք զգացմունքները» առանց խաղացողների և համեմատության baseline-ի հետ։

Երկար MS-TTL-ը կապույտ-green-ում, որի պատճառով flip տևում է ժամեր։

Տեղական նստաշրջանները/քեշը հիշողության մեջ է rolling/canary-ում։

11) Ներդրման սցենարները

11. 1 Kubernetes (rolling + canary)

Deployment с `maxUnavailable=0`, `maxSurge=25%`.

Readiness-ը սպասում է տաքացման (քեշի նախաձեռնումը, minor)։

Ծառայություն-մեշ/Ingress weighted routing (1-5-10-25-50-100%)։

Ալերտներ ՝ p95, 5xx, գիծ, բիզնես ձագար։

11. 2 Blue-Green ամպում

Երկու բաժակ հավասարակշռիչի հետևից '"կապույտ։ example. com` и `green. example. com`.

green, smoke/ream, ապա listener/roult swap (կամ RTL-փոխանցման ցածր TTL)։

Խնդիրների դեպքում ակնթարթային flip back է։

11. 3 Stateful ծառայություն

Տվյալների կրկնօրինակները + on07-2019; կրկնակի ընթերցում վալիդացիայի հետ։

Ֆոնային ջոբները փոխանցվում են տարբերակների «առաջնորդությամբ» կամ բաժանված հերթերով։

Նստաշրջանները/քեշը ինստանից դուրս; sticky ներառված է միայն ժամանակավորապես։

12) Ֆիչեֆլագները և հաճախորդների ծրագրերը

Նոր ֆիչիները ակտիվանում են դրոշներով (հատվածներ ՝ ռուսական բետի աշխատակիցները բոլորը)։

Բջջային/desctop հաճախորդների համար հաշվի առեք արձանագրության սահմանները և հին տարբերակների գոյատևումը (deprecation policy, server-side fallback)։

13) Արտադրողականությունը և արժեքը

Rolling-ը ավելի էժան է, բայց պահանջում է զգույշ պաշտպանություն։

Blue-Green-ը ավելի թանկ է, քան թողարկման ժամանակը, բայց ակնթարթային։

Canary-ը հավասարակշռում է ռիսկերը և արժեքը, բայց պահանջում է ուժեղ դիտարկում։

Խնայեք ephemeral-ի և մեքենայի մաքրման միջոցով։

14) Նվազագույն հանրաքվե-ռուսական ZDT pline ZDT

1. Build: մեկ արտեֆակտը, ստորագրությունը, SBSA-ը։

2. Test: unit/integration/contract + security.

3. Staging: smoke, www.ru, expand ռեժիմում, արձագանքի ստուգում։

4. Իսպանիան 'shadow canary (խաղացողներ) կամ blue-green flip։

5. Post-deploy: Դիտարկումը, www.ract-cleanup, ռետրո։

15) Ռեզյումե

Zero-Downtime-ը կարգապահություն է 'համատեղելի տարբերակներ + ճիշտ միկրոակտիվացում + կառավարվող պարամետրերը + դիտարկումը և արագ արձագանքը։ Ընտրեք pattern համատեքստում (rolling, blue-green, canary), ավտոմատիզացրեք SLO-ի խաղացողները, պահեք տվյալները idempotent-ով, և թողարկումները կդադարեն լինել իրադարձություն 'վերածվելով հուսալի ռուտինի գործընթացի։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։