Читать книгу Mikroserwisy w akcji - Группа авторов - Страница 4
o książce
ОглавлениеMikroserwisy w akcji to praktyczna książka poświęcona tworzeniu i wdrażaniu aplikacji opartych na mikroserwisach. Napisana dla programistów i architektów z solidnym naciskiem na rozwój zorientowany na usługi, podejmuje wyzwanie polegające na wprowadzeniu mikroserwisów do praktyki. Zaczniemy od dogłębnego przeglądu zasad projektowania mikroserwisów, bazując na znajomości tradycyjnych systemów. Następnie pokażemy skuteczną drogę do ich zastosowania w praktyce. Będziemy eksplorować przykłady przy użyciu Kubernetesa, Dockera i Google Container Engine, nauczymy się budować klastry i utrzymywać je po wdrożeniu.
Techniki zawarte w tej książce nadają się do tworzenia mikroserwisów w większości najpopularniejszych języków programowania. Jako podstawowego języka w tej książce postanowiliśmy użyć Pythona, ponieważ jego bezceremonialny styl i lapidarna składnia nadają się do jasnych i przejrzystych przykładów. Nie martwcie się, jeśli nie znacie Pythona – poprowadzimy Was przez kolejne przykłady.
Jak zorganizowana jest ta 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.
O kodzie
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.