Læringsløp 04Leksjon 5 / 10

Utform programvare for et cloud native-miljø

Koble sammen gjentakbar infrastruktur, utskiftbare prosesser, varig tilstand og observerbar oppførsel. Vurder cloud native-design utover containerpakking.

Praktisk12 minGjennomgått

Publisert av Slik skriver vi

Dette lærer du

  • Skill mellom containerpakking og cloud native-oppførsel.
  • Finn risiko ved tilstand, nye forsøk og utskifting i en generert tjeneste.
  • Definer en plattformkontrakt som agenter og mennesker kan verifisere.

Definer oppførselen dere trenger

Cloud native-praksiser støtter gjentakbar utvikling og drift i offentlige, private eller hybride miljøer. CNCF legger vekt på systemer som forblir håndterbare, observerbare og robuste mens de endres. Containere og orkestrering kan støtte denne tilnærmingen. De etablerer ikke alle disse egenskapene alene.

Start med en fiktiv rapporttjeneste. Et AI-verktøy oppretter et endepunkt, en arbeiderprosess og et containerimage. En demonstrasjon produserer riktig PDF. Før produksjon må teamet svare på et annet spørsmål: Hva skjer når plattformen erstatter arbeideren midt i en jobb?

Dette er både et spørsmål om applikasjonsdesign og om infrastruktur. En omstart kan gjenopprette en prosess samtidig som det uferdige arbeidet går tapt.

Skill prosessen fra varig tilstand

Prototypen lagrer jobber i kø og ferdige rapporter på containerens disk. Utskifting av containeren kan fjerne begge deler. Flere arbeidere kan også gi ulike svar, avhengig av hvilken arbeider som mottar en forespørsel.

Det reviderte designet bruker et varig jobblager og et godkjent objektlager. En forespørsel registrerer en jobbidentitet. En arbeider tar jobben, lager resultatet og registrerer hvor resultatet ligger. Tilgangskontrollene gjelder fortsatt når en bruker laster ned rapporten.

OmrådeSpørsmål for rapporttjenesten
TilstandHvilke opplysninger må overleve at prosessen erstattes?
KonfigurasjonHvordan kjører det samme artefaktet i hvert miljø?
IdentitetHvilken tjenesteidentitet kan lese jobben og skrive resultatet?
TilstandskontrollKan arbeideren ta imot arbeid, og kan den fullføre arbeidet?
AvslutningHva skjer med en overtatt jobb når en arbeider stopper?
KapasitetHvilken grense nås først: arbeidere, database, lagring eller en annen tjeneste?

Hold hemmeligheter utenfor imaget. Tilfør dem gjennom det godkjente systemet for hemmeligheter. Dokumenter hvilke konfigurasjonsendringer som krever en ny utgivelse eller omstart av en prosess.

Utform nye forsøk før dere legger til arbeidere

Anta at arbeideren lagrer en PDF og deretter stopper før den kvitterer for jobben. Køen leverer jobben på nytt. Et andre forsøk må ikke belaste kunden en gang til eller sende motstridende meldinger om fullføring.

Bruk en idempotent operasjon der det passer. Gjentakelse av samme logiske forespørsel skal bevare den tilsiktede effekten. Definer en stabil forespørselsidentitet, registrer resultatet varig, og kontroller hva som skjer ved hvert feilpunkt. AWS beskriver teknikken i sin veiledning om trygge nye forsøk.

Nye forsøk trenger også grenser. Bruk en tidsavbruddsgrense, et maksimalt antall forsøk og en forsinkelse som hindrer samtidige gjentatte forespørsler. Bevar mislykket arbeid for undersøkelse i stedet for å prøve igjen for alltid.

Gjør ønsket tilstand mulig å gjennomgå

En deklarativ konfigurasjon beskriver den ønskede utrullingen. En kontroller arbeider for å opprettholde denne tilstanden. For eksempel styrer en Kubernetes Deployment applikasjonsreplikaer og kontrollerte oppdateringer. Applikasjonen må fortsatt håndtere utskifting riktig.

Versjoner infrastrukturen og applikasjonskonfigurasjonen. Gjennomgå endringer i den vanlige leveranseprosessen. Observer faktisk fullføring av jobber, alder på køelementer, feil og avhengighetenes grenser. En prosess som kjører, kan fortsatt være ute av stand til å produsere en rapport.

Velg en plattform teamet kan drifte

Cloud native krever ikke at alle applikasjoner blir mikrotjenester. En modulær applikasjon i et forvaltet kjøremiljø kan oppfylle kravene. Flere tjenester gir flere grensesnitt, utrullingsbeslutninger og driftsoppgaver.

Gi utviklingsagenten den faktiske plattformkontrakten: støttet kjøremiljø, identitetsmetode, datatjenester, utrullingsregler og nødvendige bevis. Test oppførselen ved avbrudd og utskifting i tillegg til vellykkede forespørsler. Fortsett med tilgjengelighet og feilgrenser.

Gjør øvelsen

En fiktiv rapporttjeneste lagrer jobber og ferdige filer på containerens disk. Tegn flyten gjennom forespørsel, jobb, fil og nedlasting. Marker varig tilstand. Definer hva som skjer hvis arbeiderprosessen stopper etter å ha skrevet en fil, men før den bekrefter jobben.

Last ned arbeidsark (Markdown)

Kontroller forståelsen din

En plattform erstatter en rapportarbeider etter en feil. Hva gjør et nytt forsøk trygt?

Kilder og videre lesning

Relatert lesning fra Taiga