Mikroserwisy w akcji. Отсутствует
książka – mapa drogowa
Część 1 tej książki zawiera krótkie wprowadzenie do mikroserwisów, pokazując właściwości i zalety systemów opartych na mikroserwisach oraz wyzwania, jakie można spotkać podczas ich tworzenia.
W rozdziale 1 przedstawimy architekturę mikroserwisów. Zbadamy zalety i wady podejścia mikroserwisowego i wyjaśnimy kluczowe zasady rozwoju mikroserwisów. Na koniec przedstawimy wyzwania związane z projektowaniem i wdrażaniem, które będziemy omawiać w tej książce.
W rozdziale 2 użyjemy podejścia mikroserwisowego do przykładowego zastosowania – SimpleBanku. Zaprojektujemy nową funkcjonalność za pomocą mikroserwisów i sprawdzimy, jak przygotować ją do zastosowania na produkcji.
W części 2 omówimy architekturę i projektowanie aplikacji mikroserwisowych.
W rozdziale 3 przejdziemy przez architekturę aplikacji mikroserwisowej obejmującą cztery warstwy: platformę, usługę, granicę i klienta. Celem tego rozdziału jest przedstawienie zgrubnego modelu, którego będzie można użyć podczas pracy nad zrozumieniem dowolnego systemu mikroserwisowego.
Rozdział 4 dotyczy jednej z najtrudniejszych części projektowania mikroserwisów – określania odpowiedzialności usługi. Przedstawimy cztery podejścia do modelowania: oparte na zdolnościach biznesowych, przypadkach użycia, zdolnościach technicznych i zmienności oraz – korzystując z przykładów z SimpleBanku, zbadamy, w jaki sposób podejmować dobre decyzje projektowe, nawet, jeśli granice są niejednoznaczne.
W rozdziale 5 pokażemy, jak tworzyć logikę biznesową w systemach rozproszonych, gdzie gwarancje transakcyjne przestają obowiązywać. Wprowadzimy czytelnika w różne wzorce transakcji, takie jak sagi i wzorce zapytań, których przykładem będzie API i CQRS.
Rozdział 6 dotyczy niezawodności. Systemy rozproszone mogą być bardziej ułomne niż aplikacje monolityczne, a komunikacja między mikroserwisami wymaga starannego zaprojektowania, aby uniknąć problemów z ich dostępnością, przestojami i awariami kaskadowymi. Korzystając z przykładów w Pythonie, zbadamy popularne techniki maksymalizacji odporności aplikacji, takie jak limity użycia, bezpieczniki, kontrole działania i ponowne próby.
W rozdziale 7 powiemy, jak zaprojektować framework mikroserwisowy do wielokrotnych zastosowań. Spójne praktyki w zakresie mikroserwisów poprawiają ogólną jakość i niezawodność aplikacji oraz skracają czas opracowywania nowych usług. Przedstawimy działające przykłady w Pythonie.
W części 3 przyjrzymy się dobrym praktykom wdrażania mikroserwisów.
W rozdziale 8 podkreślimy znaczenie zautomatyzowanego ciągłego dostarczania w aplikacjach mikroserwisowych. Wdrożymy do produkcji pojedynczą usługę – w Google Compute Engine – i na tym przykładzie pokażemy znaczenie niezmienialnych artefaktów oraz plusy i minusy różnych modeli wdrażania mikroserwisów.
W rozdziale 9 przedstawimy Kubernetesa – platformę zarządzania skonteneryzowanymi aplikacjami. Kontenery w połączeniu z programem zarządzającym, takim jak Kubernetes, są naturalnym i eleganckim rozwiązaniem dla działających na dużą skalę mikroserwisów. Korzystając z Minikube’a, nauczymy się tworzyć pakiety mikroserwisów i bezproblemowo wdrażać je w Kubernetesie.
W rozdziale 10 oprzemy się na przykładzie z poprzedniego rozdziału, aby skonstruować kompleksowy strumień wdrażania za pomocą Jenkinsa. Zaprogramujemy strumień w Jenkinsie i Groovy, który szybko i niezawodnie będzie wykonywał wdrożenia produkcyjne. Dowiemy się również, jak stosować spójne praktyki wdrażania dla floty mikroserwisów.
W końcowej części książki zbadamy zachowanie i ludzką stronę mikroserwisów.
W rozdziale 11 poprowadzimy Was przez proces rozwoju systemu monitorowania mikroserwisów, używając StatsD, Prometheus i Grafana do zbierania i agregowania metryk w celu tworzenia pulpitów i alarmów. Omówimy także dobre praktyki w zakresie zarządzania alarmami i unikania niepotrzebnych ostrzeżeń.
Rozdział 12 jest oparty na rezultatach z poprzednich rozdziałów – wprowadzimy w nim dodatkowo dzienniki i ślady. Uzyskiwanie bogatych, aktualnych i możliwych do przeszukiwania informacji z naszych mikroserwisów pomoże nam je zrozumieć, zdiagnozować problemy i udoskonalić w przyszłości. Przykłady w tym rozdziale wykorzystują Elasticsearcha, Kibanę i Jaegera.
Wreszcie w rozdziale 13 wykonamy lekki ruch w przeciwną stronę, w celu przedstawienia ludzkiej strony mikroserwisów. To ludzie wdrażają oprogramowanie – budowanie dobrego oprogramowania wymaga zarówno efektywnej współpracy, jak i wyborów związanych z wdrażaniem. Zbadamy zasady, które sprawiają, że zespoły mikroserwisowe są skuteczne, a także psychologiczne i praktyczne implikacje podejścia opartego na architekturze mikroserwisowej do dobrych praktyk inżynierskich.
Ta książka zawiera wiele przykładów kodu źródłowego, zarówno w ponumerowanych listingach, jak i wewnątrz zwykłego tekstu. W obu przypadkach kod źródłowy jest sformatowany w ten sposób – czcionką stałej szerokości, aby oddzielić go od zwykłego tekstu. Czasem kod jest również pogrubiony, aby wyróżnić określone linie lub rozróżnić wprowadzone polecenia od uzyskanego wyniku.
W wielu przypadkach ponownie sformatowaliśmy oryginalny kod źródłowy; dodaliśmy linie podziału i przerobiliśmy wcięcia, aby uwzględnić dostępne miejsce na stronie w książce. W rzadkich przypadkach nawet to nie było wystarczające, a listingi zawierają znaczniki kontynuacji linii (). Ponadto w listingach często usuwaliśmy komentarze z kodu źródłowego, jeśli został on opisany w tekście. Wielu listingom towarzyszą adnotacje dotyczące kodu, podkreślając ważne pojęcia.
Kod źródłowy z tej publikacji jest dostępny na stronie książki pod adresem: https://www.manning.com/books/microservices-in-action oraz w repozytorium Github pod adresem https://github.com/morganjbruce/microservices-in-action.
Instrukcje dotyczące uruchamiania przykładów można znaleźć w dalszej części książki. Aby uprościć uruchamianie przykładów, zazwyczaj będziemy używać Dockera i/lub Docker Compose. Dodatek zaś dotyczy konfigurowania Jenkinsa użytego w rozdziale 10, aby działał płynnie na lokalnej instalacji Kubernetesa.
o autorach
MORGAN BRUCE ma duże doświadczenie w tworzeniu złożonych aplikacji oraz praktykę w branży finansów i weryfikacji tożsamości, gdzie dokładność, odporność i bezpieczeństwo są kluczowe. Jako lider pracował nad zakrojonymi na szeroką skalę procesami refaktoryzacji i przeprojektowywania. Ma również doświadczenie z pierwszej ręki w prowadzeniu ewolucji od monolitycznej aplikacji do architektury mikroserwisowej.
PAULO A. PEREIRA jest obecnie liderem zespołu zajmującego się przekształcaniem aplikacji monolitycznych w mikroserwisy przy istniejących ograniczeniach, w których ogromne znaczenie mają bezpieczeństwo i precyzja. Entuzjastycznie nastawiony do wyboru zróżnicowanych narzędzi do pracy oraz łączenia różnych języków i paradygmatów bada obecnie programowanie funkcjonalne, głównie za pośrednictwem Elixira. Paulo jest także autorem książki Elixir Cookbook, a także jednym z recenzentów technicznych Learning Elixir oraz Mastering Elixir.
o ilustracji na okładce
Obraz na okładce Mikroserwisy w akcji jest zatytułowany Habit of a Lady of China in 1700. Ilustracja pochodzi z dzieła Thomasa Jefferysa A Collection of the Dresses of Different Nations, Ancient and Modern (cztery tomy), Londyn, opublikowanego w latach