Tao mikrousług. Projektowanie i wdrażanie - ebook
Tao mikrousług. Projektowanie i wdrażanie - ebook
Systemy oparte na mikrousługach różnią się od aplikacji monolitycznych. Są bardziej skalowalne, efektywniejsze, a także łatwiejsze w implementacji, rozwijaniu i utrzymaniu. Architektura mikrousług pozwala na doskonalenie danego elementu bez zastanawiania się nad działaniem całości aplikacji. Tego rodzaju systemy opierają się na nowoczesnych wzorcach, takich jak asynchroniczna komunikacja za pomocą komunikatów, usługi API i hermetyzacja. Po odpowiedniej optymalizacji dobrze działają zarówno w chmurach, jak i w scentralizowanych środowiskach opartych na kontenerach.
Niniejsza książka jest przeznaczona dla programistów, menedżerów projektów i architektów oprogramowania. Wyjaśniono tu niezbędne pojęcia oraz różnice dzielące systemy oparte na mikrousługach i aplikacje monolityczne, a także zasady ich projektowania. Wyczerpująco omówiono techniki rozwiązywania problemów z mikrousługami oraz sposoby kontrolowania ryzyka wystąpienia awarii. Pokazano, w jaki sposób mikrousługi mogą współpracować z trwałymi danymi i jak wygląda ich współpraca z bazami danych. Sporo miejsca poświęcono technikom oceny kondycji działających systemów mikrousługowych, a także studiom przypadków oraz najlepszym praktykom pracy zespołu, planowania zmian i wyboru narzędzi.
Najważniejsze zagadnienia:
- mikrousługi i ich architektura
- mikrousługi a wymagania biznesowe i korporacyjne
- komunikaty i ich wzorce
- wdrażanie systemów o dużej skali
- wady systemów opartych na mikrousługach
Pracuj mądrzej i bardziej humanitarnie. Wdrażaj mikrousługi!
Spis treści
Przedmowa 11
Podziękowania 13
O książce 15
O autorze 19
O ilustracji na okładce 21
CZĘŚĆ I. BUDOWANIE MIKROUSŁUG 23
Rozdział 1. Odważny nowy świat 25
- 1.1. Kryzys długu technicznego 25
- 1.2. Studium przypadku: start-up mikroblogu 28
- 1.2.1. Iteracja 0.: publikowanie wpisów 28
- 1.2.2. Iteracja 1.: indeks wyszukiwania 32
- 1.2.3. Iteracja 2.: prosta kompozycja 35
- 1.2.4. Iteracja 3.: oś czasu 37
- 1.2.5. Iteracja 4.: skalowanie 40
- 1.3. Jak monolit sprzeniewierza się obietnicy komponentów 43
- 1.4. Idea mikrousługi 45
- 1.4.1. Podstawowe zasady techniczne 47
- 1.5. Praktyczne implikacje 51
- 1.5.1. Specyfikacja 51
- 1.5.2. Wdrożenie 52
- 1.5.3. Bezpieczeństwo 54
- 1.5.4. Ludzie 55
- 1.6. Co dostajesz za swoje pieniądze 56
- 1.7. Podsumowanie 57
Rozdział 2. Usługi 59
- 2.1. Definicje mikrousług 60
- 2.2. Studium przypadku: wydanie cyfrowe gazety 62
- 2.2.1. Cele biznesowe 62
- 2.2.2. Wymagania nieformalne 62
- 2.2.3. Podział funkcjonalny 63
- 2.3. Architektury mikrousług 64
- 2.3.1. Architektura miniserwerów webowych 65
- 2.4. Diagramy mikrousług 66
- 2.5. Drzewo zależności mikrousług 67
- 2.5.1. Architektura komunikatów asynchronicznych 71
- 2.6. Projekty monolityczne a projekty mikrousługowe 73
- 2.6.1. Jak mikrousługi zmieniają zarządzanie projektem 75
- 2.6.2. Jednolitość ułatwia estymację 75
- 2.6.3. Jednorazowy kod tworzy bardziej przyjazne zespoły 76
- 2.6.4. Homogeniczne komponenty pozwalają na heterogeniczną konfigurację 77
- 2.6.5. Istnieją różne rodzaje kodów 78
- 2.7. Jednostka oprogramowania 79
- 2.8. Wymagania dotyczące komunikatów do usług 80
- 2.9. Diagramy architektury mikrousług 83
- 2.9.1. Diagramy przepływów komunikatów 85
- 2.10. Mikrousługi to komponenty oprogramowania 87
- 2.10.1. Enkapsulacja 87
- 2.10.2. Wielokrotne użycie 87
- 2.10.3. Dobrze zdefiniowane interfejsy 88
- 2.10.4. Kompozycyjność 88
- 2.10.5. Mikrousługi jako komponenty w praktyce 89
- 2.11. Wewnętrzna struktura mikrousługi 91
- 2.12. Podsumowanie 92
Rozdział 3. Komunikaty 93
- 3.1. Komunikaty są obywatelami pierwszej klasy 93
- 3.1.1. Synchroniczne i asynchroniczne 95
- 3.1.2. Kiedy używać komunikacji synchronicznej 96
- 3.1.3. Kiedy używać komunikacji asynchronicznej 98
- 3.1.4. Rozproszone myślenie od pierwszego dnia 98
- 3.1.5. Taktyki ograniczające awarie 100
- 3.2. Analiza przypadku: obliczanie podatku od sprzedaży 102
- 3.2.1. Szerszy kontekst 102
- 3.3. Dopasowanie do wzorca 103
- 3.3.1. Podatek od sprzedaży: prosty początek 104
- 3.3.2. Podatek od sprzedaży: obsługa kategorii 106
- 3.3.3. Podatek od sprzedaży: obsługa przypadków globalnych 109
- 3.3.4. Wymagania biznesowe zmieniają się z definicji 109
- 3.3.5. Dopasowanie do wzorca obniża koszt refaktoryzacji 110
- 3.4. Niezależność od transportu 111
- 3.4.1. Przydatna fikcja: wszechmocny obserwator 112
- 3.5. Wzorce komunikatów 112
- 3.5.1. Wzorce bazowe: jeden komunikat/dwie usługi 113
- 3.5.2. Wzorce bazowe: dwa komunikaty/dwie usługi 116
- 3.5.3. Wzorce bazowe: jeden komunikat/n usług 118
- 3.5.4. Wzorce bazowe: m komunikatów/n usług 121
- 3.5.5. m/n: Łańcuch 121
- 3.5.6. m/n: Drzewo 122
- 3.5.7. Skalowanie komunikatów 122
- 3.6. Gdy komunikaty się zepsują 124
- 3.6.1. Typowe scenariusze awarii i co z nimi robić 125
- 3.6.2. Awarie dominujące w interakcji Żądanie-Odpowiedź 125
- 3.6.3. Awarie dominujące w interakcji Pocisk Samonaprowadzający 126
- 3.6.4. Awarie dominujące w interakcji Zwycięzca Bierze Wszystko 127
- 3.6.5. Awarie dominujące w interakcji Uruchom i Zapomnij 128
- 3.7. Podsumowanie 129
Rozdział 4. Dane 131
- 4.1. Dane nie oznaczają tego, co Twoim zdaniem oznaczają 132
- 4.1.1. Dane są heterogeniczne, a nie homogeniczne 132
- 4.1.2. Dane mogą być prywatne 134
- 4.1.3. Dane mogą być lokalne 135
- 4.1.4. Dane mogą być jednorazowe 137
- 4.1.5. Dane nie muszą być dokładne 138
- 4.2. Strategie danych dla mikrousług 138
- 4.2.1. Używanie komunikatów do ujawniania danych 138
- 4.2.2. Używanie kompozycji do manipulowania danymi 140
- 4.2.3. Używanie konfiguracji systemu do kontrolowania danych 144
- 4.2.4. Nałożenie słabszych ograniczeń na dystrybucję danych 149
- 4.3. Ponowne przemyślenie tradycyjnych wzorców danych 151
- 4.3.1. Klucze podstawowe 151
- 4.3.2. Klucze obce 152
- 4.3.3. Transakcje 153
- 4.3.4. Transakcje nie są tak dobre, jak Ci się wydaje 157
- 4.3.5. Schematy zaciągają dług techniczny 159
- 4.4. Praktyczny przewodnik decyzyjny dotyczący danych z mikrousług 160
- 4.4.1. Projekty od podstaw 161
- 4.4.2. Projekty zastane 162
- 4.5. Podsumowanie 163
Rozdział 5. Wdrażanie 165
- 5.1. Rzeczy się rozpadają 166
- 5.2. Nauka z historii 167
- 5.2.1. Three Mile Island 167
- 5.2.2. Model awarii w systemach oprogramowania 172
- 5.2.3. Redundancja nie działa tak, jak myślisz 176
- 5.2.4. Zmiana jest przerażająca 177
- 5.3. Centrala nie daje rady 180
- 5.3.1. Koszt doskonałego oprogramowania 181
- 5.4. Anarchia działa 181
- 5.5. Mikrousługi i redundancja 182
- 5.6. Ciągłe dostarczanie 183
- 5.6.1. System wdrażania 185
- 5.6.2. Proces 186
- 5.6.3. Ochrona 187
- 5.7. Uruchomienie systemu mikrousługowego 188
- 5.7.1. Niezmienność 188
- 5.7.2. Automatyzacja 191
- 5.7.3. Wytrzymałość 196
- 5.7.4. Walidacja 201
- 5.7.5. Wykrywanie usług 204
- 5.7.6. Konfiguracja 205
- 5.7.7. Bezpieczeństwo 206
- 5.7.8. Środowisko pomostowe 207
- 5.7.9. Rozwój oprogramowania 208
- 5.8. Podsumowanie 210
CZĘŚĆ II. MIKROUSŁUGI W AKCJI 211
Rozdział 6. Wdrażanie 213
- 6.1. Granice tradycyjnego monitoringu 214
- 6.1.1. Klasyczne konfiguracje 215
- 6.1.2. Problem z wartościami przeciętnymi 217
- 6.1.3. Używanie percentyli 218
- 6.1.4. Konfiguracje mikrousług 221
- 6.1.5. Potęga wykresów punktowych 221
- 6.1.6. Tworzenie panelu nawigacyjnego 223
- 6.2. Pomiary dla mikrousług 224
- 6.2.1. Warstwa biznesowa 224
- 6.2.2. Warstwa komunikatów 225
- 6.2.3. Warstwa usługi 233
- 6.3. Siła niezmienników 237
- 6.3.1. Wyszukiwanie niezmienników w logice biznesowej 238
- 6.3.2. Wyszukiwanie niezmienników w architekturze systemu 239
- 6.3.3. Wizualizacja niezmienników 241
- 6.3.4. Odkrywanie systemu 242
- 6.3.5. Walidacja syntetyczna 244
- 6.4. Podsumowanie 245
Rozdział 7. Migracja 247
- 7.1. Klasyczny przykład witryny e-commerce 248
- 7.1.1. Dotychczasowa architektura 248
- 7.1.2. Proces dostarczania oprogramowania 250
- 7.2. Przesuwanie słupków bramki 251
- 7.2.1. Praktyczne zastosowanie polityki 254
- 7.3. Rozpoczęcie podróży 255
- 7.4. Taktyka dusiciela 256
- 7.4.1. Częściowe proxy 257
- 7.4.2. Co robić, gdy nie można przeprowadzić migracji 258
- 7.4.3. Taktyka budowania od podstaw 260
- 7.4.4. Taktyka makrousługi 263
- 7.5. Strategia doskonalenia 265
- 7.6. Przejście od ogólnego do konkretnego 266
- 7.6.1. Dodawanie funkcjonalności do strony produktu 266
- 7.6.2. Dodawanie funkcjonalności do koszyka 269
- 7.6.3. Obsługiwanie zagadnień przekrojowych 271
- 7.7. Podsumowanie 272
Rozdział 8. Ludzie 275
- 8.1. Radzenie sobie z polityką organizacji 276
- 8.1.1. Akceptowanie twardych ograniczeń 276
- 8.1.2. Wyszukiwanie sponsorów 277
- 8.1.3. Budowanie sojuszy 279
- 8.1.4. Dostarczanie skoncentrowane na wartości 280
- 8.1.5. Dopuszczalne wskaźniki błędów 280
- 8.1.6. Odrzucanie funkcjonalności 280
- 8.1.7. Zatrzymanie abstrahowania 281
- 8.1.8. Oczyszczanie umysłów z uprzedzeń 282
- 8.1.9. Walidacja zewnętrzna 282
- 8.1.10. Solidarność zespołowa 283
- 8.1.11. Szanuj organizację 284
- 8.2. Polityka wynikająca ze stosowania mikrousług 284
- 8.2.1. Kto jest właścicielem i czego? 285
- 8.2.2. Kto jest pod telefonem? 286
- 8.2.3. Kto decyduje, co kodować? 288
- 8.3. Podsumowanie 292
Rozdział 9. Studium przypadku: nodezoo.com 295
- 9.1. Projektuj 296
- 9.1.1. Czym są wymagania biznesowe? 296
- 9.1.2. Czym są komunikaty? 298
- 9.1.3. Czym są usługi? 304
- 9.2. Dostarczaj 309
- 9.2.1. Iteracja 1.: rozwój lokalny 310
- 9.2.2. Iteracja 2.: testowanie, instalacja w systemie pomostowym i pomiar ryzyka 322
- 9.2.3. Iteracja 3.: droga do środowiska produkcyjnego 327
- 9.2.4. Iteracja 4.: poprawki i adaptacja 332
- 9.2.5. Iteracja 5.: monitorowanie i debugowanie 339
- 9.2.6. Iteracja 6.: skalowanie i wydajność 342
- 9.3. Odważny nowy świat 346
Skorowidz 348
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-4808-0 |
Rozmiar pliku: | 7,1 MB |