Book description
Python zyskuje coraz większą popularność i jest wykorzystywany do tworzenia bardzo różnych aplikacji, jednak projektowanie dużych, niezawodnych systemów w tym języku bywa wyzwaniem. Rozwijanie złożonych systemów o wysokiej jakości wymaga zastosowania odpowiedniej architektury. Trudno w Pythonie stosować takie wysokopoziomowe wzorce projektowe jak architektura sześciokątna, architektura oparta na zdarzeniach czy wzorce zalecane dla projektowania dziedzinowego (DDD). Sytuacji nie poprawia również to, że klasyczna literatura dotycząca metod zarządzania złożonością aplikacji zawiera przykłady kodu napisanego w Javie lub C#. Programiści Pythona często więc uznają takie książki za mało przydatne w swojej pracy.
Table of contents
- Wstęp
- Wprowadzenie
- Część I. Budowa architektury wspierającej modelowanie domeny
- Rozdział 1. Modelowanie domeny
-
Rozdział 2. Wzorzec Repozytorium
- Zapisywanie modelu domeny
- Trochę pseudokodu — czego będziemy potrzebować?
- Zastosowanie zasady odwrócenia zależności do dostępu do danych
- Przypomnienie — nasz model
- Wprowadzenie do wzorca Repozytorium
- Budowa imitacji repozytorium na potrzeby testów nie jest łatwa
- Czym są porty i adaptery w Pythonie
- Podsumowanie
- Rozdział 3. Interludium na temat powiązań i abstrakcji
-
Rozdział 4. Pierwszy przypadek użycia — API Flask i warstwa usług
- Łączenie naszej aplikacji z prawdziwym światem
- Pierwszy test kompleksowy
- Prosta implementacja
- Błędy wymagające sprawdzenia bazy danych
- Wprowadzenie warstwy usług i testowanie jej za pomocą FakeRepository
- Dlaczego wszystko nazywa się usługą
- Rozmieszczenie plików w folderach, aby uzyskać przejrzysty obraz struktury
- Podsumowanie
- Rozdział 5. TDD na wysokich i niskich obrotach
-
Rozdział 6. Wzorzec Jednostka Pracy
- Jednostka pracy współpracuje z repozytorium
- Testy integracyjne jednostki pracy
- Jednostka pracy i jej menedżer kontekstu
- Używanie jednostki pracy w warstwie usługowej
- Testy zatwierdzania i wycofywania zmian
- Zatwierdzenia jawne i niejawne
- Przykłady — użycie jednostki pracy do grupowania operacji w jednostkę atomową
- Porządkowanie testów integracyjnych
- Podsumowanie
- Rozdział 7.
-
Agregaty i granice spójności
- Czemu nie wykonać wszystkiego w arkuszu kalkulacyjnym?
- Niezmienniki, ograniczenia i spójność
- Czym jest agregat
- Wybór agregatu
- Jeden agregat = jedno repozytorium
- Kwestia wydajności
- Optymistyczna współbieżność a numery wersji
- Opcje implementacji numerów wersji
- Sprawdzanie zgodności z regułami integralności danych
- Podsumowanie
- Część I — podsumowanie
- Część II. Architektura sterowana zdarzeniami
-
Rozdział 8. Zdarzenia i szyna wiadomości
- Jak nie narobić bałaganu
- Zasada pojedynczej odpowiedzialności
- Wielkie wejście szyny wiadomości
- Opcja 1. Warstwa usługowa odbiera zdarzenia z modelu i umieszcza je w szynie wiadomości
- Opcja 2. Warstwa usług sama zgłasza zdarzenia
- Opcja 3. Jednostka pracy publikuje zdarzenia w szynie wiadomości
- Podsumowanie
- Rozdział 9. Szyna wiadomości w pełnej krasie
- Rozdział 10. Polecenia i procedury obsługi poleceń
-
Rozdział 11. Architektura oparta na zdarzeniach — integracja mikrousług za pomocą zdarzeń
- Rozproszona kula błota i myślenie rzeczownikami
- Obsługa błędów w systemach rozproszonych
- Alternatywa — rozprzężenie pod względem czasowym przy użyciu wiadomości asynchronicznych
- Użycie kanału publikacji-subskrypcji Redis do integracji
- Test kompleksowy, który to wszystko sprawdzi
- Zdarzenia wewnętrzne i zewnętrzne
- Podsumowanie
-
Rozdział 12. Wzorzec podziału odpowiedzialności między polecenia i zapytania (CQRS)
- Modele domeny służą do zapisu
- Większość klientów nie kupi waszych mebli
- Post-Redirect-Get i CQS
- Trzymajcie się mocno
- Testowanie widoków CQRS
- Opcja „oczywista” — użycie istniejącego repozytorium
- Twój model domeny nie jest zoptymalizowany pod kątem operacji odczytu
- Oczywista opcja 2 — użycie ORM
- SELECT N+1 i inne sprawy związane z wydajnością
- Czas całkiem obniżyć loty
- Zmiana implementacji modelu odczytu jest łatwa
- Podsumowanie
-
Rozdział 13. Wstrzykiwanie zależności (i bootstrapping)
- Zależności jawne i niejawne
- Czy jawne zależności nie są dziwne i nie pachną Javą?
- Przygotowywanie procedur obsługi — ręczne wstrzykiwanie zależności przy użyciu domknięć i funkcji częściowych
- Alternatywa z użyciem klas
- Skrypt rozruchowy
- Przekazywanie procedur obsługowych do szyny wiadomości w czasie działania programu
- Użycie funkcji rozruchowej w punktach wejścia
- Inicjalizacja DI w testach
- Prawidłowe tworzenie adaptera — działający przykład
- Podsumowanie
-
Epilog
- Co teraz?
- Jak dojść do celu?
- Separacja poplątanych elementów odpowiedzialności
- Identyfikacja agregatów i ograniczonych kontekstów
- Podejście zdarzeniowe do przejścia na mikrousługi za pomocą wzorca Figa Dusiciel
- Jak przekonać decydentów, aby spróbowali czegoś nowego
- Pytania naszych redaktorów, do których nie odnieśliśmy się w treści rozdziałów
- Strzały w stopę
- Co jeszcze warto przeczytać
- Podsumowanie
- Dodatek A. Podsumowanie — schemat i tabela
- Dodatek B. Szablon struktury projektu
- Dodatek C. Wymiana infrastruktury — wszystko za pomocą CSV
- Dodatek D. Repozytorium i Jednostka Pracy w Django
- Dodatek E. Walidacja
Product information
- Title: Architektura aplikacji w Pythonie
- Author(s):
- Release date: December 2020
- Publisher(s): Helion
- ISBN: 9788328371262
You might also like
book
The Book of Kubernetes
Containers ensure that software runs reliably no matter where it’s deployed, and Kubernetes is the open-source …
book
Practical Reliability Engineering, 5th Edition
With emphasis on practical aspects of engineering, this bestseller has gained worldwide recognition through progressive editions …
book
Advanced Microservices: A Hands-on Approach to Microservice Infrastructure and Tooling
Use the many types of tools required to navigate and maintain a microservice ecosystem. This book …
book
Quantum Physics For Dummies, Revised Edition
Quantum Physics For Dummies, Revised Edition helps make quantum physics understandable and accessible. From what quantum …