O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Budowanie mikrousług

Book Description

Architektura mikrousług to sposób na odejście od dużych, monolitycznych aplikacji. Wyspecjalizowane usługi realizujące konkretne zadania i komunikujące się z otoczeniem pozwalają na lepsze zapanowanie nad kodem, są łatwiejsze do przetestowania oraz bardziej elastyczne. Jednak oprócz zalet mają też wady. Sięgnij po tę książkę i dowiedz się, jak najlepiej radzić sobie z architekturą mikrousług! Autor przedstawia w książce skuteczne techniki projektowania i korzystania z architektury mikrousług. W trakcie lektury kolejnych rozdziałów poznasz w szczegółach ideę mikrousług, korzyści ich stosowania, sposoby modelowania usług oraz skuteczne techniki dzielenia dużej aplikacji na mikrousługi.

Table of Contents

  1. okładka
  2. tytuł strony
  3. Prawa autorskie strony
  4. Spis treści
  5. Przedmowa
    1. Dla kogo jest ta książka?
    2. Dlaczego napisałem tę książkę?
    3. Jak mikrousługi wyglądają dziś?
    4. Poruszanie się po tej książce
    5. Konwencje stosowane w książce
    6. Podziękowania
  6. Rozdział 1. Mikrousługi
    1. Czym są mikrousługi?
      1. Niewielkie, skoncentrowane na dobrym wykonywaniu jednej rzeczy
      2. Autonomiczne
    2. Najważniejsze korzyści
      1. Niejednorodność technologii
      2. Odporność na błędy
      3. Skalowanie
      4. Łatwość wdrażania
      5. Dopasowanie do organizacji zespołów
      6. Interoperatywność
      7. Optymalizacja w kierunku wymienności
    3. Architektura zorientowana na usługi
    4. Inne techniki dekompozycji
      1. Biblioteki współdzielone
      2. Moduły
    5. Nie istnieje panaceum na wszystko
    6. Podsumowanie
  7. Rozdział 2. Ewolucyjny architekt
    1. Niedokładne porównania
    2. Ewolucyjna wizja architekta
    3. Podział na strefy
    4. Pryncypialne podejście
      1. Cele strategiczne
      2. Zasady
      3. Praktyki
      4. Łączenie zasad i praktyk
      5. Praktyczny przykład
    5. Wymagane standardy
      1. Monitorowanie
      2. Interfejsy
      3. Bezpieczeństwo architektury
    6. Zarządzanie za pośrednictwem kodu
      1. Przykładowe egzemplarze
      2. Spersonalizowany szablon usługi
    7. Dług techniczny
    8. Obsługa wyjątków
    9. Zarządzanie i przewodnictwo od środka
    10. Budowanie zespołu
    11. Podsumowanie
  8. Rozdział 3. Jak modelować usługi?
    1. Przedstawiamy firmę MusicCorp
    2. Co decyduje o tym, że usługa jest dobra?
      1. Luźne sprzężenia
      2. Wysoka spójność
    3. Ograniczony kontekst
      1. Modele współdzielone i ukryte
      2. Moduły i usługi
      3. Przedwczesna dekompozycja
    4. Możliwości biznesowe
    5. Żółwie aż do spodu
    6. Komunikacja w kategoriach pojęć biznesowych
    7. Granice techniczne
    8. Podsumowanie
  9. Rozdział 4. Integracja
    1. Poszukiwanie idealnej technologii integracji
      1. Unikanie wprowadzania przełomowych zmian
      2. Dbanie o niezależność interfejsów API od technologii
      3. Dbałość o zapewnienie prostoty usługi dla konsumentów
      4. Ukrycie wewnętrznych szczegółów implementacji
    2. Interfejs z klientami
    3. Wspólna baza danych
    4. Komunikacja synchroniczna kontra asynchroniczna
    5. Aranżacja kontra choreografia
    6. Zdalne wywołania procedur
      1. Sprzężenia technologii
      2. Wywołania lokalne różnią się od zdalnych
      3. Kruchość
      4. Czy wywołania RPC są złym rozwiązaniem?
    7. REST
      1. REST a HTTP
      2. Hipermedium jako silnik stanu aplikacji
      3. JSON, XML czy coś innego?
      4. Uważaj na zbyt wielkie wygody
      5. Wady interfejsu REST przez HTTP
    8. Implementacja współpracy asynchronicznej, bazującej na zdarzeniach
      1. Opcje wyboru technologii
      2. Zawiłości architektur asynchronicznych
    9. Usługi jako maszyny stanów
    10. Rozszerzenia reaktywne
    11. DRY i perypetie wielokrotnego wykorzystania kodu w świecie mikrousług
      1. Biblioteki klienckie
    12. Dostęp przez referencję
    13. Zarządzanie wersjami
      1. Odkładaj modyfikowanie interfejsu tak długo, jak to możliwe
      2. Wczesne wychwytywanie zmian naruszających zgodność interfejsu
      3. Zastosowanie semantycznej kontroli wersji
      4. Współistnienie różnych punktów końcowych
      5. Korzystanie z wielu równoległych wersji usługi
    14. Interfejsy użytkownika
      1. W stronę środowiska cyfrowego
      2. Ograniczenia
      3. Kompozycja interfejsów API
      4. Kompozycja fragmentu interfejsu użytkownika
      5. Zaplecza dla frontonów
      6. Podejście hybrydowe
    15. Integracja z oprogramowaniem zewnętrznych producentów
      1. Brak kontroli
      2. Personalizacja
      3. Makaron integracji
      4. Personalizacja na własnych warunkach
        1. Przykład: CMS jako usługa
        2. Przykład: System CRM pełniący wiele ról
      5. Wzorzec Dusiciel
    16. Podsumowanie
  10. Rozdział 5. Dzielenie monolitu
    1. To wszystko są szwy
    2. Podział systemu w firmie MusicCorp
    3. Powody dzielenia monolitu
      1. Tempo zmian
      2. Struktura zespołu
      3. Bezpieczeństwo
      4. Technologia
    4. Splątane zależności
    5. Baza danych
    6. Zlikwidowanie problemu
    7. Przykład: eliminowanie relacji kluczy obcych
    8. Przykład: wspólne statyczne dane
    9. Przykład: współdzielone dane
    10. Przykład: wspólne tabele
    11. Refaktoryzacja baz danych
      1. Podział na etapy
    12. Granice transakcyjne
      1. Spróbuj ponownie później
      2. Odrzucenie całej operacji
      3. Transakcje rozproszone
      4. Jakie rozwiązanie wybrać?
    13. Raportowanie
    14. Bazy danych raportowania
    15. Pobieranie danych za pośrednictwem wywołania usługi
    16. Pompy danych
      1. Alternatywne lokalizacje docelowe
    17. Pompa danych sterowana zdarzeniami
    18. Pompa danych z kopii zapasowej
    19. W stronę czasu rzeczywistego
    20. Koszty zmiany
    21. Zrozumieć przyczyny
    22. Podsumowanie
  11. Rozdział 6. Wdrażanie
    1. Krótkie wprowadzenie do ciągłej integracji
      1. Czy rzeczywiście to robisz?
    2. Mapowanie ciągłej integracji na mikrousługi
    3. Potoki kompilacji a ciągłe dostawy
      1. Nieuniknione wyjątki
    4. Artefakty specyficzne dla platformy
    5. Artefakty systemu operacyjnego
    6. Spersonalizowane obrazy
      1. Obrazy jako artefakty
      2. Serwery niezmienne
    7. Środowiska
    8. Konfiguracja usługi
    9. Odwzorowanie usługa-host
      1. Wiele usług na hoście
      2. Kontenery aplikacji
      3. Jedna usługa na host
      4. Platforma jako usługa
    10. Automatyzacja
      1. Dwa studia przypadków na potwierdzenie potęgi automatyzacji
    11. Od świata fizycznego do wirtualnego
      1. Tradycyjna wirtualizacja
      2. Vagrant
      3. Kontenery w Linuksie
      4. Docker
    12. Interfejs instalacji
      1. Definicja środowiska
    13. Podsumowanie
  12. Rozdział 7. Testowanie
    1. Rodzaje testów
    2. Zakres testów
      1. Testy jednostkowe
      2. Testy usług
      3. Testy od końca do końca
      4. Kompromisy
      5. Ile?
    3. Implementacja testów usług
      1. Makiety lub namiastki
      2. Inteligentniejsza namiastka usługi
    4. Kłopotliwe testy od końca do końca
    5. Wady testowania od końca do końca
    6. Testy kruche i łamliwe
      1. Kto pisze te testy?
      2. Jak długo?
      3. Piętrzące się zaległości
      4. Metawersje
    7. Testuj ścieżki, a nie historie
    8. Testy sterowane potrzebami konsumentów
      1. Pact
      2. Konwersacje
    9. Czy należy używać testów od końca do końca?
    10. Testowanie po opublikowaniu systemu do produkcji
      1. Oddzielenie wdrożenia od publikacji
      2. Publikacje kanarkowe
      3. Średni czas do naprawy kontra średni czas między awariami
    11. Testy współzależności funkcjonalnych
      1. Testy wydajności
    12. Podsumowanie
  13. Rozdział 8. Monitorowanie
    1. Jedna usługa, jeden serwer
    2. Jedna usługa, wiele serwerów
    3. Wiele usług, wiele serwerów
    4. Logi, logi i jeszcze raz logi...
    5. Śledzenie metryk dotyczących wielu usług
    6. Metryki usług
    7. Monitorowanie syntetyczne
      1. Implementacja monitorowania semantycznego
    8. Identyfikatory korelacji
    9. Kaskada
    10. Standaryzacja
    11. Weź pod uwagę użytkowników
    12. Przyszłość
    13. Podsumowanie
  14. Rozdział 9. Bezpieczeństwo
    1. Uwierzytelnianie i autoryzacja
      1. Popularne implementacje pojedynczego logowania
      2. Brama pojedynczego logowania
      3. Szczegółowa autoryzacja
    2. Uwierzytelnianie i autoryzacja w trybie usługa-usługa
      1. Zezwalaj na wszystko wewnątrz obszaru
      2. Podstawowe uwierzytelnianie HTTP(S)
      3. Korzystanie z SAML lub OpenID Connect
      4. Certyfikaty klienta
      5. HMAC przez HTTP
      6. Klucze API
      7. Problem zastępcy
    3. Zabezpieczanie danych w spoczynku
      1. Korzystaj ze sprawdzonych sposobów
      2. Wszystko dotyczy kluczy
      3. Wybierz swoje cele
      4. Odszyfruj dane na żądanie
      5. Szyfruj kopie zapasowe
    4. Obrona wielostrefowa
      1. Zapory firewall
      2. Rejestrowanie
      3. Systemy wykrywania włamań (i zapobiegania im)
      4. Podział sieci
      5. System operacyjny
    5. Praktyczny przykład
    6. Bądź oszczędny
    7. Czynnik ludzki
    8. Złota reguła
    9. Wdrażanie zabezpieczeń
    10. Zewnętrzna weryfikacja
    11. Podsumowanie
  15. Rozdział 10. Prawo Conwaya a projektowanie systemów
    1. Dowody
      1. Organizacje sprzężone luźno i ściśle
      2. Windows Vista
    2. Netflix i Amazon
    3. Co można z tym zrobić?
    4. Dostosowanie się do ścieżek komunikacyjnych
    5. Własność usługi
    6. Powody współdzielenia usług
      1. Zbyt trudne do rozdzielenia
      2. Zespoły funkcyjne
      3. Wąskie gardła dostaw
    7. Wewnętrzne Open Source
      1. Rola opiekunów
      2. Dojrzałość
      3. Narzędzia
    8. Konteksty ograniczone a struktura zespołów
    9. Usługa osierocona?
    10. Studium przypadku: RealEstate.com.au
    11. Odwrócone prawo Conwaya
    12. Ludzie
    13. Podsumowanie
  16. Rozdział 11. Mikrousługi w projektach dużej skali
    1. Awarie zdarzają się wszędzie
    2. Jak wiele jest zbyt wiele?
    3. Degradowanie funkcjonalności
    4. Środki bezpieczeństwa architektury
    5. Antykrucha organizacja
      1. Limity czasu
      2. Bezpieczniki
      3. Grodzie
      4. Izolacja
    6. Idempotencja
    7. Skalowanie
      1. Zwiększenie rozmiarów
      2. Podział obciążeń
      3. Rozłożenie ryzyka
      4. Równoważenie obciążenia
      5. Systemy bazujące na wątkach roboczych
      6. Zaczynanie od nowa
    8. Skalowanie baz danych
      1. Dostępność usługi kontra trwałość danych
      2. Skalowanie do obsługi operacji odczytu
      3. Skalowanie do obsługi operacji zapisu
      4. Wspólna infrastruktura bazy danych
      5. CQRS
    9. Buforowanie
      1. Buforowanie po stronie klienta, na serwerze proxy i po stronie serwera
      2. Buforowanie w HTTP
      3. Buforowanie operacji zapisu
      4. Buforowanie w celu poprawy niezawodności
      5. Ukrywanie źródła
      6. Zachowaj prostotę
      7. Zatrucie pamięcią podręczną: historia ku przestrodze
    10. Autoskalowanie
    11. Twierdzenie CAP
      1. Poświęcenie spójności
      2. Poświęcenie dostępności
      3. Poświęcenie tolerancji podziału?
      4. AP czy CP?
      5. To nie jest zasada „wszystko albo nic”
      6. Świat rzeczywisty
    12. Wykrywanie usług
      1. DNS
    13. Dynamiczne rejestry usług
      1. Zookeeper
      2. Consul
      3. Eureka
      4. Tworzenie własnych rozwiązań
      5. Nie zapomnij o ludziach!
    14. Dokumentowanie usług
      1. Swagger
      2. HAL i przeglądarka HAL
    15. System samoopisujący się
    16. Podsumowanie
  17. Rozdział 12. Podsumowanie
    1. Zasady dotyczące mikrousług
      1. Wzorowanie na koncepcjach działania biznesu
      2. Przyjęcie kultury automatyzacji
      3. Ukrywanie wewnętrznych szczegółów implementacji
      4. Decentralizacja wszystkich operacji
      5. Możliwość niezależnej instalacji
      6. Izolowanie awarii
      7. Łatwe do obserwacji
    2. Kiedy nie należy używać mikrousług?
    3. Ostatnie słowo
  18. Skorowidz
  19. O autorze
  20. Kolofon
  21. Przypisy
    1. Rozdział 3. Jak modelować usługi?
    2. Rozdział 4. Integracja
    3. Rozdział 7. Testowanie
    4. Rozdział 9. Bezpieczeństwo
    5. Rozdział 10. Prawo Conwaya a projektowanie systemów