-
nowość
-
promocja
Refaktoryzacja domenowa. Przewodnik DDD po przekształcaniu architektury monolitycznej w systemy modularne i mikrousługi - ebook
Refaktoryzacja domenowa. Przewodnik DDD po przekształcaniu architektury monolitycznej w systemy modularne i mikrousługi - ebook
Współczesne aplikacje muszą łączyć niespotykaną wcześniej zwinność i skalowalność z precyzyjnym dopasowaniem do celów biznesowych. Od programistów i architektów wymaga się dziś nie tylko doskonałości technicznej, ale także zrozumienia zasad rządzących daną domeną. Tę filozofię znakomicie wspiera projektowanie zorientowane domenowo domain-driven design (DDD).
Dzięki tej książce poznasz kluczowe koncepcje i praktyczne wskazówki, które pomogą Ci przekształcić monolit w nowoczesny, modułowy system. Autorzy szczegółowo omawiają strategiczne wzorce DDD, takie jak ograniczone konteksty i język wszechobecny, które poprawiają komunikację między ekspertami technicznymi i dziedzinowymi. Nauczysz się technik modelowania ułatwiających kontrolę nad złożonością i zwiększających elastyczność oprogramowania. Dowiesz się także, jak integrować mikrousługi, zarządzać komunikacją między nimi i zapewniać spójność danych i transakcji. W efekcie nauczysz się projektować systemy, w których logika biznesowa pozostaje w centrum wszystkich decyzji projektowych.
W książce między innymi:
- rozgraniczanie komponentów systemu
- wzorce strategiczne: ograniczone konteksty i język wszechobecny
- wzorce taktyczne do budowania agregatów i encji
- główne wzorce refaktoryzacji i ich wdrażanie
- architektury sterowane zdarzeniami a powiązania między komponentami
- testowanie integralności architektury
DDD: logika biznesowa to serce każdego dobrego projektu!
Spis treści
O autorach
O recenzentach
Przedmowa
Wprowadzenie
Część 1. Dlaczego warto stosować DDD, by stawić czoła złożoności?
- Rozdział 1. Ewolucja projektowania zorientowanego na domenę
- Ewolucja podejść do tworzenia oprogramowania
- Dotychczasowa historia DDD
- Czym jest projektowanie zorientowane na domenę (DDD)?
- Jak DDD zmienia podejście do problemu?
- Podsumowanie
- Rozdział 2. Kwestia złożoności - przestrzeń problemów i rozwiązań
- Radzenie sobie ze złożonością
- Framework Cynefin
- Teoria pozostałości
- EventStorming
- Przestrzeń problemów i przestrzeń rozwiązań
- Celowe odkrywanie
- Pięć poziomów niewiedzy
- Przezwyciężanie luk w wiedzy
- Spacer deleuzjański
- Podejmowanie decyzji i błędy poznawcze
- Zrozumienie systemu 1 i systemu 2
- Znaczenie systemu 1 i systemu 2 w refaktoryzacji
- Typowe błędy poznawcze w refaktoryzacji
- Przykład praktyczny - refaktoryzacja odziedziczonego systemu
- Podsumowanie
- Radzenie sobie ze złożonością
- Rozdział 3. Wzorce strategiczne
- Zrozumiała definicja terminów rozwiązuje połowę problemu
- Czym jest kontekst ograniczony?
- Podział domeny na sensowne granice
- Mapowanie kontekstu
- Zarządzanie komunikacją między kontekstami ograniczonymi
- Znaczenie prawidłowej komunikacji
- Wzorce komunikacji
- Końcowa mapa kontekstu
- Podsumowanie
- Zrozumiała definicja terminów rozwiązuje połowę problemu
- Rozdział 4. Wzorce taktyczne
- Wymagania techniczne
- Zrozumienie wzorców taktycznych w DDD
- Encje
- Obiekty wartości
- Agregaty
- Repozytoria
- Fabryki
- Usługi i moduły
- Usługi domenowe
- Usługi aplikacji
- Kluczowe różnice między usługami domenowymi a usługami aplikacji
- Moduły
- Moduły w refaktoryzacji złożonych systemów
- Zdarzenia domenowe i integracyjne
- Znaczenie zdarzeń we współczesnych aplikacjach
- Zdarzenia domenowe
- Zdarzenia integracyjne
- Przypadki użycia w naszej aplikacji browarniczej
- Przepływ zdarzeń i przepływ informacji
- Podsumowanie
Część 2. Refaktoryzacja odziedziczonych systemów
- Rozdział 5. Wprowadzenie do zasad refaktoryzacji
- Teoria przed praktyką
- Wyzwania ścisłego powiązania usług sprzedaży i magazynowania
- Wdrażanie CI/CD i obserwowalności w procesie refaktoryzacji
- Filary bezpiecznych zmian
- Analiza struktury rozwiązania
- Zrozumienie testów i ich roli w refaktoryzacji
- Zastosowanie piramidy testów - cały przykład
- W kierunku przejrzystszego i łatwiejszego w utrzymaniu kodu
- Zasada pojedynczej odpowiedzialności
- Zasada otwarte-zamknięte
- Zasada odwrócenia zależności
- Wzorzec strategii
- Podsumowanie
- Teoria przed praktyką
- Rozdział 6. Wyjście z chaosu
- Identyfikacja kluczowych domen
- Zrozumienie otoczenia biznesowego
- Mapowanie obecnej bazy kodu
- Identyfikacja kontekstów ograniczonych
- Definiowanie przejrzystych interfejsów
- Budowa modularnego monolitu
- Mediator kontra Fasada
- Testowanie i stabilizacja
- Podsumowanie
- Rozdział 7. Integracja zdarzeń z CQRS
- Rozumienie roli komunikatów w monolicie modularnym
- Polecenia a zdarzenia
- Zdarzenia domenowe i integracyjne
- Rozdzielenie odpowiedzialności poleceń i zapytań
- Bezpośrednia synchronizacja baz danych
- Odpytywanie bazy danych
- Widoki zmaterializowane
- Współdzielona baza danych
- Wyzwalacze bazodanowe
- Rejestrowanie zmian stanu za pomocą zdarzeń
- Integracja wzorca Event Sourcing w architekturze CQRS
- Dodawanie zdarzeń do naszego systemu ERP
- Testowanie modularnego monolitu sterowanego zdarzeniami
- Testy specyfikacji
- Przykład 1. Tworzenie zamówienia sprzedaży
- Przykład 2. Aktualizacja dostępności
- Podsumowanie
- Rozumienie roli komunikatów w monolicie modularnym
- Rozdział 8. Refaktoryzacja bazy danych
- Usługi modułowe i potrzeba refaktoryzacji baz danych
- Zasady refaktoryzacji baz danych i wyznaczania granic domen
- Ewolucyjne projektowanie baz danych
- Wzorce refaktoryzacji baz danych
- Wyodrębnianie usług i zarządzanie spójnością danych
- Przejście na nową architekturę i zapewnienie wydajności
- Wzorce dostępu do danych rozproszonych
- Optymalizacja wydajności zapytań poprzez buforowanie i indeksowanie
- Testowanie i wdrażanie
- Strategie testowania
- Strategie wdrażania modularnych baz danych
- Podsumowanie
- Rozdział 9. Wzorce DDD do ciągłej integracji i ciągłej refaktoryzacji
- Integracja DDD z CI/CD
- Dlaczego CI/CD korzysta z DDD?
- Łączenie biznesu i technologii
- Tworzenie pętli informacji zwrotnych
- Wzorce i techniki skutecznego refaktoryzowania zgodnie z DDD
- Podział kontekstów ograniczonych
- Łączenie kontekstów ograniczonych
- Ciągła refaktoryzacja w kontekście DDD
- Automatyzacja i narzędzia
- SonarQube i GitLab - przykład
- Przykład GitHub Actions
- Podsumowanie
- Integracja DDD z CI/CD
Część 3. Przejście od monolitu do mikrousług
- Rozdział 10. Kiedy i dlaczego warto przejść na architekturę mikrousług?
- Odkrywanie architektury mikrousług
- Przejście z monolitu modularnego na mikrousługi
- Monolit kontra mikrousługi
- Uzasadnienie stosowania mikrousług
- Wyzwania i aspekty do rozważenia
- Błędne założenia w obliczeniach rozproszonych
- Korzyści i kompromisy związane z przejściem na mikrousługi
- Ocena gotowości do wdrożenia mikrousług
- Oznaki gotowości do mikrousług
- Rola monolitu modułowego jako fundamentu
- Dlaczego wzorzec mediatora nie wystarcza do pełnego rozdzielenia komponentów?
- Przejście na komunikację sterowaną zdarzeniami
- Przygotowanie do mikrousług
- Strategie przechodzenia na mikrousługi
- Podsumowanie
- Odkrywanie architektury mikrousług
- Rozdział 11. Obsługa zdarzeń i ich ewolucji
- CQRS, Event Sourcing i błędne pojęcie o strumieniowaniu zdarzeń
- Cykl życia zdarzeń - dlaczego rozwój ma znaczenie?
- Wdrażanie CQRS+ES - pokonywanie wyzwań technicznych i kulturowych
- Strategie wersjonowania zdarzeń
- Proste wersjonowanie zdarzeń
- Jak zarządzać ewolucją zdarzeń poza agregatem?
- Podsumowanie
- Rozdział 12. Zarządzanie złożonością - zaawansowane podejścia do procesów biznesowych
- Złożoność zawsze była obecna
- Protokół zatwierdzania dwufazowego
- Wzorzec Saga
- Choreografia a orkiestracja
- Choreografia
- Orkiestracja
- Wybór między choreografią a orkiestracją
- Zrozumienie różnicy między menedżerami procesów a sagami
- Dlaczego wzorce Saga i Menedżer procesu nie są zamienne?
- Jak protokół 2PC odnosi się do wzorców Saga i Menedżer procesu?
- Obsługa błędów i odzyskiwanie transakcji w sagach
- Transakcje kompensujące i strategie odzyskiwania
- Nieprzerwane wykonywanie - zapewnienie niezawodności w sagach
- Sagi oparte na zdarzeniach
- Podsumowanie
- Złożoność zawsze była obecna
| Kategoria: | Programowanie |
| Zabezpieczenie: |
Watermark
|
| ISBN: | 978-83-289-3328-6 |
| Rozmiar pliku: | 9,3 MB |