Dodano produkt do koszyka

Promocja

ARCHITEKTURA APLIKACJI W PYTHONIE. TDD DDD I ROZWÓJ MIKROUSŁUG REAKTYWNYCH

ARCHITEKTURA APLIKACJI W PYTHONIE. TDD DDD I ROZWÓJ MIKROUSŁUG REAKTYWNYCH

HARRY PERCIVAL, BOB GREGORY

Wydawnictwo: HELION

Cena: 67.00 zł 52.93 brutto

Koszty dostawy:
  • Paczkomaty InPost 14.99 zł brutto
  • Poczta Polska - odbiór w punkcie 9.99 zł brutto
  • Poczta Polska - przedpłata 15.99 zł brutto
  • Poczta Polska - pobranie 19.99 zł brutto
  • Kurier DHL - przedpłata 18.99 zł brutto
  • Kurier DHL - pobranie 21.99 zł brutto
  • Odbiór osobisty - UWAGA - uprzejmie prosimy poczekać na informację z księgarni o możliwości odbioru zamówienia - 0.00 zł brutto

Opis

Opis produktu
ISBN: 978-83-283-7126-2
 
254 stron
format: B5
oprawa: miękka
Rok wydania: 2021
 

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.

SPIS TREŚCI

Wstęp

Wprowadzenie

CZĘŚĆ I. BUDOWA ARCHITEKTURY WSPIERAJĄCEJ MODELOWANIE DOMENY

1. Modelowanie domeny
Czym jest model domeny
Język domeny
Testy jednostkowe modeli domeny
Klasy danych są idealne dla obiektów wartości
Obiekty wartości a jednostki
Nie wszystko musi być obiektem - funkcja usługi domeny
Magiczne metody Pythona umożliwiają posługiwanie się modelami w standardowy sposób
Wyjątki także mogą wyrażać koncepcje domeny

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
"Normalny" sposób - model zależy od ORM
Odwrócenie zależności - ORM zależy od modelu
Wprowadzenie do wzorca Repozytorium
Abstrakcja repozytorium
Gdzie tkwi haczyk
Budowa imitacji repozytorium na potrzeby testów nie jest łatwa
Czym są porty i adaptery w Pythonie
Podsumowanie

3. Interludium na temat powiązań i abstrakcji
Abstrakcja stanu wspomaga testowanie
Wybór właściwych abstrakcji
Implementacja wybranych abstrakcji
Testowanie od brzegu do brzegu z imitacjami i wstrzykiwaniem zależności
Czemu by nie użyć biblioteki łatek?
Podsumowanie

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
Typowa funkcja usługowa
Dlaczego wszystko nazywa się usługą
Rozmieszczenie plików w folderach, aby uzyskać przejrzysty obraz struktury
Podsumowanie
Zasada odwrócenia zależności w praktyce

5. TDD na wysokich i niskich obrotach
Jak wygląda nasza piramida testów?
Czy przenieść testy warstwy domeny do warstwy usługowej?
Wybór rodzaju testów do napisania
Wysokie i niskie obroty
Całkowite oddzielenie testów warstwy usługowej od domeny
Rozwiązanie - przeniesienie wszystkich zależności domeny do konfiguracji testów
Dodawanie brakującej usługi
Ulepszanie testów kompleksowych
Podsumowanie

6. Wzorzec Jednostka Pracy
Jednostka pracy współpracuje z repozytorium
Testy integracyjne jednostki pracy
Jednostka pracy i jej menedżer kontekstu
Prawdziwa jednostka pracy używa sesji SQLAlchemy
Imitacja jednostki pracy do testów
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ą
Przykład 1. Realokacja
Przykład 2. Zmiana liczebności partii
Porządkowanie testów integracyjnych
Podsumowanie

7. Agregaty i granice spójności
Czemu nie wykonać wszystkiego w arkuszu kalkulacyjnym?
Niezmienniki, ograniczenia i spójność
Niezmienniki, współbieżność i blokady
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
Wymuszanie przestrzegania zasad dotyczących współbieżności za pomocą poziomów izolacji bazy danych
Przykład pesymistycznej kontroli współbieżności - SELECT FOR UPDATE
Podsumowanie
Część I - podsumowanie

CZĘŚĆ II. ARCHITEKTURA STEROWANA ZDARZENIAMI

8. Zdarzenia i szyna wiadomości
Jak nie narobić bałaganu
Pilnujmy porządku w kontrolerach sieciowych
Dbajmy też o porządek w modelu
To może warstwa usługowa
Zasada pojedynczej odpowiedzialności
Wielkie wejście szyny wiadomości
Model rejestruje zdarzenia
Zdarzenia to proste klasy danych
Model zgłasza zdarzenia
Szyna wiadomości wiąże zdarzenia z procedurami obsługi
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

9. Szyna wiadomości w pełnej krasie
Nowy wymóg prowadzi do opracowania nowej architektury
Zmiana architektury - wszystko będzie procedurą obsługi zdarzeń
Zamiana funkcji usługowych na procedury obsługi wiadomości
Teraz szyna wiadomości odbiera zdarzenia od jednostki pracy
Wszystkie testy także napiszemy pod kątem zdarzeń
Tymczasowa brzydka sztuczka - szyna wiadomości musi zwracać wyniki
Modyfikacja API, aby działał ze zdarzeniami
Implementacja nowego wymogu
Nasze nowe zdarzenie
Próba nowej procedury obsługi
Implementacja
Nowa metoda modelu domeny
Opcja - testy jednostkowe procedur obsługi zdarzeń w izolacji przy użyciu imitacji szyny wiadomości
Podsumowanie
Co osiągnęliśmy
Po co to wszystko

10. Polecenia i procedury obsługi poleceń
Polecenia i zdarzenia
Różnice w zakresie obsługi wyjątków
Zdarzenia, polecenia i obsługa błędów
Synchroniczne wychodzenie z błędów
Podsumowanie

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
Redis to kolejny cienki adapter wokół naszej szyny wiadomości
Nowe zdarzenie wyjściowe
Zdarzenia wewnętrzne i zewnętrzne
Podsumowanie

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
Aktualizacja tabeli modelu odczytu za pomocą procedury obsługi zdarzeń
Zmiana implementacji modelu odczytu jest łatwa
Podsumowanie

13. Wstrzykiwanie zależności (i bootstrapping)
Zależności jawne i niejawne 1
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
Definicja implementacji abstrakcyjnej i konkretnej
Utworzenie fałszywej wersji dla testów
Prawdziwy test integracyjny
Podsumowanie

Epilog

A. Podsumowanie - schemat i tabela

B. Szablon struktury projektu

C. Wymiana infrastruktury - wszystko za pomocą CSV

D. Repozytorium i Jednostka Pracy w Django

E. Walidacja

Kod wydawnictwa: 978-83-283-7126-2

Opinie, recenzje, testy:

Ten produkt nie ma jeszcze opinii

Twoja opinia

aby wystawić opinię.

Ocena:
  • Wszystkie pola są wymagane
Zapytaj o produkt

Produkty powiązane

Kontakt

Księgarnia Ekonomiczna Kazimierz Leki Sp. z o.o.

ul. Grójecka 67

02-094 Warszawa

NIP: 7010414095

Tel. 22 822 90 41

www.24naukowa.com.pl

naukowa@ksiegarnia-ekonomiczna.com.pl