Złożone zagadnienia architektury oprogramowania. Jak analizować kompromisy i podejmować trudne decyzje - ebook
Złożone zagadnienia architektury oprogramowania. Jak analizować kompromisy i podejmować trudne decyzje - 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
Spis treści
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
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-9528-2 |
Rozmiar pliku: | 13 MB |