Szczegóły ebooka

Złożone zagadnienia architektury oprogramowania. Jak analizować kompromisy i podejmować trudne decyzje

Złożone zagadnienia architektury oprogramowania. Jak analizować kompromisy i podejmować trudne decyzje

Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani

Ebook

W epoce infrastruktur chmurowych, mikrousług czy wysublimowanych wzorców projektowych architekt oprogramowania musi sobie radzić z trudnym zadaniem, jakim jest wybór odpowiednich rozwiązań. Będą one potem szczegółowo testowane podczas pracy w środowisku produkcyjnym, a także przy późniejszym dostosowywaniu i rozbudowywaniu oprogramowania. Tymczasem w wypadku architektury złożonych systemów nie ma łatwych kompromisów. Konieczne jest bardzo wnikliwe i krytyczne przemyślenie każdej decyzji projektowej, i to na możliwie najwcześniejszym etapie pracy.

Ta książka powinna zostać przestudiowana przez każdego architekta nowoczesnych systemów rozproszonych. Jej celem jest pokazanie sposobów rozwiązywania trudnych problemów związanych z projektowaniem takiego oprogramowania. W krytyczny i wszechstronny sposób omówiono w niej najważniejsze problemy utrudniające podejmowanie dobrych decyzji projektowych. Zaprezentowano najskuteczniejsze strategie doboru optymalnej architektury. Na jasnych przykładach pokazano, w jaki sposób należy przystąpić do analizy założeń projektowych ― począwszy od określenia "ziarnistości" usług, przepływów informacji i orkiestracji, poprzez eliminację sprzężenia kontraktów i określenie nadzoru nad transakcjami rozproszonymi, a skończywszy na metodach optymalizowania właściwości operacyjnych, takich jak skalowalność, elastyczność i wydajność.
Najciekawsze zagadnienia:

  • analiza kompromisów i dokumentowanie decyzji
  • podejmowanie decyzji dotyczących "ziarnistości" usług
  • złożoność procesu przekształcania aplikacji monolitycznych
  • eliminacja sprzężeń kontraktów wiążących usługi
  • obsługa danych w architekturze o dużym stopniu rozproszenia
  • wzorce zarządzania przepływami informacji i transakcjami

Architekt musi być prorokiem...

Frank Lloyd Wright

Przedmowa

Rozdział 1. Co się dzieje przy braku "najlepszych praktyk"?

  • Skąd określenie "trudne kwestie"?
  • Ponadczasowa rada dotycząca architektury oprogramowania
  • Ważność danych w architekturze
  • Rekord decyzji dotyczących architektury
  • Funkcje dopasowania architektury
    • Zastosowanie funkcji dopasowania
  • Architektura a projekt: utrzymywanie definicji w prostej postaci
  • Wprowadzenie do sagi zespołu operatorów systemu
    • Przepływ informacji bez zgłoszeń
    • Przepływ informacji ze zgłoszeniami
    • Zły scenariusz
    • Komponenty architektury aplikacji zespołu operatorów systemu
    • Model danych aplikacji zespołu operatorów systemu

Część I. Rozdzielanie wszystkiego

Rozdział 2. Rozpoznawanie sprzężenia w architekturze oprogramowania

  • Kwant (kwanty) architektury
    • Możliwość niezależnego wdrażania
    • Wysoki stopień spójności funkcjonalnej
    • Wysoki poziom sprzężenia statycznego
    • Dynamiczne sprzężenie kwantu
  • Saga zespołu operatorów systemu: zrozumienie kwantów

Rozdział 3. Modułowość architektury

  • Czynniki modułowości
    • Możliwość utrzymania
    • Możliwość testowania
    • Możliwość wdrażania
    • Skalowalność
    • Dostępność i odporność na błędy
  • Saga zespołu operatorów systemu: zapewnianie uzasadnienia biznesowego

Rozdział 4. Dekompozycja architektury

  • Czy baza kodu umożliwia dekompozycję?
    • Sprzężenie dośrodkowe i odśrodkowe
    • Abstrakcyjność i niestabilność
    • Odległość od ciągu głównego
  • Dekompozycja komponentowa
  • Rozdzielanie taktyczne
    • Kompromisy
  • Saga zespołu operatorów systemu: wybór metody dekompozycji

Rozdział 5. Wzorce dekompozycji komponentowej

  • Wzorzec Identyfikowanie komponentów i określanie ich wielkości
    • Opis wzorca
    • Funkcje dopasowania służące do zarządzania
    • Saga zespołu operatorów systemu: określanie wielkości komponentów
  • Wzorzec Gromadzenie wspólnych komponentów domeny
    • Opis wzorca
    • Funkcje dopasowania służące do zarządzania
    • Saga zespołu operatorów systemu: gromadzenie wspólnych komponentów
  • Wzorzec Wyrównywanie komponentów
    • Opis wzorca
    • Funkcje dopasowania służące do zarządzania
    • Saga zespołu operatorów systemu: wyrównywanie komponentów
  • Wzorzec Określanie zależności komponentów
    • Opis wzorca
    • Funkcje dopasowania służące do zarządzania
    • Saga zespołu operatorów systemu: określanie zależności komponentów
  • Wzorzec Tworzenie domen komponentów
    • Opis wzorca
    • Funkcje dopasowania służące do zarządzania
    • Saga zespołu operatorów systemu: tworzenie domen komponentów
  • Wzorzec Tworzenie usług domenowych
    • Opis wzorca
    • Funkcje dopasowania służące do zarządzania
    • Saga zespołu operatorów systemu: tworzenie usług domenowych
  • Podsumowanie

Rozdział 6. Rozdzielanie danych operacyjnych

  • Czynniki przemawiające za dekompozycją danych
    • Elementy dezintegracji danych
    • Elementy integracji danych
    • Saga zespołu operatorów systemu: uzasadnianie dekompozycji bazy danych
  • Dekompozycja danych monolitycznych
    • Krok 1: analizowanie bazy danych i tworzenie domen danych
    • Krok 2: przypisanie tabel do domen danych
    • Krok 3: rozdzielenie połączeń z bazą danych między domenami danych
    • Krok 4: przeniesienie schematów na osobne serwery baz danych
    • Krok 5: przełączenie na niezależne serwery baz danych
  • Wybieranie typu bazy danych
    • Relacyjne bazy danych
    • Bazy danych z parami klucz-wartość
    • Bazy danych dokumentów
    • Kolumnowe bazy danych
    • Grafowe bazy danych
    • Bazy danych NewSQL
    • Bazy danych przeznaczone dla usług w chmurze
    • Bazy danych szeregów czasowych
  • Saga zespołu operatorów systemu: różnorodne bazy danych

Rozdział 7. Ziarnistość usług

  • Elementy dezintegracji ziarnistości
    • Zasięg i przeznaczenie usługi
    • Ulotność kodu
    • Skalowalność i przepustowość
    • Odporność na błędy
    • Bezpieczeństwo
    • Rozszerzalność
  • Elementy integracji ziarnistości
    • Transakcje bazy danych
    • Przepływ informacji i choreografia
    • Kod współużytkowany
    • Relacje między danymi
  • Określanie właściwej równowagi
  • Saga zespołu operatorów systemu: ziarnistość usługi przydzielania zgłoszenia
  • Saga zespołu operatorów systemu: ziarnistość usługi rejestrowania klienta

Część II. Ponowne łączenie wszystkiego ze sobą

Rozdział 8. Wzorce ponownego wykorzystania

  • Replikowanie kodu
    • Kiedy używać?
  • Biblioteka współużytkowana
    • Zarządzanie zależnościami i kontrola zmian
    • Strategie numeracji wersji
    • Kiedy używać?
  • Usługa współużytkowana
    • Ryzyko zmian
    • Wydajność
    • Skalowalność
    • Odporność na błędy
    • Kiedy używać?
  • "Przyczepy" i siatka usług
    • Kiedy używać?
  • Saga zespołu operatorów systemu: wspólna logika infrastruktury
  • Ponowne wykorzystanie kodu: kiedy zapewnia to dodatkową wartość?
    • Ponowne wykorzystanie za pośrednictwem platform
  • Saga zespołu operatorów systemu: wspólna funkcjonalność domeny

Rozdział 9. Własność danych i transakcje rozproszone

  • Przypisywanie prawa własności danych
  • Scenariusz pojedynczej własności
  • Scenariusz ogólnej własności
  • Scenariusz współwłasności
    • Technika podziału tabeli
    • Technika domeny danych
    • Technika delegowania
  • Technika konsolidowania usług
  • Podsumowanie kwestii własności danych
  • Transakcje rozproszone
  • Wzorce ostatecznej spójności
    • Wzorzec synchronizacji w tle
    • Wzorzec oparty na żądaniach z orkiestracją
    • Wzorzec oparty na zdarzeniach
  • Saga zespołu operatorów systemu: własność danych przy przetwarzaniu zgłoszeń

Rozdział 10. Dostęp do danych rozproszonych

  • Wzorzec komunikacji między usługami
  • Wzorzec replikacji schematu kolumnowego
  • Wzorzec buforu replikowanego
  • Wzorzec domeny danych
  • Saga zespołu operatorów systemu: dostęp do danych na potrzeby przydzielania zgłoszeń

Rozdział 11. Zarządzanie rozproszonymi przepływami informacji

  • Wariant komunikacji z orkiestracją
  • Wariant komunikacji z choreografią
    • Zarządzanie stanem przepływu informacji
  • Kompromisy przy porównaniu orkiestracji z choreografią
    • Właściciel stanu i sprzężenie
  • Saga zespołu operatorów systemu: zarządzanie przepływami informacji

Rozdział 12. Sagi transakcyjne

  • Wzorce sag transakcyjnych
    • Wzorzec Saga Heroizmu
    • Wzorzec Saga Głuchego Telefonu
    • Wzorzec Saga Baśni
    • Wzorzec Saga Podróży w Czasie
    • Wzorzec Saga Fantastyki
    • Wzorzec Saga Grozy
    • Wzorzec Saga Równoległości
    • Wzorzec Saga Antologii
  • Zarządzanie stanem i spójność ostateczna
    • Maszyny stanów sagi
  • Techniki zarządzania sagami
  • Saga zespołu operatorów systemu: transakcje atomowe i aktualizacje kompensujące

Rozdział 13. Kontrakty

  • Porównanie kontraktów ścisłych i luźnych
    • Kompromisy towarzyszące ścisłym i luźnym kontraktom
    • Kontrakty w mikrousługach
  • Sprzężenie struktur danych
    • Przesadne sprzężenie w wyniku użycia sprzężenia struktur danych
    • Przepustowość
    • Użycie sprzężenia struktur danych do zarządzania przepływem informacji
  • Saga zespołu operatorów systemu: zarządzanie kontraktami obsługi zgłoszeń

Rozdział 14. Zarządzanie danymi analitycznymi

  • Dotychczasowe rozwiązania
    • Hurtownia danych
    • Jezioro danych
  • Siatka danych
    • Definicja siatki danych
    • Kwant produktu danych
    • Siatka danych, sprzężenie i kwant architektury
    • Kiedy korzystać z siatki danych?
  • Saga zespołu operatorów systemu: siatka danych

Rozdział 15. Tworzenie własnej analizy kompromisów

  • Określanie powiązanych ze sobą wymiarów
    • Sprzężenie
    • Analizowanie punktów sprzężenia
    • Ocena kompromisów
  • Techniki kompromisów
    • Porównanie analizy jakościowej i ilościowej
    • Listy zasady MECE
    • Pułapka wyjścia poza kontekst
    • Modelowanie odpowiednich przypadków domenowych
    • Preferowanie konkluzji nad dowód z nadmiarem informacji
    • Unikanie panaceum i żarliwego zapału
  • Saga zespołu operatorów systemu: epilog

Dodatek A. Odwołania do terminów i pojęć

Dodatek B. Odwołania do rekordów decyzji dotyczących architektury

Dodatek C. Zestawienie kompromisów

Skorowidz

  • Tytuł: Złożone zagadnienia architektury oprogramowania. Jak analizować kompromisy i podejmować trudne decyzje
  • Autor: Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani
  • Tytuł oryginału: Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures
  • Tłumaczenie: Piotr Pilch
  • ISBN: 978-83-283-9528-2, 9788328395282
  • Data wydania: 2023-01-03
  • Format: Ebook
  • Identyfikator pozycji: zlozag
  • Wydawca: Helion