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.
Udgivet af TaigaSå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åde | Spørgsmål til rapporttjenesten |
|---|---|
| Tilstand | Hvilke poster skal overleve udskiftning af processen? |
| Konfiguration | Hvordan kører det samme artefakt i hvert miljø? |
| Identitet | Hvilken tjenesteidentitet må læse jobbet og skrive resultatet? |
| Sundhed | Kan workeren modtage arbejde, og kan den fuldføre arbejdet? |
| Nedlukning | Hvad sker der med et overtaget job, når workeren stopper? |
| Kapacitet | Hvilken 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
Kilder og videre læsning
- CNCF: Cloud Native Definition v1.1 ↗
- Kubernetes: Deployments ↗
- AWS Builders’ Library: Making retries safe with idempotent APIs ↗
Relateret læsning fra Taiga
Fjerner du dette valg, slettes al fremgang gemt i denne browser.
Fremgangen bliver i denne browser. Ingen konto, ingen sporing.