Suunnittele ohjelmisto cloud native -ympäristöön
Yhdistä toistettava infrastruktuuri, korvattavat prosessit, pysyvä data ja observability. Arvioi cloud native -toteutusta konttipaketointia laajemmin.
Julkaisija TaigaNäin kirjoitamme
Mitä opit
- Erota konttipaketointi cloud native -toiminnasta.
- Tunnista generoidun palvelun tilaan, retryihin ja prosessin vaihtumiseen liittyvät riskit.
- Määritä platformin vaatimukset, jotka ihminen ja agentti voivat tarkistaa.
Määritä tarvittava toiminta
Cloud native -käytännöt tukevat toistettavaa kehitystä ja ylläpitoa julkisessa pilvessä, yksityisessä pilvessä ja hybridiympäristöissä. CNCF korostaa hallittavuutta, observabilitya ja häiriönsietoa muutosten aikana. Kontit ja orkestraatio voivat tukea näitä ominaisuuksia. Ne eivät yksin toteuta niitä.
Otetaan kuvitteellinen raporttipalvelu. AI-työkalu luo endpointin, workerin ja kontti-imagen. Demo tuottaa oikean PDF:n. Ennen tuotantoa tiimin pitää selvittää, mitä tapahtuu, kun platform korvaa workerin kesken työn.
Tämä koskee sekä sovellusta että infraa. Prosessi voi käynnistyä uudelleen, vaikka sen keskeneräinen työ katoaa.
Erota prosessi pysyvästä tilasta
Proto säilyttää työjonon ja valmiit raportit kontin levyllä. Kontin vaihtuminen voi poistaa molemmat. Useampi worker voi myös antaa eri vastauksen sen mukaan, mihin pyyntö osuu.
Korjatussa toteutuksessa työjono tallentuu pysyvästi ja raportit menevät hyväksyttyyn object storeen. Pyyntö saa työn tunnisteen. Worker varaa työn, luo tuloksen ja tallentaa sen sijainnin. Käyttöoikeudet tarkistetaan myös raporttia ladattaessa.
| Asia | Raporttipalvelun kysymys |
|---|---|
| Tila | Minkä tiedon pitää säilyä prosessin vaihtuessa? |
| Konfiguraatio | Miten sama artefakti toimii eri ympäristöissä? |
| Identiteetti | Mikä palveluidentiteetti saa lukea työn ja kirjoittaa tuloksen? |
| Toimintakunto | Pystyykö worker vastaanottamaan ja tekemään työn? |
| Sammutus | Mitä varatulle työlle tapahtuu workerin pysähtyessä? |
| Kapasiteetti | Tuleeko vastaan ensin workerien, tietokannan, tallennuksen vai muun palvelun raja? |
Pidä salaisuudet imagen ulkopuolella. Käytä hyväksyttyä secret-järjestelmää. Kirjaa, mitkä konfiguraatiomuutokset vaativat uuden julkaisun tai prosessin käynnistyksen.
Suunnittele retryt ennen skaalausta
Worker tallentaa PDF:n mutta pysähtyy ennen kuittausta. Jono toimittaa työn uudelleen. Uusi yritys ei saa laskuttaa asiakasta toistamiseen tai lähettää ristiriitaista valmistumisviestiä.
Käytä tarvittaessa idempotenttia operaatiota: saman loogisen pyynnön toisto säilyttää tarkoitetun vaikutuksen. Määritä pysyvä pyynnön tunniste, tallenna lopputulos ja testaa katkokset eri kohdissa. AWS käsittelee periaatetta turvallisten retryjen ohjeessa.
Rajaa myös retryt. Aseta timeout, yritysten enimmäismäärä ja viive, joka ehkäisee yhtäaikaiset uusintapyynnöt. Säilytä epäonnistunut työ tutkittavaksi loputtoman toiston sijaan.
Tee tavoitetilasta tarkastettava
Deklaratiivinen konfiguraatio kuvaa halutun tilan. Controller pyrkii ylläpitämään sitä. Esimerkiksi Kubernetes Deployment hallitsee sovelluksen replikoita ja päivityksiä. Sovelluksen pitää silti kestää prosessin vaihtuminen.
Versioi infra ja sovelluksen konfiguraatio. Tarkasta muutokset normaalissa toimitusprosessissa. Seuraa valmistuneita töitä, jonon ikää, virheitä ja riippuvuuksien rajoja. Käynnissä oleva prosessi ei välttämättä pysty tuottamaan raporttia.
Valitse ylläpidettävä platform
Cloud native ei edellytä jokaisen sovelluksen pilkkomista microserviceiksi. Modulaarinen sovellus hallitussa runtimessa voi täyttää tarpeen. Palveluiden määrän kasvu lisää rajapintoja, julkaisupäätöksiä ja ylläpitotyötä.
Anna kehitysagentille todelliset platformin vaatimukset: runtime, identiteetti, datapalvelut, julkaisusäännöt ja vaadittu näyttö. Testaa keskeytys ja prosessin vaihtuminen onnistuneiden pyyntöjen rinnalla. Jatka high availability -oppituntiin.
Sovella käytäntöön
Kuvitteellinen raporttipalvelu tallentaa työt ja valmiit tiedostot kontin levylle. Piirrä ketju pyynnöstä työhön, tiedostoon ja lataukseen. Merkitse pysyvä data. Määritä, mitä tapahtuu, jos worker pysähtyy tiedoston tallennuksen jälkeen mutta ennen työn kuittausta.
Lataa työpohja (Markdown)Testaa, mitä opit
Lähteet ja lisälukeminen
- CNCF: Cloud Native Definition v1.1 ↗
- Kubernetes: Deployments ↗
- AWS Builders’ Library: Making retries safe with idempotent APIs ↗
Aiheesta Taigan sivuilla
Valinnan poistaminen poistaa kaikki tälle selaimelle tallennetut suoritusmerkinnät.
Edistyminen tallentuu tähän selaimeen. Ei käyttäjätiliä eikä seurantaa.