Состояние Новый
Фактура Я выставляю счет-фактуру НДС
Язык издания польский
Вес с индивидуальной упаковкой 0.422 кг
Обложка мягкая
Материал бумажная книга
Год выпуска Две тысячи двадцать
Название Архитектура приложений Python
Количество 2 штук
Architektura aplikacji w Pythonie. TDD, DDD i rozwój mikrousług reaktywnych
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.
Ten praktyczny przewodnik przybliży projektantom pracującym w Pythonie sprawdzone wzorce architektury, które ułatwiają zapanowanie nad złożonością aplikacji i pozwalają najlepiej wykorzystać zestawy testów. Prezentację poszczególnych wzorców architektury oparto na przykładowej, stopniowo rozbudowywanej aplikacji. Podejście to pozwoliło na pokazanie zalet metodyki TDD. Z kolei w rozdziałach poświęconych modelowaniu dziedzinowemu zwrócono uwagę na unikanie jakichkolwiek zależności zewnętrznych przy równoczesnym zapewnieniu integralności danych. Wśród ciekawszych koncepcji warto wskazać wykorzystywanie zdarzeń w roli wzorca integracji usług w architekturze mikrousługowej. Niejako przy okazji zaprezentowano praktyczne strony stosowania kilku frameworków i technologii Pythona, między innymi Flask, SQLAlchemy, pytest, Docker i Redis.
W tej książce między innymi:
Architektura nowoczesnych aplikacji w Pythonie: rozwiązania dla poważnych systemów!
Harry Percival niegdyś był konsultantem specjalizującym się w zarządzaniu, później brał udział w pracach nad arkuszem kalkulacyjnym Resolver One. Pracował w PythonAnywhere LLP i promował metodykę TDD na konferencjach, warsztatach i innych wydarzeniach na całym świecie.
Wstęp 9
Wprowadzenie 17
CZĘŚĆ I. BUDOWA ARCHITEKTURY WSPIERAJĄCEJ MODELOWANIE DOMENY
1. Modelowanie domeny 25
Klasy danych są idealne dla obiektów wartości 33
Obiekty wartości a jednostki 35
Magiczne metody Pythona umożliwiają posługiwanie się modelami w standardowy sposób 38
Wyjątki także mogą wyrażać koncepcje domeny 38
2. Wzorzec Repozytorium 41
"Normalny" sposób - model zależy od ORM 44
Odwrócenie zależności - ORM zależy od modelu 45
Abstrakcja repozytorium 49
Gdzie tkwi haczyk 50
3. Interludium na temat powiązań i abstrakcji 57
Testowanie od brzegu do brzegu z imitacjami i wstrzykiwaniem zależności 64
Czemu by nie użyć biblioteki łatek? 65
4. Pierwszy przypadek użycia - API Flask i warstwa usług 69
Typowa funkcja usługowa 76
Zasada odwrócenia zależności w praktyce 80
5. TDD na wysokich i niskich obrotach 83
Rozwiązanie - przeniesienie wszystkich zależności domeny do konfiguracji testów 87
Dodawanie brakującej usługi 87
6. Wzorzec Jednostka Pracy 91
Prawdziwa jednostka pracy używa sesji SQLAlchemy 95
Imitacja jednostki pracy do testów 96
Przykład 1. Realokacja 99
Przykład 2. Zmiana liczebności partii 100
7. Agregaty i granice spójności 103
Niezmienniki, współbieżność i blokady 104
Wymuszanie przestrzegania zasad dotyczących współbieżności za pomocą poziomów izolacji bazy danych 115
Przykład pesymistycznej kontroli współbieżności - SELECT FOR UPDATE 116
CZĘŚĆ II. ARCHITEKTURA STEROWANA ZDARZENIAMI
8. Zdarzenia i szyna wiadomości 123
Pilnujmy porządku w kontrolerach sieciowych 124
Dbajmy też o porządek w modelu 125
To może warstwa usługowa 125
Model rejestruje zdarzenia 127
Zdarzenia to proste klasy danych 127
Model zgłasza zdarzenia 127
Szyna wiadomości wiąże zdarzenia z procedurami obsługi 128
9. Szyna wiadomości w pełnej krasie 137
Zmiana architektury - wszystko będzie procedurą obsługi zdarzeń 139
Teraz szyna wiadomości odbiera zdarzenia od jednostki pracy 142
Wszystkie testy także napiszemy pod kątem zdarzeń 143
Tymczasowa brzydka sztuczka - szyna wiadomości musi zwracać wyniki 144
Modyfikacja API, aby działał ze zdarzeniami 144
Nasze nowe zdarzenie 146
Implementacja 147
Nowa metoda modelu domeny 148
Co osiągnęliśmy 151
Po co to wszystko 151
10. Polecenia i procedury obsługi poleceń 153
11. Architektura oparta na zdarzeniach - integracja mikrousług za pomocą zdarzeń 163
Redis to kolejny cienki adapter wokół naszej szyny wiadomości 170
Nowe zdarzenie wyjściowe 171
12. Wzorzec podziału odpowiedzialności między polecenia i zapytania (CQRS) 175
Aktualizacja tabeli modelu odczytu za pomocą procedury obsługi zdarzeń 184
13. Wstrzykiwanie zależności (i bootstrapping) 189
Definicja implementacji abstrakcyjnej i konkretnej 201
Utworzenie fałszywej wersji dla testów 202
Prawdziwy test integracyjny 203
Epilog 207
A. Podsumowanie - schemat i tabela 223
B. Szablon struktury projektu 225
C. Wymiana infrastruktury - wszystko za pomocą CSV 233
D. Repozytorium i Jednostka Pracy w Django 239
E. Walidacja 247