Architektura aplikacji w Pythonie TDD DDD i rozwoj mikrouslug reaktywnych.pdf
(
2453 KB
)
Pobierz
Tytuł oryginału: Architecture Patterns with Python: Enabling Test-Driven Development,
Domain-Driven Design, and Event-Driven Microservices
Tłumaczenie: Łukasz Piwko
ISBN: 978-83-283-7126-2
© 2020 Helion SA
Authorized Polish translation of the English edition of Architecture Patterns with Python ISBN
9781492052203 © 2020 Harry Percival and Bob Gregory
This translation is published and sold by permission of O’Reilly Media, Inc.,
which owns or controls all rights to publish and sell the same.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autorzy oraz Helion SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne
i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym
ewentualne naruszenie praw patentowych lub autorskich. Autorzy oraz Helion SA nie ponoszą również
żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.
Helion SA
ul. Kościuszki 1c, 44-100 Gliwice
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/arappy
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Pliki z przykładami omawianymi w książce można znaleźć pod adresem:
ftp://ftp.helion.pl/przyklady/arappy.zip
Printed in Poland.
•
Kup książkę
•
Poleć książkę
•
Oceń książkę
•
Księgarnia internetowa
•
Lubię to! » Nasza społeczność
Spis treści
Wstęp .......................................................................................................................... 9
Wprowadzenie .......................................................................................................... 17
Część I. Budowa architektury wspierającej modelowanie domeny
1. Modelowanie domeny ............................................................................................. 25
Czym jest model domeny ........................................................................................................... 25
Język domeny ............................................................................................................................... 28
Testy jednostkowe modeli domeny ........................................................................................... 28
Klasy danych są idealne dla obiektów wartości ..................................................................33
Obiekty wartości a jednostki .................................................................................................35
Nie wszystko musi być obiektem — funkcja usługi domeny ................................................. 37
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
Zapisywanie modelu domeny .................................................................................................... 42
Trochę pseudokodu — czego będziemy potrzebować? .......................................................... 42
Zastosowanie zasady odwrócenia zależności do dostępu do danych ................................... 43
Przypomnienie — nasz model ................................................................................................... 43
„Normalny” sposób — model zależy od ORM ...................................................................44
Odwrócenie zależności — ORM zależy od modelu ...........................................................45
Wprowadzenie do wzorca Repozytorium ................................................................................ 48
Abstrakcja repozytorium .......................................................................................................49
Gdzie tkwi haczyk ...................................................................................................................50
3
Kup książkę
Poleć książkę
Budowa imitacji repozytorium na potrzeby testów nie jest łatwa .........................................53
Czym są porty i adaptery w Pythonie ........................................................................................54
Podsumowanie .............................................................................................................................54
3. Interludium na temat powiązań i abstrakcji ........................................................... 57
Abstrakcja stanu wspomaga testowanie ....................................................................................58
Wybór właściwych abstrakcji .....................................................................................................61
Implementacja wybranych abstrakcji ........................................................................................62
Testowanie od brzegu do brzegu z imitacjami i wstrzykiwaniem zależności ................ 64
Czemu by nie użyć biblioteki łatek? .................................................................................... 65
Podsumowanie .............................................................................................................................68
4. Pierwszy przypadek użycia — API Flask i warstwa usług ...................................... 69
Łączenie naszej aplikacji z prawdziwym światem ....................................................................71
Pierwszy test kompleksowy .........................................................................................................71
Prosta implementacja ..................................................................................................................72
Błędy wymagające sprawdzenia bazy danych ...........................................................................73
Wprowadzenie warstwy usług i testowanie jej za pomocą FakeRepository ........................74
Typowa funkcja usługowa .................................................................................................... 76
Dlaczego wszystko nazywa się usługą ........................................................................................78
Rozmieszczenie plików w folderach, aby uzyskać przejrzysty obraz struktury ...................79
Podsumowanie .............................................................................................................................80
Zasada odwrócenia zależności w praktyce ......................................................................... 80
5. TDD na wysokich i niskich obrotach ........................................................................ 83
Jak wygląda nasza piramida testów? ..........................................................................................83
Czy przenieść testy warstwy domeny do warstwy usługowej? ...............................................84
Wybór rodzaju testów do napisania ..........................................................................................85
Wysokie i niskie obroty ...............................................................................................................86
Całkowite oddzielenie testów warstwy usługowej od domeny ..............................................86
Rozwiązanie — przeniesienie wszystkich zależności domeny
do konfiguracji testów ........................................................................................................ 87
Dodawanie brakującej usługi ............................................................................................... 87
Ulepszanie testów kompleksowych ...........................................................................................89
Podsumowanie .............................................................................................................................90
6. Wzorzec Jednostka Pracy ..........................................................................................91
Jednostka pracy współpracuje z repozytorium ........................................................................91
Testy integracyjne jednostki pracy .............................................................................................93
4
Spis treści
Poleć książkę
Kup książkę
Jednostka pracy i jej menedżer kontekstu ................................................................................ 94
Prawdziwa jednostka pracy używa sesji SQLAlchemy ......................................................95
Imitacja jednostki pracy do testów .......................................................................................96
Używanie jednostki pracy w warstwie usługowej ................................................................... 97
Testy zatwierdzania i wycofywania zmian ............................................................................... 98
Zatwierdzenia jawne i niejawne ................................................................................................. 98
Przykłady — użycie jednostki pracy do grupowania operacji w jednostkę atomową ........ 99
Przykład 1. Realokacja ...........................................................................................................99
Przykład 2. Zmiana liczebności partii ............................................................................... 100
Porządkowanie testów integracyjnych .................................................................................... 100
Podsumowanie ........................................................................................................................... 101
7. Agregaty i granice spójności ...................................................................................103
Czemu nie wykonać wszystkiego w arkuszu kalkulacyjnym? ............................................. 104
Niezmienniki, ograniczenia i spójność ................................................................................... 104
Niezmienniki, współbieżność i blokady ........................................................................... 104
Czym jest agregat ....................................................................................................................... 105
Wybór agregatu .......................................................................................................................... 106
Jeden agregat = jedno repozytorium ....................................................................................... 109
Kwestia wydajności .................................................................................................................... 110
Optymistyczna współbieżność a numery wersji .................................................................... 111
Opcje implementacji numerów wersji .................................................................................... 113
Sprawdzanie zgodności z regułami integralności danych .................................................... 114
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
Podsumowanie ........................................................................................................................... 117
Część I — podsumowanie ......................................................................................................... 118
Część II. Architektura sterowana zdarzeniami
8. Zdarzenia i szyna wiadomości ................................................................................123
Jak nie narobić bałaganu ........................................................................................................... 124
Pilnujmy porządku w kontrolerach sieciowych .............................................................. 124
Dbajmy też o porządek w modelu ..................................................................................... 125
To może warstwa usługowa ............................................................................................... 125
Zasada pojedynczej odpowiedzialności .................................................................................. 126
Spis treści
Kup książkę
5
Poleć książkę
Plik z chomika:
PDFator
Inne pliki z tego folderu:
Adobe AIR dla programistow JavaScript Leksykon kieszonkowy.pdf
(371 KB)
Architektura aplikacji w Pythonie TDD DDD i rozwoj mikrouslug reaktywnych.pdf
(2453 KB)
Algorytmy i struktury danych.pdf
(928 KB)
API nowoczesnej strony WWW Uslugi sieciowe w PHP.pdf
(718 KB)
Bash Praktyczne skrypty.pdf
(713 KB)
Inne foldery tego chomika:
3ds max
50 zadań i zagadek szachowych
Access
Acrobat
Administracja
Zgłoś jeśli
naruszono regulamin