Ontwerp software voor een cloud-nativeomgeving
Verbind herhaalbare infrastructuur, vervangbare processen, duurzame toestand en waarneembaar gedrag. Beoordeel cloud-nativeontwerp voorbij containerverpakking.
Gepubliceerd door TaigaHoe we schrijven
Wat u leert
- Maak onderscheid tussen containerverpakking en cloud-nativegedrag.
- Herken risico's rond toestand, nieuwe pogingen en vervanging in een gegenereerde dienst.
- Definieer een platformcontract dat agents en mensen kunnen verifiëren.
Definieer het benodigde gedrag
Cloud-nativewerkwijzen ondersteunen herhaalbare ontwikkeling en beheer in publieke, private of hybride omgevingen. CNCF benadrukt systemen die beheersbaar, waarneembaar en veerkrachtig blijven tijdens veranderingen. Containers en orkestratie kunnen deze aanpak ondersteunen. Ze zorgen niet zelfstandig voor al deze eigenschappen.
Begin met een fictieve rapportagedienst. Een AI-tool maakt een endpoint, een worker en een containerimage. Een demonstratie produceert de juiste PDF. Vóór productie moet het team een andere vraag beantwoorden: wat gebeurt er als het platform tijdens een taak de worker vervangt?
Dit is zowel een applicatieontwerpvraag als een infrastructuurvraag. Een herstart kan een proces herstellen en tegelijk onvoltooid werk verliezen.
Scheid een proces van duurzame toestand
Het prototype bewaart wachtende taken en voltooide rapporten op de containerschijf. Vervanging van de container kan beide verwijderen. Meer workers toevoegen kan ook verschillende antwoorden geven afhankelijk van welke worker een verzoek ontvangt.
Het herziene ontwerp gebruikt duurzame taakopslag en goedgekeurde objectopslag. Een verzoek registreert een taakidentiteit. Een worker claimt de taak, maakt het resultaat en registreert de resultaatlocatie. Toegangscontroles blijven gelden wanneer een gebruiker het rapport downloadt.
| Aandachtspunt | Vraag voor de rapportagedienst |
|---|---|
| Toestand | Welke records moeten procesvervanging overleven? |
| Configuratie | Hoe draait hetzelfde artefact in elke omgeving? |
| Identiteit | Welke dienstidentiteit mag de taak lezen en het resultaat schrijven? |
| Gezondheid | Kan de worker werk aannemen en ook afronden? |
| Afsluiten | Wat gebeurt er met een geclaimde taak als een worker stopt? |
| Capaciteit | Welke limiet geldt eerst: workers, database, opslag of een andere dienst? |
Houd secrets buiten de image. Lever ze via het goedgekeurde secretsysteem. Leg vast welke configuratiewijzigingen een nieuwe release of procesherstart vereisen.
Ontwerp herhaalde pogingen vóór meer workers
Stel dat de worker een PDF opslaat en dan stopt voordat de taak is bevestigd. De wachtrij levert de taak opnieuw af. Een tweede poging mag geen tweede klantbetaling of tegenstrijdige voltooiingsberichten veroorzaken.
Gebruik waar passend een idempotente operatie. Herhaling van hetzelfde logische verzoek moet het bedoelde effect behouden. Definieer een stabiele verzoekidentiteit, leg het resultaat duurzaam vast en controleer elk foutpunt. AWS beschrijft deze techniek in zijn gids voor veilige nieuwe pogingen.
Nieuwe pogingen hebben ook grenzen nodig. Gebruik een timeout, een poginglimiet en vertraging die gelijktijdige herhaalde verzoeken voorkomt. Bewaar mislukt werk voor inspectie in plaats van eindeloos opnieuw te proberen.
Maak de gewenste toestand reviewbaar
Een declaratieve configuratie beschrijft de bedoelde deployment. Een controller werkt om die toestand te behouden. Een Kubernetes Deployment beheert bijvoorbeeld applicatiereplica’s en gecontroleerde updates. De applicatie moet vervanging nog steeds correct afhandelen.
Versioneer infrastructuur- en applicatieconfiguratie. Review wijzigingen via het normale leveringsproces. Observeer werkelijke taakvoltooiing, wachtrijleeftijd, fouten en dependencylimieten. Een draaiend proces kan nog steeds geen rapport kunnen maken.
Kies een platform dat het team kan beheren
Cloud native vereist niet dat elke applicatie microservices wordt. Een modulaire applicatie op een beheerde runtime kan aan haar eisen voldoen. Meer diensten brengen meer interfaces, deploymentbesluiten en beheerwerk mee.
Geef de ontwikkelagent het werkelijke platformcontract: ondersteunde runtime, identiteitsmethode, datadiensten, deploymentregels en vereist bewijs. Test onderbrekings- en vervangingsgedrag naast geslaagde verzoeken. Ga verder met beschikbaarheid en foutgrenzen.
Maak de oefening
Een fictieve rapportagedienst slaat taken en voltooide bestanden op de containerschijf op. Teken de stroom via verzoek, taak, bestand en download. Markeer duurzame toestand. Definieer wat er gebeurt als de worker stopt na het schrijven van een bestand maar vóór bevestiging van de taak.
Werkblad downloaden (Markdown)Controleer uw begrip
Bronnen en verder lezen
- CNCF: Cloud Native Definition v1.1 ↗
- Kubernetes: Deployments ↗
- AWS Builders’ Library: Making retries safe with idempotent APIs ↗
Gerelateerd leesmateriaal van Taiga
Als u deze selectie wist, verwijdert u alle voortgang die in deze browser is opgeslagen.
Voortgang blijft in deze browser. Geen account, geen tracking.