Læringssti 04Lektion 5 / 10

Design software til et cloud native-miljø

Forbind gentagelig infrastruktur, udskiftelige processer, varig tilstand og observerbar adfærd. Vurdér cloud native-design ud over containerpakning.

Praktisk12 minReviewet

Udgivet af Sådan skriver vi

Det lærer du

  • Skeln mellem containerpakning og cloud native-adfærd.
  • Find risici ved tilstand, gentagne forsøg og udskiftning i en genereret tjeneste.
  • Definér en platformkontrakt, som agenter og mennesker kan kontrollere.

Definér den nødvendige adfærd

Cloud native-praksis støtter gentagelig udvikling og drift i offentlige, private eller hybride miljøer. CNCF lægger vægt på systemer, der forbliver håndterbare, observerbare og modstandsdygtige, mens de ændres. Containere og orkestrering kan støtte tilgangen. De etablerer ikke alle egenskaberne i sig selv.

Start med en fiktiv rapporttjeneste. Et AI-værktøj opretter et endpoint, en worker og et containerimage. En demonstration producerer den korrekte PDF. Før produktion skal teamet besvare et andet spørgsmål: Hvad sker der, når platformen erstatter workeren midt i et job?

Det er både et spørgsmål om applikationsdesign og infrastruktur. En genstart kan gendanne processen og samtidig miste dens ufærdige arbejde.

Skeln mellem en proces og varig tilstand

Prototypen gemmer jobs i kø og færdige rapporter på containerens disk. Udskiftning af containeren kan fjerne begge dele. Flere workers kan også give forskellige svar afhængigt af, hvilken worker der modtager en forespørgsel.

Det reviderede design bruger et varigt joblager og et godkendt objektlager. En forespørgsel registrerer en jobidentitet. En worker overtager jobbet, skaber resultatet og registrerer dets placering. Adgangskontroller gælder stadig, når en bruger henter rapporten.

OmrådeSpørgsmål til rapporttjenesten
TilstandHvilke poster skal overleve udskiftning af processen?
KonfigurationHvordan kører det samme artefakt i hvert miljø?
IdentitetHvilken tjenesteidentitet må læse jobbet og skrive resultatet?
SundhedKan workeren modtage arbejde, og kan den fuldføre arbejdet?
NedlukningHvad sker der med et overtaget job, når workeren stopper?
KapacitetHvilken grænse rammes først: workers, database, lager eller en anden tjeneste?

Hold secrets uden for imaget. Lever dem gennem det godkendte system til secrets. Registrér, hvilke konfigurationsændringer der kræver en ny release eller genstart af en proces.

Design gentagne forsøg, før du tilføjer workers

Antag, at workeren gemmer en PDF og derefter stopper, før den kvitterer for jobbet. Køen leverer jobbet igen. Et andet forsøg må ikke skabe en ekstra kundeopkrævning eller sende modstridende færdigmeldinger.

Brug en idempotent handling, hvor det er passende. Gentagelse af den samme logiske forespørgsel skal bevare den tilsigtede virkning. Definér en stabil forespørgselsidentitet, registrér resultatet varigt, og kontrollér, hvad der sker ved hvert fejlpunkt. AWS beskriver teknikken i sin vejledning om sikre gentagne forsøg.

Gentagne forsøg kræver også grænser. Brug timeout, et maksimalt antal forsøg og en forsinkelse, der undgår samtidige gentagelser. Bevar fejlslagent arbejde til undersøgelse i stedet for at gentage det for evigt.

Gør den ønskede tilstand mulig at gennemgå

En deklarativ konfiguration angiver den tilsigtede udrulning. En controller arbejder på at opretholde tilstanden. En Kubernetes Deployment styrer for eksempel applikationsreplikaer og kontrollerede opdateringer. Applikationen skal stadig håndtere udskiftning korrekt.

Versionsstyr infrastruktur- og applikationskonfiguration. Gennemgå ændringer gennem den normale leveranceproces. Observer faktisk jobfærdiggørelse, køalder, fejl og afhængigheders grænser. En kørende proces kan stadig være ude af stand til at producere en rapport.

Vælg en platform, teamet kan drive

Cloud native kræver ikke, at enhver applikation bliver til microservices. En modulær applikation på en administreret runtime kan opfylde sine krav. Flere tjenester indfører flere grænseflader, udrulningsbeslutninger og driftsopgaver.

Giv udviklingsagenten den faktiske platformkontrakt: understøttet runtime, identitetsmetode, datatjenester, udrulningsregler og krævet dokumentation. Test adfærd ved afbrydelse og udskiftning sammen med vellykkede forespørgsler. Fortsæt med tilgængelighed og fejlgrænser.

Lav øvelsen

En fiktiv rapporttjeneste gemmer jobs og færdige filer på containerens disk. Tegn forløbet gennem forespørgsel, job, fil og download. Markér varig tilstand. Definér, hvad der sker, hvis workeren stopper efter at have skrevet en fil, men før den bekræfter jobbet.

Download arbejdsark (Markdown)

Kontrollér din forståelse

En platform erstatter en rapportworker efter en fejl. Hvad gør et nyt forsøg sikkert?

Kilder og videre læsning

Relateret læsning fra Taiga