Details zum E-Book

Budowanie mikrousług. Projektowanie drobnoziarnistych systemów. Wydanie II

Budowanie mikrousług. Projektowanie drobnoziarnistych systemów. Wydanie II

Sam Newman

E-book

Mikrousługi są dla wielu organizacji wspaniałą alternatywą. Systemy rozproszone złożone ze współpracujących ze sobą mikrousług pozwalają na efektywne i elastyczne dostarczanie oprogramowania, które ściśle odpowiada na wymagania użytkowników. Dodatkową zaletą jest możliwość relatywnie szybkiego wprowadzania modyfikacji w systemie, co ułatwia płynne zaspokajanie zmieniających się potrzeb. Pewnym wyzwaniem dla programistów jednak może być złożoność powodowana przez właściwości architektury systemów rozproszonych, a także pojawiające się wciąż nowe technologie i metodyki, które znacząco zmieniają sposób korzystania z mikrousług.

To drugie wydanie praktycznego przewodnika po projektowaniu, tworzeniu, wdrażaniu, skalowaniu i utrzymaniu systemów opartych na drobnoziarnistych mikrousługach. Publikacja została uzupełniona o informacje dotyczące najnowszych trendów i technologii związanych z mikrousługami. Sporo miejsca poświęcono na staranne przeanalizowanie przykładów dotyczących opisywanych koncepcji, a także pokazanie optymalnych sposobów rozwiązywania różnych problemów. Opisano również najnowsze rozwiązania dotyczące modelowania, integracji, testowania, wdrażania i monitorowania autonomicznych usług. Bardzo interesującą częścią są studia przypadków, w których przeanalizowano, jak organizacjom udaje się w praktyce w pełni wykorzystywać możliwości mikrousług.

Dzięki książce dowiesz się, jak:

  • przeprowadzać orkiestrację kontenerów i wdrażać rozwiązania bezserwerowe
  • dostosowywać projekt systemu do potrzeb organizacji
  • wybrać najlepszy sposób integracji usługi z systemem
  • samodzielnie wdrażać mikrousługi
  • skutecznie testować i monitorować usługi rozproszone
  • zarządzać zabezpieczeniami dla rozszerzonej zawartości

Architektura mikrousług: naucz się podejmować najlepsze decyzje projektowe!

Przedmowa

Część I. Podstawy

Rozdział 1. Czym są mikrousługi?

  • Mikrousługi w skrócie
  • Kluczowe pojęcia dotyczące mikrousług
    • Możliwość niezależnego wdrażania
    • Zamodelowane wokół domeny biznesowej
    • Posiadanie własnego stanu
    • Rozmiar
    • Elastyczność
    • Dopasowanie architektury do organizacji zespołów
  • Monolit
    • Monolit jednoprocesowy
    • Monolit modułowy
    • Monolit rozproszony
    • Monolity i rywalizacja o dostawy
    • Zalety monolitów
  • Technologie pomocnicze
    • Agregacja logów i rozproszone śledzenie
    • Kontenery i Kubernetes
    • Przesyłanie strumieniowe
    • Chmura publiczna i platformy bezserwerowe
  • Najważniejsze korzyści
    • Niejednorodność technologii
    • Odporność na błędy
    • Skalowanie
    • Łatwość wdrażania
    • Dopasowanie do organizacji zespołów
    • Komponowalność
  • Niedogodności związane z architekturą mikrousług
    • Wrażenia programisty
    • Przeciążenie technologią
    • Koszty
    • Raportowanie
    • Monitorowanie i rozwiązywanie problemów
    • Bezpieczeństwo
    • Testowanie
    • Opóźnienia
    • Spójność danych
  • Czy powinienem korzystać z mikrousług?
    • Kiedy mikrousługi mogą się nie sprawdzić?
    • Gdzie mikrousługi działają dobrze?
  • Podsumowanie

Rozdział 2. Jak modelować mikrousługi?

  • Przedstawiamy firmę MusicCorp
  • Co decyduje o tym, że granice mikrousługi są dobre?
    • Ukrywanie informacji
    • Spójność
    • Sprzężenia
    • Wzajemne oddziaływanie pomiędzy sprzężeniami a spójnością
  • Rodzaje sprzężeń
    • Sprzężenie domen
    • Sprzężenia przelotowe
    • Sprzężenie wspólnych danych
    • Sprzężenia treści
  • Wprowadzenie do metodologii projektowania opartego na domenie (DDD)
    • Język wszechobecny
    • Agregat
    • Kontekst ograniczony
    • Mapowanie agregatów i kontekstów ograniczonych na mikrousługi
    • Event Storming
  • Projektowanie DDD w kontekście mikrousług
  • Alternatywy dla granic domen biznesowych
    • Ulotność
    • Dane
    • Technologia
    • Względy organizacyjne
  • Modele mieszane i wyjątki
  • Podsumowanie

Rozdział 3. Dzielenie monolitu

  • Określenie celu
  • Migracja przyrostowa
  • Monolit rzadko jest Twoim wrogiem
    • Niebezpieczeństwa przedwczesnej dekompozycji
  • Co podzielić najpierw?
  • Dekompozycja według warstwy
    • Najpierw kod
    • Najpierw dane
  • Przydatne wzorce dekompozycji
    • Wzorzec figowca-dusiciela
    • Uruchamianie równoległe
    • Przełącznik funkcji
  • Problemy z dekompozycją danych
    • Wydajność
    • Integralność danych
    • Transakcje
    • Narzędzia
    • Bazy danych raportowania
  • Podsumowanie

Rozdział 4. Rodzaje komunikacji mikrousług

  • Od komunikacji wewnątrz procesu do komunikacji między procesami
    • Wydajność
    • Modyfikacje interfejsów
    • Obsługa błędów
  • Technologia komunikacji między procesami: wiele możliwości do wyboru
  • Style komunikacji mikrousług
    • Łącz i dopasowuj
  • Wzorzec komunikacja synchroniczna blokująca
    • Zalety
    • Wady
    • Gdzie stosować wzorzec?
  • Wzorzec komunikacja asynchroniczna nieblokująca
    • Zalety
    • Wady
    • Gdzie stosować wzorzec?
  • Wzorzec komunikacja za pośrednictwem współdzielonych danych
    • Implementacja
    • Zalety
    • Wady
    • Gdzie stosować wzorzec?
  • Wzorzec komunikacja żądanie - odpowiedź
    • Implementacja: komunikacja synchroniczna kontra asynchroniczna
    • Gdzie stosować wzorzec?
  • Wzorzec komunikacja sterowana zdarzeniami
    • Implementacja
    • Co jest wewnątrz zdarzenia?
    • Gdzie stosować wzorzec?
  • Zachowaj ostrożność
  • Podsumowanie

Część II. Implementacja

Rozdział 5. Implementacja komunikacji mikrousług

  • Poszukiwanie idealnej technologii
    • Łatwość zachowania zgodności wstecz
    • Zdefiniuj interfejs w sposób jawny
    • Zachowaj niezależność technologii interfejsów API
    • Spraw, aby Twoja usługa była prosta dla konsumentów
    • Ukryj szczegóły wewnętrznej implementacji
  • Wybór technologii
    • Zdalne wywołania procedur
    • REST
    • GraphQL
    • Brokery wiadomości
  • Formaty serializacji
    • Formaty tekstowe
    • Formaty binarne
  • Schematy
    • Strukturalne i semantyczne naruszenia kontraktu
    • Czy należy używać schematów?
  • Obsługa zmian między mikrousługami
  • Unikanie zmian naruszających kontrakt
    • Zmiany rozszerzające
    • Tolerancyjny konsument
    • Właściwa technologia
    • Jawny interfejs
    • Wczesne wykrywanie zmian naruszających kontrakt
  • Zarządzanie zmianami naruszającymi zgodność wstecz
    • Wdrażanie lockstep
    • Współistnienie niezgodnych ze sobą wersji mikrousług
    • Emulowanie starego interfejsu
    • Jakie podejście preferuję?
    • Umowa społeczna
    • Śledzenie użycia
    • Środki ekstremalne
  • Zasada DRY i niebezpieczeństwa wielokrotnego wykorzystywania kodu w świecie mikrousług
    • Udostępnianie kodu za pośrednictwem bibliotek
  • Wykrywanie usług
    • DNS
    • Dynamiczne rejestry usług
    • Nie zapomnij o ludziach
  • Siatki usług i bramy interfejsów API
    • Bramy API
    • Siatki usług
    • A co z innymi protokołami?
  • Dokumentowanie usług
    • Jawne schematy
    • System samoopisujący się
  • Podsumowanie

Rozdział 6. Przepływy pracy

  • Transakcje bazodanowe
    • Transakcje ACID
    • Nadal ACID, ale bez niepodzielności?
  • Transakcje rozproszone - dwufazowe zatwierdzanie
  • Transakcje rozproszone - po prostu powiedz "nie"
  • Sagi
    • Tryby awarii dla sag
    • Implementacja sag
    • Sagi a transakcje rozproszone
  • Podsumowanie

Rozdział 7. Budowanie

  • Krótkie wprowadzenie do ciągłej integracji
    • Czy rzeczywiście stosujesz mechanizmy CI?
    • Modele rozgałęziania
  • Potoki budowania a ciągłe dostawy
    • Narzędzia
    • Kompromisy i środowiska
    • Tworzenie artefaktów
  • Mapowanie kodu źródłowego i kompilacji na mikrousługi
    • Jedno gigantyczne repozytorium, jedna gigantyczna kompilacja
    • Wzorzec jedno repozytorium na mikrousługę (tzw. multirepo)
    • Wzorzec monorepo
    • Jakie podejście bym zastosował?
  • Podsumowanie

Rozdział 8. Wdrażanie

  • Od widoku logicznego do fizycznego
    • Wiele egzemplarzy
    • Baza danych
    • Środowiska
  • Zasady wdrażania mikrousług
    • Odizolowane uruchamianie
    • Koncentracja na automatyzacji
    • Infrastruktura jako kod (IaC)
    • Wdrażanie bez przestojów
    • Zarządzanie pożądanym stanem
  • Opcje wdrażania
    • Maszyny fizyczne
    • Maszyny wirtualne
    • Kontenery
    • Kontenery aplikacji
    • Platforma jako usługa (PaaS)
    • Funkcja jako usługa (FaaS)
  • Która opcja wdrażania jest dla Ciebie odpowiednia?
  • Kubernetes i orkiestracja kontenerów
    • Przypadek orkiestracji kontenerów
    • Uproszczony widok pojęć związanych z Kubernetes
    • Wielodostępność i federacja
    • Cloud Native Computing Federation (CNCF)
    • Platformy i przenośność
    • Helm, Operator, CRD. O mój Boże!
    • I jeszcze Knative
    • Przyszłość
    • Czy powinieneś korzystać z Kubernetes?
  • Dostawy progresywne
    • Oddzielenie wdrożenia od wydania
    • Na drodze do dostaw progresywnych
    • Przełączniki funkcji
    • Wydania kanarkowe
    • Uruchamianie równoległe
  • Podsumowanie

Rozdział 9. Testowanie

  • Rodzaje testów
  • Zakres testów
    • Testy jednostkowe
    • Testy usług
    • Testy od końca do końca
    • Kompromisy
  • Implementacja testów usług
    • Mocki czy namiastki usług
    • Inteligentniejsza namiastka usługi
  • Kłopotliwe testy od końca do końca
    • Testy kruche i łamliwe
    • Kto pisze testy od końca do końca?
    • Jak długo?
    • Piętrzące się zaległości
    • Metawersje
    • Brak niezależnej testowalności
  • Czy należy unikać testów od końca do końca?
    • Testy kontraktu oraz kontrakty konsumenckie
    • Czy należy używać testów od końca do końca?
  • Wygoda pracy programistów
  • Od fazy przedprodukcyjnej do testowania w produkcji
    • Rodzaje testów w produkcji
    • Bezpieczeństwo testowania w produkcji
    • Średni czas do naprawy kontra średni czas między awariami
  • Testy współzależności funkcjonalnych
    • Testy wydajności
    • Testy wytrzymałości
  • Podsumowanie

Rozdział 10. Od monitorowania do obserwowalności

  • Niepokój, panika i zamieszanie
  • Jedna usługa, jeden serwer
  • Jedna usługa, wiele serwerów
  • Wiele usług, wiele serwerów
  • Obserwowalność a monitorowanie
    • Filary obserwowalności? Nie tak szybko
  • Elementy składowe obserwowalności
    • Agregacja logów
    • Agregacja metryk
    • Rozproszone śledzenie
    • Czy postępujemy właściwie?
    • Ostrzeganie
    • Monitorowanie semantyczne
    • Testowanie w produkcji
  • Standaryzacja
  • Wybór narzędzi
    • Wybór powinien być demokratyczny
    • Wybieraj narzędzia łatwe do integracji
    • Zapewniaj odpowiedni kontekst
    • Informacje w czasie rzeczywistym
    • Informacje odpowiednie dla Twojej skali
  • Maszynowy ekspert
  • Od czego zacząć?
  • Podsumowanie

Rozdział 11. Bezpieczeństwo

  • Podstawowe zasady
    • Zasada najmniejszych uprawnień
    • Obrona w głąb
    • Automatyzacja
    • Wbuduj zabezpieczenia w proces dostaw
  • Pięć funkcji cyberbezpieczeństwa
    • Identyfikacja
    • Ochrona
    • Wykrywanie
    • Reagowanie
    • Odtwarzanie
  • Podstawy zabezpieczeń aplikacji
    • Poświadczenia
    • Łatki bezpieczeństwa
    • Kopie zapasowe
    • Odbudowa
  • Zaufanie domyślne kontra zaufanie zerowe
    • Zaufanie domyślne
    • Zaufanie zerowe
    • To jest pasmo
  • Zabezpieczanie danych
    • Dane podczas przesyłania
    • Zabezpieczanie danych w spoczynku
  • Uwierzytelnianie i autoryzacja
    • Uwierzytelnianie między usługami
    • Uwierzytelnianie użytkowników
    • Popularne implementacje pojedynczego logowania
    • Brama pojedynczego logowania
    • Szczegółowa autoryzacja
    • Problem zdezorientowanego zastępcy
    • Scentralizowana autoryzacja w górze strumienia przetwarzania
    • Autoryzacja zdecentralizowana
    • Tokeny JWT
  • Podsumowanie

Rozdział 12. Niezawodność

  • Co to jest niezawodność?
    • Solidność
    • Zdolność do odtwarzania
    • Rozszerzalność z wdziękiem
    • Trwałe zdolności adaptacyjne
    • Architektura mikrousług
  • Awarie zdarzają się wszędzie
  • Jak wiele to zbyt wiele?
  • Degradowanie funkcjonalności
  • Wzorce stabilności
    • Limity czasu
    • Ponowienia prób
    • Grodzie
    • Bezpieczniki
    • Izolacja
    • Redundancja
    • Middleware
    • Idempotencja
  • Rozłożenie ryzyka
  • Twierdzenie CAP
    • Poświęcenie spójności
    • Poświęcenie dostępności
    • Poświęcenie tolerancji podziału?
    • AP czy CP?
    • To nie jest zasada "wszystko albo nic"
    • Świat rzeczywisty
    • Antykrucha organizacja
  • Inżynieria chaosu
    • Dni ćwiczeń
    • Eksperymenty produkcyjne
    • Wykraczając poza solidność
  • Szukanie winnych
  • Podsumowanie

Rozdział 13. Skalowanie

  • Cztery osie skalowania
    • Skalowanie pionowe
    • Implementacja
    • Najważniejsze korzyści
    • Ograniczenia
    • Zwielokrotnianie w poziomie
    • Partycjonowanie danych
    • Dekompozycja funkcjonalna
  • Łączenie modeli
  • Zacznij od małych rozmiarów
  • Buforowanie
    • Buforowanie w celu poprawy wydajności
    • Buforowanie w celu skalowania
    • Buforowanie w celu poprawy niezawodności
    • Gdzie buforować
    • Unieważnianie
    • Złota zasada buforowania
    • Aktualność danych a optymalizacja
    • Zatrucie pamięcią podręczną - historia ku przestrodze
  • Autoskalowanie
  • Zaczynanie od nowa
  • Podsumowanie

Część III. Ludzie

Rozdział 14. Interfejsy użytkownika

  • W stronę środowiska cyfrowego
  • Modele własności
    • Przesłanki dla tworzenia dedykowanych zespołów frontendowych
  • Zespoły dopasowane do strumienia przetwarzania
    • Współdzielenie specjalistów
    • Zapewnienie spójności
    • Pokonywanie technicznych wyzwań
  • Wzorzec monolityczny frontend
    • Kiedy należy korzystać ze wzorca?
  • Wzorzec mikrofrontend
    • Implementacja
    • Kiedy stosować wzorzec?
  • Wzorzec dekompozycja na bazie stron
    • Gdzie stosować wzorzec?
  • Wzorzec dekompozycja oparta na widżetach
    • Implementacja
    • Kiedy korzystać ze wzorca?
  • Ograniczenia
  • Wzorzec centralna brama agregująca
    • Własność
    • Różne typy interfejsów użytkownika
    • Wiele obaw
    • Kiedy korzystać ze wzorca?
  • Wzorzec backend dla frontendu (BFF)
    • Ile komponentów BFF?
    • Wielokrotne użycie kodu a BFF
    • BFF dla desktopowego interfejsu webowego i nie tylko
    • Kiedy korzystać ze wzorca?
  • GraphQL
  • Podejście hybrydowe
  • Podsumowanie

Rozdział 15. Struktury organizacyjne

  • Organizacje luźno sprzężone
  • Prawo Conwaya
    • Dowody
  • Wielkość zespołu
  • Zrozumieć prawo Conwaya
  • Małe zespoły, duża organizacja
  • O autonomii
  • Własność silna kontra własność kolektywna
    • Własność silna
    • Własność kolektywna
    • Na poziomie zespołu kontra na poziomie organizacji
    • Równoważenie modeli
  • Zespoły wspomagające
    • Społeczności praktyków
    • Platforma
  • Mikrousługi współdzielone
    • Zbyt trudne do rozdzielenia
    • Przekrojowe zmiany
    • Wąskie gardła dostaw
  • Wewnętrzne open source
    • Rola opiekunów
    • Dojrzałość
    • Narzędzia
  • Mikrousługi modułowe
    • Przeglądy zmian
  • Usługa osierocona
  • Studium przypadku: RealEstate.com.au
  • Rozproszenie geograficzne
  • Odwrócone prawo Conwaya
  • Ludzie
  • Podsumowanie

Rozdział 16. Ewolucyjny architekt

  • Co oznacza ta nazwa?
  • Czym jest architektura oprogramowania?
  • Umożliwienie wprowadzania zmian
  • Ewolucyjna wizja architekta
  • Definiowanie granic systemowych
  • Konstrukt społeczny
  • Warunki do "zamieszkiwania"
  • Pryncypialne podejście
    • Cele strategiczne
    • Zasady
    • Praktyki
    • Łączenie zasad i praktyk
    • Praktyczny przykład
  • Kierowanie architekturą ewolucyjną
  • Architektura w organizacji dostosowanej do strumienia przetwarzania
  • Budowanie zespołu
  • Wymagane standardy
    • Monitorowanie
    • Interfejsy
    • Bezpieczeństwo architektury
  • Zarządzanie i droga utwardzona
    • Przykładowe egzemplarze
    • Spersonalizowany szablon usługi
    • Utwardzona droga na dużą skalę
  • Dług techniczny
  • Obsługa wyjątków
  • Podsumowanie

Posłowie: mikrousługi w pigułce

Bibliografia

Glosariusz

  • Titel: Budowanie mikrousług. Projektowanie drobnoziarnistych systemów. Wydanie II
  • Autor: Sam Newman
  • Originaler Titel: Building Microservices: Designing Fine-Grained Systems, 2nd Edition
  • Übersetzung: Radosław Meryk
  • ISBN: 978-83-283-8801-7, 9788328388017
  • Veröffentlichungsdatum: 2022-06-21
  • Format: E-book
  • Artikelkennung: budmi2
  • Verleger: Helion