Szczegóły ebooka

Architektura API. Projektowanie, używanie i rozwijanie systemów opartych na API

Architektura API. Projektowanie, używanie i rozwijanie systemów opartych na API

James Gough, Daniel Bryant, Matthew Auburn

Ebook

Trendy w tworzeniu oprogramowania zmierzają w kierunku architektury zorientowanej na usługi. Coraz więcej organizacji decyduje się na rozwiązania chmurowe lub oparte na mikrousługach. Te wzorce architekturalne wymagają API: umiejętności ich budowania i stosowania podczas integracji z systemami zewnętrznymi. Nie są to proste zagadnienia - zaprojektowanie i utworzenie platformy API jest prawdziwym wyzwaniem.

W tej pozycji znajdziesz dokładne omówienie tematów związanych z nadawaniem struktury i ewoluowaniem API.

Sam Newman, autor książki Budowanie mikrousług. Projektowanie drobnoziarnistych systemów

Ten przewodnik, który docenią programiści i architekci, zawiera wyczerpujące omówienie zagadnień projektowania, funkcjonowania i modyfikowania architektury API. Od strony praktycznej przedstawia strategie budowania i testowania API REST umożliwiającego połączenie oferowanej funkcjonalności na poziomie mikrousług. Opisuje stosowanie bram API i infrastruktury typu service mesh. Autorzy dokładnie przyglądają się kwestiom zapewnienia bezpieczeństwa systemów opartych na API, w tym uwierzytelnianiu, autoryzacji i szyfrowaniu. Sporo miejsca poświęcają również ewolucji istniejących systemów w kierunku API i różnych docelowych platform.

Najważniejsze zagadnienia:

  • podstawy API i wzorce architekturalne platformy API
  • wdrażanie i konfiguracja komponentów platformy API
  • używanie bram API i infrastruktury typu service mesh
  • bezpieczeństwo API i najczęstsze luki w zabezpieczeniach
  • przekształcanie istniejących systemów w kierunku architektury bazującej na API

Doskonale napisana, zawiera wiele podpowiedzi, przykładów i praktycznych wskazówek.

Stefania Chaplin, GitLab & DevStefOps

Przedmowa

Wstęp

Wprowadzenie

CZĘŚĆ I. Opracowywanie, budowanie i testowanie API 33

  • 1. Opracowywanie, budowanie i określanie API
    • Przykład opracowywania API uczestnika
    • Wprowadzenie do stylu REST
      • Oparte na przykładzie wprowadzenie do technologii REST i HTTP
      • Model dojrzałości Richardsona
    • Wprowadzenie do API zdalnego wywoływania procedur
    • Krótkie wprowadzenie do GraphQL
    • Struktura i standardy API REST
      • Kolekcje i stronicowanie
      • Filtrowanie kolekcji
      • Obsługa błędów
      • Wskazówki dotyczące dokumentu typu ADR - wybór standardu API
    • Określanie API REST za pomocą OpenAPI
    • Praktyczne zastosowanie specyfikacji OpenAPI
      • Generowanie kodu
      • Weryfikacja OpenAPI
      • Przykłady i imitacje
      • Wykrywanie zmian
    • Wersjonowanie API
      • Wersjonowanie semantyczne
      • Specyfikacja OpenAPI i wersjonowanie
    • Implementacja RPC za pomocą gRPC
    • Modelowanie zmian i wybór formatu API
      • Usługi z wysokim poziomem ruchu sieciowego
      • Ogromne ilości wymienianych danych
      • Korzyści związane z wydajnością działania HTTP/2
      • Stare formaty
    • Wskazówki dotyczące dokumentu typu ADR - modelowanie wymiany danych
    • Wiele specyfikacji
      • Czy istnieje złoty środek?
      • Wyzwania związane z połączeniem specyfikacji
    • Podsumowanie
  • 2. Testowanie API
    • Użyty w tym rozdziale scenariusz systemu konferencyjnego
    • Strategie testowania
      • Kwadrant testów
      • Piramida testów
      • Wskazówki dotyczące dokumentu typu ADR - strategie testowania
    • Testowanie kontraktu
      • Dlaczego często preferowane jest testowanie kontraktu?
      • Jak jest implementowany kontrakt?
      • Wskazówki dotyczące dokumentu typu ADR - testowanie kontraktu
    • Testowanie komponentu API
      • Testowanie kontraktu kontra testowanie komponentu
      • Przykład użycia testowania komponentu do weryfikacji sposobu działania
    • Testowanie integracji API
      • Używanie szkieletów serwerów - kiedy i dlaczego?
      • Wskazówki dotyczące dokumentu typu ADR - testy integracji
      • Konteneryzowanie komponentów testowych - biblioteka Testcontainers
      • Przykład zastosowania biblioteki Testcontainers do weryfikacji integracji
    • Testy typu E2E
      • Automatyzacja weryfikacji E2E
      • Typy testów E2E
      • Wskazówki dotyczące dokumentu typu ADR - testowanie typu E2E
    • Podsumowanie

CZĘŚĆ II. API zarządzania ruchem sieciowym

  • 3. Bramy API - zarządzanie przychodzącym ruchem sieciowym
    • Czy brama API to jedyne rozwiązanie?
    • Wskazówki dotyczące dokumentu typu ADR - proxy, mechanizm równoważenia obciążenia lub brama API
    • Przykład udostępnienia konsumentom usługi uczestnika
    • Czym jest brama API?
    • Jaką funkcjonalność może zaoferować brama API?
    • Gdzie zostaje wdrożona brama API?
    • Jak brama API integruje się z innymi technologiami w położeniu brzegowym?
    • Dlaczego warto używać bramy API?
      • Zmniejszenie poziomu powiązania przez użycie wzorca adaptera/fasady między frontendem a backendem
      • Uproszczenie sposobu użycia przez agregację i tłumaczenie usług backendu
      • Ochrona API przed nadużyciami dzięki wykorzystaniu mechanizmu wykrywania zagrożeń i ich łagodzeniu
      • Zrozumienie, w jaki sposób może być używane API (monitorowanie)
      • Zarządzanie API jako produktem poprzez zarządzanie cyklem życiowym API
      • Zarabianie na API dzięki użyciu mechanizmów zarządzania kontem, rozliczeniami i płatnościami
    • Nowoczesna historia bram API
      • Od lat dziewięćdziesiątych ubiegłego wieku - sprzętowe mechanizmy równoważenia obciążenia
      • Od lat dwutysięcznych - programowe mechanizmy równoważenia obciążenia
      • Pierwsza dekada XXI wieku - kontrolery dostarczania aplikacji
      • Druga dekada XXI wieku - pierwsza generacja bram API
      • Rok 2015 - druga generacja bram API
    • Taksonomia obecnych bram API
      • Tradycyjne bramy korporacyjne
      • Mikrousługi i mikrobramy
      • Bramy infrastruktury typu service mesh
      • Porównanie typów bram API
    • Przykład ewolucji systemu konferencyjnego z użyciem bramy API
      • Instalacja stosu Ambassador Edge Stack w Kubernetes
      • Konfigurowanie mapowania ze ścieżek dostępu adresów URL do usług backendu
      • Konfiguracja mapowania z użyciem routingu bazującego na hoście
    • Wdrażanie bramy API - poznanie niepowodzeń i radzenie sobie z nimi
      • Brama API jako pojedynczy punkt awarii
      • Wykrywanie i usuwanie problemów
      • Rozwiązywanie problemów i radzenie sobie z incydentami
      • Łagodzenie ryzyka
    • Najczęściej pojawiające się problemy podczas implementacji bramy API
      • Pętla zwrotna bramy API
      • Brama API jako korporacyjna magistrala usług
      • Bramy API aż do końca
    • Wybór bramy API
      • Określenie wymagań
      • Samodzielne opracowanie rozwiązania kontra zakup gotowego
      • Wskazówki dotyczące dokumentu typu ADR - wybór bramy API
    • Podsumowanie
  • 4. Infrastruktura typu service mesh i zarządzanie ruchem sieciowym między usługami
    • Czy infrastruktura typu service mesh to jedyne rozwiązanie?
    • Wskazówki dotyczące dokumentu typu ADR - czy należy zastosować infrastrukturę typu service mesh?
    • Przykład wyodrębnienia funkcjonalności sesji do nowej usługi
    • Czym jest infrastruktura typu service mesh?
    • Jaką funkcjonalność dostarcza infrastruktura typu service mesh?
    • Gdzie jest wdrażana infrastruktura typu service mesh?
    • Jak infrastruktura typu service mesh integruje się z innymi topologiami sieci?
    • Dlaczego warto używać infrastruktury typu service mesh?
      • Pełna kontrola nad routingiem usługi, niezawodnością i zarządzaniem ruchem sieciowym
      • Niewidoczne monitorowanie
      • Wymuszenie bezpieczeństwa, np. szyfrowanie transmisji, uwierzytelnianie i autoryzacja
      • Obsługa komunikacji międzyfunkcyjnej w różnych językach programowania
      • Oddzielenie przychodzącego ruchu sieciowego od zarządzania ruchem sieciowym między usługami
    • Ewolucja infrastruktury typu service mesh
      • Wczesna historia i motywy
      • Wzorce implementacji
      • Czy niewymagająca proxy infrastruktura typu service mesh jest przyszłością?
    • Taksonomia infrastruktury typu service mesh
    • Przykład użycia infrastruktury typu service mesh na potrzeby związane z routingiem, monitorowaniem i zapewnieniem bezpieczeństwa
      • Routing za pomocą Istio
      • Monitorowanie ruchu sieciowego za pomocą Linkerd
      • Segmentacja sieci za pomocą narzędzia Consul
    • Wdrażanie infrastruktury typu service mesh - zrozumienie awarii i zarządzanie nimi
      • Infrastruktura typu service mesh jako pojedynczy punkt awarii
    • Najczęściej pojawiające się trudności podczas implementacji infrastruktury typu service mesh
      • Infrastruktura typu service mesh jako korporacyjna magistrala usług
      • Infrastruktura typu service mesh jako brama
      • Zbyt wiele warstw sieciowych
    • Wybór infrastruktury typu service mesh
      • Określenie wymagań
      • Samodzielne opracowanie rozwiązania kontra zakup gotowego
      • Lista rzeczy do sprawdzenia podczas wyboru infrastruktury typu service mesh
    • Podsumowanie

Część III. Funkcjonowanie API i jego zabezpieczanie

  • 5. Wdrażanie i wydawanie API
    • Rozdzielenie wdrożenia i wydania
      • Przykład włączania funkcjonalności
      • Zarządzanie ruchem sieciowym
    • Przykład modelowania wydań w systemie konferencyjnym
      • Cykl życiowy API
      • Mapowanie strategii wydań na cykl życiowy
      • Wskazówki dotyczące dokumentu typu ADR - rozdzielenie operacji wdrożenia i wydania dzięki użyciu zarządzania ruchem sieciowym i techniki włączania funkcjonalności
    • Strategie wydań
      • Wydania kanarkowe
      • Odbicie lustrzane ruchu sieciowego
      • Niebieski-zielony
    • Przykład przeprowadzania wdrożenia za pomocą narzędzia Argo Rollouts
    • Monitorowanie pod kątem sukcesu i identyfikowanie niepowodzeń
      • Trzy filary monitorowania
      • Ważne wskaźniki dla API
      • Odczytywanie sygnałów
    • Decyzje związane z efektywnymi wydaniami oprogramowania
      • Buforowanie odpowiedzi
      • Propagowanie nagłówka na poziomie aplikacji
      • Rejestrowanie danych, aby ułatwić debugowanie
      • Rozważenie użycia sprawdzonej platformy
      • Wskazówki dotyczące dokumentu typu ADR - sprawdzone platformy
    • Podsumowanie
  • 6. Bezpieczeństwo operacyjne - model zagrożeń dla API
    • Przykład zastosowania metody OWASP w API uczestnika
    • Ryzyko związane z niezabezpieczeniem zewnętrznego API
    • Modelowanie zagrożeń
    • Myśl jak atakujący
    • Jak odbywa się modelowanie zagrożeń?
      • Krok 1. - określ cele
      • Krok 2. - zbierz właściwe informacje
      • Krok 3. - rozłóż system na czynniki
      • Krok 4. - określ zagrożenia
      • Krok 5. - oceń ryzyko związane z zagrożeniami
      • Krok 6. - przeprowadź weryfikację
    • Podsumowanie
  • 7. Uwierzytelnianie i autoryzacja API
    • Uwierzytelnianie
      • Uwierzytelnianie użytkownika końcowego z wykorzystaniem tokenów
      • Uwierzytelnianie między systemami
      • Dlaczego nie należy łączyć kluczy i użytkowników?
    • OAuth2
      • Rola serwera autoryzacji i interakcje API
      • JSON Web Token (JWT)
      • Terminologia i mechanizmy grantów OAuth2
      • Wskazówki dotyczące dokumentu typu ADR - czy należy rozważyć użycie OAuth2?
      • Grant kodu autoryzacji
      • Token odświeżania
      • Grant danych uwierzytelniających klienta
      • Dodatkowe granty OAuth2
      • Wskazówki dotyczące dokumentu typu ADR - wybór używanego grantu OAuth2
      • Zasięg OAuth2
      • Wymuszenie autoryzacji
    • Wprowadzenie do OIDC
    • SAML 2.0
    • Podsumowanie

CZĘŚĆ IV. Architektura ewolucyjna z użyciem API

  • 8. Przeprojektowanie aplikacji do architektury bazującej na API
    • Dlaczego używać API do ewolucji systemu?
      • Tworzenie użytecznych abstrakcji - większa spójność
      • Definiowanie granic domeny - promowanie luźnego powiązania
    • Przykład pokazujący określenie granic domeny uczestnika
    • Opcje architekturalne stanu końcowego
      • Monolit
      • Architektura zorientowana na usługi
      • Mikrousługi
      • Funkcje
    • Zarządzanie procesem ewolucyjnym
      • Określenie celu
      • Używanie funkcji przystosowania
      • Podział systemu na moduły
      • Utworzenie API jako "szwów" dla rozszerzenia
      • Określanie zmiany punktów wzmocnienia w systemie
      • Ciągłe wdrażanie i weryfikacja
    • Wzorce architekturalne dla wykorzystujących API systemów ewoluujących
      • Wzorzec "strangler fig"
      • Wzorce fasady i adaptera
      • Tort API
    • Określanie potencjalnych możliwości i trudnych miejsc
      • Problemy związane z uaktualnieniami i obsługą techniczną
      • Problemy związane z wydajnością działania
      • Przerwanie zależności - wysoce powiązane API
    • Podsumowanie
  • 9. Używanie infrastruktury API do ewolucji w kierunku platform chmury
    • Przykład przeniesienia usługi uczestnika do chmury
    • Wybór strategii migracji do chmury
      • Retain lub Revisit
      • Rehost
      • Replatform
      • Repurchase
      • Refactor/Rearchitect
      • Retire
    • Przykład zmiany platformy dla usługi uczestnika i przeniesienie jej do chmury
    • Rola zarządzania API
    • Ruch sieciowy typu północ - południe kontra ruch sieciowy typu wschód - zachód - zanikanie granic zarządzania ruchem sieciowym
      • Rozpoczęcie od położenia brzegowego, a następnie przejście do wnętrza sieci
      • Przekraczanie granic - routing między sieciami
    • Od architektury bazującej na strefach do sieci o zerowym zaufaniu
      • Architektura bazująca na strefach
      • Nie ufaj nikomu i sprawdzaj
      • Rola infrastruktury typu service mesh w architekturze bazującej na zerowym zaufaniu
    • Podsumowanie
  • 10. Podsumowanie
    • Spojrzenie wstecz na naszą podróż
    • API, prawo Conwaya i Twoja organizacja
    • Poznajemy rodzaje decyzji
    • Wybieganie w przyszłość
      • Komunikacja asynchroniczna
      • HTTP/3
      • Platforma typu service mesh
    • Co dalej? Jak nadal poznawać architekturę API?
      • Nieustanne doskonalenie podstaw
      • Śledzenie nowości w branży
      • Radary, kwadranty i raporty dotyczące trendów
      • Poznawanie najnowszych praktyk i przykładów
      • Uczenie się przez działanie
      • Uczenie się przez nauczanie
  • Tytuł: Architektura API. Projektowanie, używanie i rozwijanie systemów opartych na API
  • Autor: James Gough, Daniel Bryant, Matthew Auburn
  • Tytuł oryginału: Mastering API Architecture: Design, Operate, and Evolve API-Based Systems
  • Tłumaczenie: Robert Górczyński
  • ISBN: 978-83-289-0721-8, 9788328907218
  • Data wydania: 2024-02-06
  • Format: Ebook
  • Identyfikator pozycji: arcapi
  • Wydawca: Helion