Projektuokite programinę įrangą cloud native aplinkai
BaigtaSusiekite pakartojamą infrastruktūrą, pakeičiamus procesus, ilgalaikę būseną ir stebimą veikimą. Vertinkite cloud native projektavimą plačiau nei konteinerio paketavimą.
Leidžia TaigaKaip rašome
Patikrinkite, ar supratotePo sutrikimo platforma pakeičia ataskaitos vykdymo procesą. Kas leidžia saugiai pakartoti bandymą?Atlikite užduotį
Ko išmoksite
- Atskirkite konteinerio paketavimą nuo cloud native veikimo.
- Nustatykite sugeneruotos paslaugos būsenos, pakartotinių bandymų ir procesų pakeitimo riziką.
- Apibrėžkite platformos susitarimą, kurį gali patikrinti agentai ir žmonės.
Apibrėžkite reikiamą veikimą
Cloud native praktika padeda pakartojamai kurti ir eksploatuoti sistemas viešose, privačiose ar hibridinėse aplinkose. CNCF pabrėžia sistemas, kurios keičiantis lieka valdomos, stebimos ir atsparios. Konteineriai ir orkestravimas gali padėti taikyti šį požiūrį. Vien jie neužtikrina visų šių savybių.
Pradėkite nuo išgalvotos ataskaitų paslaugos. DI įrankis sukuria API adresą, vykdymo procesą ir konteinerio atvaizdą. Demonstracija pateikia teisingą PDF. Prieš produkcinį naudojimą komanda turi atsakyti į kitą klausimą: kas nutinka, kai platforma pakeičia vykdymo procesą užduoties metu?
Tai ir programos projektavimo, ir infrastruktūros klausimas. Paleidimas iš naujo gali atkurti procesą, bet prarasti jo neužbaigtą darbą.
Atskirkite procesą nuo ilgalaikės būsenos
Prototipas eilėje laukiančias užduotis ir užbaigtas ataskaitas laiko konteinerio diske. Pakeitus konteinerį galima prarasti abu. Pridėjus daugiau vykdymo procesų, atsakymai taip pat gali skirtis pagal tai, kuris procesas gauna užklausą.
Patikslintas sprendimas naudoja ilgalaikę užduočių saugyklą ir patvirtintą objektų saugyklą. Užklausa užregistruoja užduoties tapatybę. Vykdymo procesas pasiima užduotį, sukuria rezultatą ir įrašo jo vietą. Naudotojui atsisiunčiant ataskaitą prieigos patikrinimai vis tiek galioja.
| Sritis | Klausimas ataskaitų paslaugai |
|---|---|
| Būsena | Kurie įrašai turi išlikti pakeitus procesą? |
| Konfigūracija | Kaip tas pats artefaktas veikia kiekvienoje aplinkoje? |
| Tapatybė | Kuri paslaugos tapatybė gali skaityti užduotį ir įrašyti jos rezultatą? |
| Veiksnumas | Ar vykdymo procesas gali priimti darbą ir jį užbaigti? |
| Sustabdymas | Kas nutinka paimtai užduočiai sustojus vykdymo procesui? |
| Pajėgumas | Kuri riba pasiekiama pirma: vykdymo procesų, duomenų bazės, saugyklos ar kitos paslaugos? |
Paslapčių nelaikykite atvaizde. Pateikite jas per patvirtintą paslapčių sistemą. Užrašykite, kuriems konfigūracijos pakeitimams reikia naujos versijos ar proceso paleidimo iš naujo.
Suprojektuokite pakartotinius bandymus prieš pridėdami vykdymo procesų
Tarkime, vykdymo procesas išsaugo PDF ir sustoja prieš patvirtindamas užduotį. Eilė pateikia užduotį dar kartą. Antras bandymas neturi sukurti antro mokesčio klientui ar siųsti prieštaringų užbaigimo pranešimų.
Kur tinka, naudokite idempotentinę operaciją. Pakartojus tą pačią loginę užklausą turi išlikti numatytas poveikis. Apibrėžkite stabilią užklausos tapatybę, ilgalaikėje saugykloje užfiksuokite rezultatą ir patikrinkite kiekvieną sutrikimo vietą. AWS šį metodą aprašo saugių pakartotinių bandymų vadove.
Pakartotiniams bandymams taip pat reikia ribų. Naudokite laukimo terminą, bandymų skaičiaus ribą ir delsą, kuri neleistų kartotinėms užklausoms vykti vienu metu. Išsaugokite nepavykusį darbą tyrimui, o ne kartokite jį be galo.
Padarykite pageidaujamą būseną tinkamą peržiūrai
Deklaratyvi konfigūracija nurodo numatytą diegimą. Valdiklis stengiasi išlaikyti šią būseną. Pavyzdžiui, Kubernetes Deployment valdo programos replikas ir kontroliuojamus atnaujinimus. Programa vis tiek turi teisingai apdoroti pakeitimą kitu egzemplioriumi.
Versijuokite infrastruktūros ir programos konfigūraciją. Peržiūrėkite pakeitimus per įprastą pristatymo procesą. Stebėkite tikrąjį užduočių užbaigimą, eilėje laukiančių užduočių amžių, sutrikimus ir priklausomybių ribas. Veikiantis procesas vis tiek gali nesugebėti parengti ataskaitos.
Pasirinkite platformą, kurią komanda gali eksploatuoti
Cloud native nereikalauja kiekvienos programos paversti mikropaslaugomis. Modulinė programa valdomoje vykdymo aplinkoje gali atitikti savo reikalavimus. Daugiau paslaugų reiškia daugiau sąsajų, diegimo sprendimų ir eksploatavimo darbo.
Kūrimo agentui pateikite tikrąjį platformos susitarimą: palaikomą vykdymo aplinką, tapatybės metodą, duomenų paslaugas, diegimo taisykles ir būtinus įrodymus. Kartu su sėkmingomis užklausomis testuokite nutraukimą ir pakeitimą kitu egzemplioriumi. Toliau skaitykite apie prieinamumą ir gedimų ribas.
Atlikite užduotį
Išgalvota ataskaitų paslauga užduotis ir užbaigtus failus laiko konteinerio diske. Nubraižykite srautą per užklausą, užduotį, failą ir atsisiuntimą. Pažymėkite ilgalaikę būseną. Apibrėžkite, kas nutinka, jei vykdymo procesas sustoja įrašęs failą, bet dar nepatvirtinęs užduoties.
Atsisiųsti užduoties lapą (Markdown)Atšaukus šį pasirinkimą ištrinama visa šioje naršyklėje išsaugota pažanga.
Pažanga lieka šioje naršyklėje. Be paskyros ir stebėjimo.
Šaltiniai ir papildoma literatūra
- CNCF: Cloud Native Definition v1.1 ↗
- Kubernetes: Deployments ↗
- AWS Builders’ Library: Making retries safe with idempotent APIs ↗