Ścieżka 04Lekcja 5 / 10

Projektuj oprogramowanie dla środowiska cloud native

Połącz powtarzalną infrastrukturę, wymienialne procesy, trwały stan i obserwowalne działanie. Oceń cloud native szerzej niż samo pakowanie w kontenery.

Praktyka12 minSprawdzono

Wydawca Jak piszemy

Czego się nauczysz

  • Odróżniaj pakowanie w kontenery od zachowania cloud native.
  • Wskaż ryzyka stanu, ponawiania i wymiany procesu w wygenerowanej usłudze.
  • Określ kontrakt platformy możliwy do sprawdzenia przez ludzi i agentów.

Określ potrzebne zachowanie

Praktyki cloud native wspierają powtarzalne wytwarzanie i eksploatację w środowiskach publicznych, prywatnych i hybrydowych. CNCF podkreśla systemy, które podczas zmian pozostają zarządzalne, obserwowalne i odporne. Kontenery i orkiestracja mogą wspierać to podejście. Same nie zapewniają wszystkich tych cech.

Zacznij od fikcyjnej usługi raportowej. Narzędzie AI tworzy endpoint, workera i obraz kontenera. Demonstracja daje poprawny PDF. Przed produkcją zespół musi odpowiedzieć na inne pytanie: co nastąpi, gdy platforma zastąpi workera w trakcie zadania?

To pytanie dotyczy projektu aplikacji oraz infrastruktury. Restart może przywrócić proces, a jednocześnie utracić jego niedokończoną pracę.

Oddziel proces od trwałego stanu

Prototyp przechowuje kolejkę zadań i gotowe raporty na dysku kontenera. Wymiana kontenera może usunąć oba. Dodanie workerów może też dawać różne odpowiedzi zależnie od tego, który obsługuje żądanie.

Poprawiony projekt używa trwałego magazynu zadań i zatwierdzonego magazynu obiektowego. Żądanie zapisuje tożsamość zadania. Worker przejmuje zadanie, tworzy wynik i zapisuje jego lokalizację. Kontrole dostępu nadal obowiązują przy pobieraniu raportu.

ObszarPytanie dla usługi raportowej
StanKtóre rekordy muszą przetrwać wymianę procesu?
KonfiguracjaJak ten sam artefakt działa w każdym środowisku?
TożsamośćKtóra tożsamość usługi może odczytać zadanie i zapisać wynik?
Stan działaniaCzy worker może przyjąć pracę i ją ukończyć?
WyłączanieCo dzieje się z przejętym zadaniem po zatrzymaniu workera?
WydajnośćKtóry limit wystąpi pierwszy: workerów, bazy, magazynu czy innej usługi?

Przechowuj sekrety poza obrazem. Dostarczaj je przez zatwierdzony system sekretów. Zapisz, które zmiany konfiguracji wymagają nowego wydania lub restartu procesu.

Zaprojektuj ponowienia przed dodaniem workerów

Załóżmy, że worker zapisuje PDF, a potem zatrzymuje się przed potwierdzeniem zadania. Kolejka dostarcza zadanie ponownie. Druga próba nie może obciążyć klienta drugi raz ani wysłać sprzecznych powiadomień o zakończeniu.

Gdzie to właściwe, użyj operacji idempotentnej. Powtórzenie tego samego logicznego żądania powinno zachować zamierzony skutek. Zdefiniuj stałą tożsamość żądania, trwale zapisz wynik i sprawdź zachowanie w każdym punkcie awarii. AWS opisuje tę technikę w przewodniku bezpiecznych ponowień.

Ponowienia także wymagają granic. Użyj limitu czasu, limitu prób i opóźnienia zapobiegającego jednoczesnym powtórzeniom żądań. Zachowuj nieudane zadania do sprawdzenia zamiast ponawiać je bez końca.

Ułatw przegląd stanu docelowego

Konfiguracja deklaratywna określa zamierzone wdrożenie. Kontroler dąży do utrzymania tego stanu. Na przykład Kubernetes Deployment zarządza replikami aplikacji i kontrolowanymi aktualizacjami. Aplikacja nadal musi poprawnie obsługiwać wymianę procesu.

Wersjonuj konfigurację infrastruktury i aplikacji. Przeglądaj zmiany w zwykłym procesie dostarczania. Obserwuj rzeczywiste ukończenie zadań, wiek kolejki, błędy i ograniczenia zależności. Działający proces nadal może nie być zdolny do utworzenia raportu.

Wybierz platformę, którą zespół potrafi utrzymywać

Cloud native nie wymaga zamiany każdej aplikacji w mikroserwisy. Modułowa aplikacja na zarządzanym runtime może spełnić wymagania. Więcej usług oznacza więcej interfejsów, decyzji wdrożeniowych i pracy operacyjnej.

Przekaż agentowi rzeczywisty kontrakt platformy: wspierany runtime, metodę tożsamości, usługi danych, zasady wdrażania i wymagane dowody. Oprócz udanych żądań testuj przerwanie i wymianę procesu. Przejdź do dostępności i granic awarii.

Wykonaj ćwiczenie

Fikcyjna usługa raportowa przechowuje zadania i gotowe pliki na dysku kontenera. Narysuj przepływ przez żądanie, zadanie, plik i pobranie. Zaznacz trwały stan. Określ, co się stanie, gdy worker zatrzyma się po zapisaniu pliku, ale przed potwierdzeniem zadania.

Pobierz arkusz (Markdown)

Sprawdź zrozumienie

Platforma zastępuje workera raportów po awarii. Co zapewnia bezpieczeństwo ponowienia?

Źródła i dalsza lektura

Powiązana lektura od Taiga