Dizajnirajte softver za cloud native okruženje
DovršenoPovežite ponovljivu infrastrukturu, zamjenjive procese, trajno stanje i ponašanje koje se može pratiti. Procijenite cloud native dizajn izvan pakiranja u kontejnere.
Objavljuje TaigaKako pišemo
Provjerite razumijevanjePlatforma nakon kvara zamijeni radni proces koji izrađuje izvješća. Što ponovni pokušaj čini sigurnim?Napravite vježbu
Što ćete naučiti
- Razlikovati pakiranje u kontejnere od cloud native ponašanja.
- Prepoznati rizike stanja, ponovnih pokušaja i zamjene u generiranoj usluzi.
- Odrediti ugovor platforme koji agenti i ljudi mogu provjeriti.
Odredite potrebno ponašanje
Cloud native prakse podržavaju ponovljiv razvoj i operativni rad u javnim, privatnim ili hibridnim okruženjima. CNCF naglašava sustave kojima se tijekom promjena može upravljati, čiji se rad može pratiti i koji ostaju otporni na kvarove. Kontejneri i orkestracija mogu podržati taj pristup. Sami ne osiguravaju sva ta svojstva.
Počnite s izmišljenom uslugom izvješća. AI alat stvara krajnju točku, radni proces i image kontejnera. Demonstracija proizvodi ispravan PDF. Prije produkcije tim mora odgovoriti na drugo pitanje: što se događa kada platforma zamijeni radni proces tijekom zadatka?
To je pitanje dizajna aplikacije i infrastrukture. Ponovno pokretanje može obnoviti proces, a izgubiti njegov nedovršen rad.
Odvojite proces od trajnog stanja
Prototip drži zadatke na čekanju i dovršena izvješća na disku kontejnera. Zamjena kontejnera može ukloniti oboje. Dodavanje radnih procesa može uzrokovati i različite odgovore, ovisno o tome koji radni proces primi zahtjev.
Revidirani dizajn upotrebljava trajno spremište zadataka i odobreno objektno spremište. Zahtjev bilježi identitet zadatka. Radni proces preuzima zadatak, stvara rezultat i bilježi njegovu lokaciju. Provjere pristupa vrijede i kada korisnik preuzima izvješće.
| Pitanje | Pitanje za uslugu izvješća |
|---|---|
| Stanje | Koji zapisi moraju preživjeti zamjenu procesa? |
| Konfiguracija | Kako isti artefakt radi u svakom okruženju? |
| Identitet | Koji identitet usluge može pročitati zadatak i zapisati njegov rezultat? |
| Ispravnost rada | Može li radni proces prihvatiti rad i može li ga dovršiti? |
| Zaustavljanje | Što se događa s preuzetim zadatkom kada radni proces stane? |
| Kapacitet | Koje se ograničenje prvo doseže: radni procesi, baza podataka, spremište ili druga usluga? |
Držite tajne podatke izvan imagea. Dostavite ih kroz odobren sustav za tajne podatke. Zabilježite koje promjene konfiguracije zahtijevaju novo izdanje ili ponovno pokretanje procesa.
Osmislite ponovne pokušaje prije dodavanja radnih procesa
Pretpostavimo da radni proces spremi PDF, a zatim stane prije potvrde zadatka. Red ponovno dostavi zadatak. Drugi pokušaj ne smije drugi put naplatiti klijentu ili poslati proturječne poruke o dovršetku.
Upotrijebite idempotentnu operaciju gdje je primjereno. Ponavljanje istog logičkog zahtjeva treba sačuvati predviđeni učinak. Odredite stabilan identitet zahtjeva, trajno zabilježite ishod i provjerite što se događa na svakom mjestu mogućeg kvara. AWS opisuje tu tehniku u vodiču za sigurne ponovne pokušaje.
Ponovni pokušaji također trebaju ograničenja. Upotrijebite vremensko ograničenje, ograničen broj pokušaja i odgodu koja izbjegava istodobne ponovljene zahtjeve. Sačuvajte neuspjeli rad za pregled umjesto beskonačnog ponavljanja.
Omogućite pregled željenog stanja
Deklarativna konfiguracija navodi namjeravano postavljanje. Kontroler radi na održavanju tog stanja. Primjerice, Kubernetes Deployment upravlja replikama aplikacije i kontroliranim ažuriranjima. Aplikacija i dalje mora ispravno podnijeti zamjenu.
Verzionirajte konfiguraciju infrastrukture i aplikacije. Pregledajte promjene kroz uobičajeni postupak isporuke. Pratite stvarno dovršavanje zadataka, starost reda čekanja, kvarove i ograničenja ovisnosti. Pokrenut proces i dalje može biti nesposoban proizvesti izvješće.
Odaberite platformu kojom tim može upravljati
Cloud native ne zahtijeva da svaka aplikacija postane skup mikroservisa. Modularna aplikacija na upravljanom izvršnom okruženju može ispuniti svoje zahtjeve. Više usluga uvodi više sučelja, odluka o postavljanju i operativnog rada.
Dajte razvojnom agentu stvarni ugovor platforme: podržano izvršno okruženje, metodu identiteta, podatkovne usluge, pravila postavljanja i potrebne dokaze. Uz uspješne zahtjeve testirajte ponašanje pri prekidu i zamjeni. Nastavite s dostupnošću i granicama kvarova.
Napravite vježbu
Izmišljena usluga izvješća pohranjuje zadatke i dovršene datoteke na disk kontejnera. Nacrtajte tijek kroz zahtjev, zadatak, datoteku i preuzimanje. Označite trajno stanje. Odredite što se događa ako radni proces stane nakon zapisivanja datoteke, a prije potvrde zadatka.
Preuzmi radni list (Markdown)Uklanjanje ove oznake briše sav napredak spremljen u ovom pregledniku.
Napredak ostaje u ovom pregledniku. Bez računa i praćenja.
Izvori i dodatno čitanje
- CNCF: Cloud Native Definition v1.1 ↗
- Kubernetes: Deployments ↗
- AWS Builders’ Library: Making retries safe with idempotent APIs ↗