Dizajnirajte softver za cloud native okruženje
ZavršenoPovežite ponovljivu infrastrukturu, zamjenjive procese, trajno stanje i vidljivo ponašanje. Procijenite cloud native dizajn izvan pakovanja u kontejnere.
Objavljuje TaigaKako pišemo
Provjerite razumijevanjePlatforma zamjenjuje radni proces za izvještaje nakon neuspjeha. Šta čini ponovni pokušaj sigurnim?Uradite vježbu
Šta ćete naučiti
- Razlikujte pakovanje u kontejnere od cloud native ponašanja.
- Utvrdite rizike stanja, ponovnih pokušaja i zamjene u generisanoj usluzi.
- Odredite 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 sisteme kojima se može upravljati, čije se stanje može pratiti i koji ostaju otporni dok se mijenjaju. Kontejneri i orkestracija mogu podržati ovaj pristup. Sami ne uspostavljaju sva ova svojstva.
Počnite od izmišljene usluge izvještaja. AI alat stvara krajnju tačku, radni proces (worker) i sliku kontejnera. Demonstracija proizvodi tačan PDF. Prije produkcije tim mora odgovoriti na drugo pitanje: šta se desi kada platforma zamijeni radni proces tokom zadatka?
Ovo je pitanje dizajna aplikacije koliko i infrastrukture. Ponovno pokretanje može vratiti proces, a izgubiti njegov nedovršeni rad.
Odvojite proces od trajnog stanja
Prototip čuva zadatke u redu čekanja i završene izvještaje na disku kontejnera. Zamjena kontejnera može ukloniti oboje. Dodavanje radnih procesa može proizvesti i različite odgovore zavisno od toga koji radni proces primi zahtjev.
Revidirani dizajn koristi trajno spremište zadataka i odobreno objektno spremište. Zahtjev bilježi identitet zadatka. Radni proces preuzima zadatak, stvara njegov rezultat i bilježi lokaciju rezultata. Provjere pristupa i dalje važe kada korisnik preuzima izvještaj.
| Pitanje dizajna | Pitanje za uslugu izvještaja |
|---|---|
| Stanje | Koji zapisi moraju ostati sačuvani nakon zamjene procesa? |
| Konfiguracija | Kako isti artefakt radi u svakom okruženju? |
| Identitet | Koji identitet usluge može čitati zadatak i pisati njegov rezultat? |
| Ispravnost rada | Može li radni proces prihvatiti rad i može li ga završiti? |
| Gašenje | Šta se dešava s preuzetim zadatkom kada radni proces stane? |
| Kapacitet | Koje ograničenje prvo nastupa: radni procesi, baza podataka, spremište ili druga usluga? |
Držite tajne izvan slike. Dostavljajte ih kroz odobreni sistem za tajne. Zabilježite koje promjene konfiguracije zahtijevaju novo izdanje ili ponovno pokretanje procesa.
Osmislite ponovne pokušaje prije dodavanja radnih procesa
Pretpostavite da radni proces sačuva PDF i zatim stane prije potvrde zadatka. Red čekanja ponovo dostavlja zadatak. Drugi pokušaj ne smije drugi put naplatiti klijentu niti poslati suprotstavljene poruke o završetku.
Koristite idempotentnu operaciju gdje je prikladno. Ponavljanje istog logičkog zahtjeva treba sačuvati namjeravani učinak. Odredite stabilan identitet zahtjeva, trajno zabilježite ishod i provjerite šta se dešava na svakoj tački neuspjeha. AWS opisuje ovu tehniku u vodiču za sigurne ponovne pokušaje.
Ponovni pokušaji trebaju i ograničenja. Koristite vremensko ograničenje, ograničenje broja pokušaja i odgodu koja izbjegava istovremene ponovljene zahtjeve. Sačuvajte neuspjele zadatke za pregled umjesto beskonačnog ponavljanja.
Učinite željeno stanje dostupnim za pregled
Deklarativna konfiguracija navodi namjeravano raspoređivanje. Kontroler radi na održavanju tog stanja. Naprimjer, Kubernetes Deployment upravlja replikama aplikacije i kontrolisanim ažuriranjima. Aplikacija i dalje mora ispravno obraditi zamjenu.
Verzionišite konfiguraciju infrastrukture i aplikacije. Pregledajte promjene kroz uobičajeni postupak isporuke. Pratite stvarni završetak zadataka, vrijeme čekanja u redu, neuspjehe i ograničenja zavisnosti. Proces koji radi i dalje može biti nesposoban proizvesti izvještaj.
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 interfejsa, odluka o raspoređivanju i operativnog rada.
Dajte razvojnom agentu stvarni ugovor platforme: podržano izvršno okruženje, metodu identiteta, usluge podataka, pravila raspoređivanja i potrebne dokaze. Uz uspješne zahtjeve testirajte ponašanje pri prekidu i zamjeni. Nastavite s dostupnošću i granicama otkaza.
Uradite vježbu
Izmišljena usluga izvještaja čuva zadatke i završene fajlove na disku kontejnera. Nacrtajte tok kroz zahtjev, zadatak, fajl i preuzimanje. Označite trajno stanje. Odredite šta se desi ako radni proces stane nakon pisanja fajla, a prije potvrde zadatka.
Preuzmite radni list (Markdown)Isključivanjem ove opcije briše se sav napredak sačuvan 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 ↗