Od monolitu do mikrousług. Ewolucyjne wzorce przekształcania systemów monolitycznych - ebook
Od monolitu do mikrousług. Ewolucyjne wzorce przekształcania systemów monolitycznych - ebook
Mikrousługi są relatywnie świeżą koncepcją w świecie systemów IT, mimo to coraz więcej organizacji decyduje się na wdrażanie opartej na nich architektury. Uznaje się, że zapewnia ona wówczas lepszą skalowalność, łatwość łączenia poszczególnych niezależnych elementów, a przede wszystkim możliwość szybszej reakcji na zmiany i skuteczniejsze wdrażanie nowych funkcjonalności. Zanim jednak organizacja da się skusić tymi obietnicami, powinna gruntownie przeanalizować swoją sytuację i decyzję o ewentualnej migracji systemu oprzeć na racjonalnych przesłankach. Konieczne jest również opracowanie planu takiego przejścia, zwłaszcza jeśli nie można sobie pozwolić na dłuższe przestoje w działalności.
To wyczerpujący poradnik dla inżynierów, którzy stoją przed wyzwaniem przekształcenia monolitycznego systemu w architekturę opartą na mikrousługach bez przerywania funkcjonowania firmy. Książka jest przeznaczona dla organizacji, które muszą płynnie zmienić istniejący system, a nie zbudować go od nowa. Zawiera wiele cennych wskazówek odnoszących się do celowości samej migracji oraz przedstawia liczne scenariusze i strategie przekształcania: od etapu planowania aż po dekompozycję aplikacji i baz danych. Znalazł się tu zestaw sprawdzonych wzorców i technik wraz z omówieniem sytuacji, w jakich można je bezpiecznie zastosować. Nie zabrakło ważnych szczegółów związanych z wzorcami refaktoryzacji architektury czy problematyki naruszeń integralności w wyniku podziału baz danych.
W tej książce między innymi:
- podstawowe koncepcje związane z mikrousługami
- ocena przydatności mikrousług w konkretnych sytuacjach
- planowanie wdrażania architektury opartej na mikrousługach
- wzorce migracji, dekompozycja aplikacji i inne zagadnienia techniczne
- wykrywanie i rozwiązywanie problemów związanych z mikrousługami
Dążysz do sukcesu? Obierz kurs na mikrousługi!
Spis treści
Przedmowa 9
1. Tylko tyle mikrousług, ile potrzeba 13
- Czym są mikrousługi? 13
- Możliwość niezależnego instalowania 14
- Modelowane na podstawie dziedziny biznesowej 14
- Mikrousługi są właścicielem swoich danych 17
- Jakie korzyści mogą dawać mikrousługi? 18
- Jakie problemy są powodowane przez mikrousługi? 18
- Interfejsy użytkownika 19
- Technologie 19
- Wielkość 20
- Właściciele 21
- System monolityczny 23
- Jednoprocesowe systemy monolityczne 23
- Rozproszony system monolityczny 25
- Systemy typu czarna skrzynka od niezależnych dostawców 25
- Problemy związane z systemami monolitycznymi 25
- Zalety systemów monolitycznych 26
- O powiązaniu i spójności 26
- Spójność 28
- Powiązanie 28
- Tylko tyle DDD, ile potrzeba 37
- Agregat 37
- Ograniczony kontekst 38
- Odwzorowywanie agregatów i ograniczonych kontekstów na mikrousługi 39
- Dalsza lektura 39
- Podsumowanie 40
2. Planowanie migracji 41
- Zrozumieć cel 41
- Trzy kluczowe pytania 42
- Dlaczego możesz zdecydować się na mikrousługi? 43
- Zwiększenie autonomii zespołu 43
- Skrócenie czasu wprowadzania funkcji na rynek 44
- Ekonomiczne skalowanie systemu pod kątem obciążenia 45
- Zwiększanie stabilności 46
- Skalowanie liczby programistów 47
- Wprowadzanie nowej technologii 48
- Kiedy wprowadzanie mikrousług może być złym pomysłem? 49
- Niesprecyzowana dziedzina 50
- Startupy 50
- Oprogramowanie instalowane przez klienta a oprogramowanie zarządzane 51
- Brak dobrego powodu! 52
- Wady i zalety 52
- Zachęcanie innych do wspólnej podróży 53
- Zmienianie organizacji 54
- Uświadamianie pilności wprowadzenia zmian 54
- Budowanie koalicji kierującej wprowadzaniem zmian 55
- Opracowywanie wizji i strategii 56
- Komunikowanie wizji zmian 56
- Dawanie pracownikom uprawnień do szeroko zakrojonych działań 57
- Uzyskiwanie krótkoterminowych sukcesów 58
- Konsolidowanie korzyści i wprowadzanie nowych zmian 58
- Utrwalanie nowego podejścia w kulturze firmy 58
- Znaczenie stopniowej migracji 59
- Ważne jest to, co w środowisku produkcyjnym 60
- Koszt wprowadzania zmian 60
- Odwracalne i nieodwracalne decyzje 60
- Lepsze miejsca do eksperymentów 61
- Od czego więc zacząć? 62
- Podejście DDD 62
- Jak szczegółowy powinien być model? 63
- Event storming 63
- Korzystanie z modelu dziedziny do określania priorytetów 64
- Model mieszany 65
- Reorganizacja zespołów 67
- Zmiany w strukturach 67
- Nie istnieją uniwersalne rozwiązania 68
- Wprowadzanie zmian 70
- Nowe umiejętności 71
- Skąd wiadomo, czy zmiany przynoszą dobre efekty? 74
- Regularne punkty kontrolne 75
- Wskaźniki ilościowe 75
- Wskaźniki jakościowe 76
- Unikanie efektu utopionych kosztów 76
- Otwartość na nowe podejścia 77
- Podsumowanie 77
3. Podział systemu monolitycznego 79
- Modyfikować system monolityczny czy nie? 79
- Wycinać i wklejać czy pisać od nowa? 80
- Refaktoryzacja systemu monolitycznego 80
- Wzorce migracji 82
- Wzorzec "figowiec dusiciel" 82
- Jak działa ten wzorzec? 83
- Gdzie stosować ten wzorzec? 84
- Przykład: odwrotny pośrednik HTTP 86
- Dane? 89
- Możliwości związane z pośrednikiem 89
- Zmiana protokołów 92
- Przykład: FTP 95
- Przykład: przechwytywanie komunikatów 96
- Inne protokoły 99
- Inne przykłady stosowania wzorca "figowiec dusiciel" 99
- Zmienianie działania kodu przy przenoszeniu funkcji 99
- Wzorzec: składanie interfejsu użytkownika 100
- Przykład: składanie strony 100
- Przykład: składanie widżetów 101
- Przykład: mikrofrontendy 104
- Gdzie stosować ten wzorzec? 105
- Wzorzec: rozgałęzianie z użyciem abstrakcji 105
- Jak działa ten wzorzec? 106
- Zapewnianie rezerwowego mechanizmu 112
- Gdzie używać tego wzorca? 113
- Wzorzec: równoległe uruchamianie 113
- Przykład: porównywanie cen kredytowych instrumentów pochodnych 114
- Przykład: oferty w agencji Homegate 115
- Techniki sprawdzania poprawności 116
- Używanie szpiegów 116
- Biblioteka Scientist z serwisu GitHub 117
- Ukryte udostępnianie i udostępnianie próbne 118
- Gdzie stosować ten wzorzec? 118
- Wzorzec: współdziałający dekorator 118
- Przykład: zarządzanie programem lojalnościowym 119
- Gdzie stosować ten wzorzec? 120
- Wzorzec: przechwytywanie zmian w danych 120
- Przykład: wydawanie kart lojalnościowych 120
- Implementowanie przechwytywania zmian w danych 121
- Gdzie stosować ten wzorzec? 124
- Podsumowanie 124
4. Podział baz danych 125
- Wzorzec: współdzielona baza danych 125
- Wzorce radzenia sobie 126
- Gdzie stosować ten wzorzec? 126
- Ale to niemożliwe! 127
- Wzorzec: widoki bazodanowe 128
- Baza danych jako publiczny kontrakt 128
- Prezentowane widoki 129
- Ograniczenia 131
- Własność 131
- Gdzie stosować ten wzorzec? 131
- Wzorzec: usługa opakowująca bazę danych 131
- Gdzie stosować ten wzorzec? 133
- Wzorzec: interfejs "baza danych jako usługa" 134
- Implementowanie mechanizmu odwzorowywania danych 135
- Porównanie z widokami 136
- Gdzie stosować ten wzorzec? 136
- Przekazywanie własności 136
- Wzorzec: system monolityczny udostępniający agregaty 137
- Wzorzec: zmiana właściciela danych 139
- Synchronizacja danych 140
- Wzorzec: synchronizowanie danych z użyciem aplikacji 142
- Etap 1. Masowa synchronizacja danych 142
- Etap 2. Synchronizowanie zapisu, odczyt z dawnego schematu 143
- Etap 3. Synchronizacja zapisu, odczyt z nowego schematu 144
- Gdzie stosować ten wzorzec? 144
- Wzorzec: stopniowa synchronizacja 145
- Synchronizowanie danych 148
- Przykład: zamówienia w firmie Square 149
- Gdzie stosować ten wzorzec? 153
- Podział bazy danych 153
- Fizyczny i logiczny podział baz danych 153
- Co dzielić najpierw - bazę danych czy kod? 155
- Najpierw podział bazy danych 155
- Najpierw podział kodu 159
- Jednoczesny podział bazy danych i kodu 163
- Co więc należy podzielić w pierwszej kolejności? 163
- Przykłady dotyczące podziału schematu 164
- Wzorzec: tabela pomostowa 164
- Wzorzec: przenoszenie relacji klucza obcego do kodu 166
- Transakcje 178
- Transakcje ACID 178
- Nadal ACID, ale bez atomowości? 179
- Zatwierdzanie dwuetapowe 181
- Transakcje rozproszone - po prostu powiedz "nie" 183
- Sagi 184
- Rodzaje błędów w sagach 185
- Implementowanie sag 188
- Sagi a transakcje rozproszone 194
- Podsumowanie 195
5. Rosnące problemy 197
- Więcej usług, więcej kłopotów 197
- Własność przy dużej liczbie usług 198
- Jak ten problem może się ujawnić? 199
- Kiedy ten problem może wystąpić? 200
- Potencjalne rozwiązania 200
- Zmiany naruszające zgodność 200
- Jak ten problem może się ujawnić? 201
- Kiedy ten problem może wystąpić? 201
- Potencjalne rozwiązania 201
- Generowanie raportów 204
- Kiedy ten problem może wystąpić? 205
- Potencjalne rozwiązania 205
- Monitorowanie i rozwiązywanie problemów 206
- Kiedy te problemy mogą wystąpić? 207
- Jak objawiają się problemy? 207
- Potencjalne rozwiązania 207
- Komfort pracy programisty na lokalnej maszynie 211
- Jak ten problem może się ujawnić? 211
- Kiedy ten problem może wystąpić? 211
- Możliwe rozwiązania 212
- Uruchamianie zbyt wielu rzeczy 212
- Jak ten problem może się ujawnić? 212
- Kiedy ten problem może wystąpić? 213
- Możliwe rozwiązania 213
- Testy end-to-end 214
- Jak ten problem może się ujawnić? 214
- Kiedy ten problem może wystąpić? 215
- Możliwe rozwiązania 215
- Optymalizacja globalna i lokalna 217
- Jak ten problem może się ujawnić? 217
- Kiedy ten problem może wystąpić? 217
- Możliwe rozwiązania 218
- Stabilność i odporność 219
- Jak ten problem może się ujawnić? 219
- Kiedy ten problem może wystąpić? 219
- Możliwe rozwiązania 220
- Osierocone usługi 220
- Jak ten problem może się ujawnić? 221
- Kiedy ten problem może wystąpić? 221
- Możliwe rozwiązania 221
- Podsumowanie 222
6. Słowo na zakończenie 225
A. Bibliografia 227
B. Indeks wzorców 229
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-6724-1 |
Rozmiar pliku: | 13 MB |