Description
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 architekturamikrousługi a wymagania biznesowe i korporacyjnekomunikaty i ich wzorcewdrażanie systemów o dużej skaliwady systemów opartych na mikrousługachPracuj mądrzej i bardziej humanitarnie. Wdrażaj mikrousługi!Spis treści:Przedmowa 11Podziękowania 13O książce 15O autorze 19O ilustracji na okładce 21CZĘŚĆ I. BUDOWANIE MIKROUSŁUG 23Rozdział 1. Odważny nowy świat 251.1. Kryzys długu technicznego 251.2. Studium przypadku: start-up mikroblogu 281.2.1. Iteracja 0.: publikowanie wpisów 281.2.2. Iteracja 1.: indeks wyszukiwania 321.2.3. Iteracja 2.: prosta kompozycja 351.2.4. Iteracja 3.: oś czasu 371.2.5. Iteracja 4.: skalowanie 401.3. Jak monolit sprzeniewierza się obietnicy komponentów 431.4. Idea mikrousługi 451.4.1. Podstawowe zasady techniczne 471.5. Praktyczne implikacje 511.5.1. Specyfikacja 511.5.2. Wdrożenie 521.5.3. Bezpieczeństwo 541.5.4. Ludzie 551.6. Co dostajesz za swoje pieniądze 561.7. Podsumowanie 57Rozdział 2. Usługi 592.1. Definicje mikrousług 602.2. Studium przypadku: wydanie cyfrowe gazety 622.2.1. Cele biznesowe 622.2.2. Wymagania nieformalne 622.2.3. Podział funkcjonalny 632.3. Architektury mikrousług 642.3.1. Architektura miniserwerów webowych 652.4. Diagramy mikrousług 662.5. Drzewo zależności mikrousług 672.5.1. Architektura komunikatów asynchronicznych 712.6. Projekty monolityczne a projekty mikrousługowe 732.6.1. Jak mikrousługi zmieniają zarządzanie projektem 752.6.2. Jednolitość ułatwia estymację 752.6.3. Jednorazowy kod tworzy bardziej przyjazne zespoły 762.6.4. Homogeniczne komponenty pozwalają na heterogeniczną konfigurację 772.6.5. Istnieją różne rodzaje kodów 782.7. Jednostka oprogramowania 792.8. Wymagania dotyczące komunikatów do usług 802.9. Diagramy architektury mikrousług 832.9.1. Diagramy przepływów komunikatów 852.10. Mikrousługi to komponenty oprogramowania 872.10.1. Enkapsulacja 872.10.2. Wielokrotne użycie 872.10.3. Dobrze zdefiniowane interfejsy 882.10.4. Kompozycyjność 882.10.5. Mikrousługi jako komponenty w praktyce 892.11. Wewnętrzna struktura mikrousługi 912.12. Podsumowanie 92Rozdział 3. Komunikaty 933.1. Komunikaty są obywatelami pierwszej klasy 933.1.1. Synchroniczne i asynchroniczne 953.1.2. Kiedy używać komunikacji synchronicznej 963.1.3. Kiedy używać komunikacji asynchronicznej 983.1.4. Rozproszone myślenie od pierwszego dnia 983.1.5. Taktyki ograniczające awarie 1003.2. Analiza przypadku: obliczanie podatku od sprzedaży 1023.2.1. Szerszy kontekst 1023.3. Dopasowanie do wzorca 1033.3.1. Podatek od sprzedaży: prosty początek 1043.3.2. Podatek od sprzedaży: obsługa kategorii 1063.3.3. Podatek od sprzedaży: obsługa przypadków globalnych 1093.3.4. Wymagania biznesowe zmieniają się z definicji 1093.3.5. Dopasowanie do wzorca obniża koszt refaktoryzacji 1103.4. Niezależność od transportu 1113.4.1. Przydatna fikcja: wszechmocny obserwator 1123.5. Wzorce komunikatów 1123.5.1. Wzorce bazowe: jeden komunikat/dwie usługi 1133.5.2. Wzorce bazowe: dwa komunikaty/dwie usługi 1163.5.3. Wzorce bazowe: jeden komunikat/n usług 1183.5.4. Wzorce bazowe: m komunikatów/n usług 1213.5.5. m/n: Łańcuch 1213.5.6. m/n: Drzewo 1223.5.7. Skalowanie komunikatów 1223.6. Gdy komunikaty się zepsują 1243.6.1. Typowe scenariusze awarii i co z nimi robić 1253.6.2. Awarie dominujące w interakcji Żądanie-Odpowiedź 1253.6.3. Awarie dominujące w interakcji Pocisk Samonaprowadzający 1263.6.4. Awarie dominujące w interakcji Zwycięzca Bierze Wszystko 1273.6.5. Awarie dominujące w interakcji Uruchom i Zapomnij 1283.7. Podsumowanie 129Rozdział 4. Dane 1314.1. Dane nie oznaczają tego, co Twoim zdaniem oznaczają 1324.1.1. Dane są heterogeniczne, a nie homogeniczne 1324.1.2. Dane mogą być prywatne 1344.1.3. Dane mogą być lokalne 1354.1.4. Dane mogą być jednorazowe 1374.1.5. Dane nie muszą być dokładne 1384.2. Strategie danych dla mikrousług 1384.2.1. Używanie komunikatów do ujawniania danych 1384.2.2. Używanie kompozycji do manipulowania danymi 1404.2.3. Używanie konfiguracji systemu do kontrolowania danych 1444.2.4. Nałożenie słabszych ograniczeń na dystrybucję danych 1494.3. Ponowne przemyślenie tradycyjnych wzorców danych 1514.3.1. Klucze podstawowe 1514.3.2. Klucze obce 1524.3.3. Transakcje 1534.3.4. Transakcje nie są tak dobre, jak Ci się wydaje 1574.3.5. Schematy zaciągają dług techniczny 1594.4. Praktyczny przewodnik decyzyjny dotyczący danych z mikrousług 1604.4.1. Projekty od podstaw 1614.4.2. Projekty zastane 1624.5. Podsumowanie 163Rozdział 5. Wdrażanie 1655.1. Rzeczy się rozpadają 1665.2. Nauka z historii 1675.2.1. Three Mile Island 1675.2.2. Model awarii w systemach oprogramowania 1725.2.3. Redundancja nie działa tak, jak myślisz 1765.2.4. Zmiana jest przerażająca 1775.3. Centrala nie daje rady 1805.3.1. Koszt doskonałego oprogramowania 1815.4. Anarchia działa 1815.5. Mikrousługi i redundancja 1825.6. Ciągłe dostarczanie 1835.6.1. System wdrażania 1855.6.2. Proces 1865.6.3. Ochrona 1875.7. Uruchomienie systemu mikrousługowego 1885.7.1. Niezmienność 1885.7.2. Automatyzacja 1915.7.3. Wytrzymałość 1965.7.4. Walidacja 2015.7.5. Wykrywanie usług 2045.7.6. Konfiguracja 2055.7.7. Bezpieczeństwo 2065.7.8. Środowisko pomostowe 2075.7.9. Rozwój oprogramowania 2085.8. Podsumowanie 210CZĘŚĆ II. MIKROUSŁUGI W AKCJI 211Rozdział 6. Wdrażanie 2136.1. Granice tradycyjnego monitoringu 2146.1.1. Klasyczne konfiguracje 2156.1.2. Problem z wartościami przeciętnymi 2176.1.3. Używanie percentyli 2186.1.4. Konfiguracje mikrousług 2216.1.5. Potęga wykresów punktowych 2216.1.6. Tworzenie panelu nawigacyjnego 2236.2. Pomiary dla mikrousług 2246.2.1. Warstwa biznesowa 2246.2.2. Warstwa komunikatów 2256.2.3. Warstwa usługi 2336.3. Siła niezmienników 2376.3.1. Wyszukiwanie niezmienników w logice biznesowej 2386.3.2. Wyszukiwanie niezmienników w architekturze systemu 2396.3.3. Wizualizacja niezmienników 2416.3.4. Odkrywanie systemu 2426.3.5. Walidacja syntetyczna 2446.4. Podsumowanie 245Rozdział 7. Migracja 2477.1. Klasyczny przykład witryny e-commerce 2487.1.1. Dotychczasowa architektura 2487.1.2. Proces dostarczania oprogramowania 2507.2. Przesuwanie słupków bramki 2517.2.1. Praktyczne zastosowanie polityki 2547.3. Rozpoczęcie podróży 2557.4. Taktyka dusiciela 2567.4.1. Częściowe proxy 2577.4.2. Co robić, gdy nie można przeprowadzić migracji 2587.4.3. Taktyka budowania od podstaw 2607.4.4. Taktyka makrousługi 2637.5. Strategia doskonalenia 2657.6. Przejście od ogólnego do konkretnego 2667.6.1. Dodawanie funkcjonalności do strony produktu 2667.6.2. Dodawanie funkcjonalności do koszyka 2697.6.3. Obsługiwanie zagadnień przekrojowych 2717.7. Podsumowanie 272Rozdział 8. Ludzie 2758.1. Radzenie sobie z polityką organizacji 2768.1.1. Akceptowanie twardych ograniczeń 2768.1.2. Wyszukiwanie sponsorów 2778.1.3. Budowanie sojuszy 2798.1.4. Dostarczanie skoncentrowane na wartości 2808.1.5. Dopuszczalne wskaźniki błędów 2808.1.6. Odrzucanie funkcjonalności 2808.1.7. Zatrzymanie abstrahowania 2818.1.8. Oczyszczanie umysłów z uprzedzeń 2828.1.9. Walidacja zewnętrzna 2828.1.10. Solidarność zespołowa 2838.1.11. Szanuj organizację 2848.2. Polityka wynikająca ze stosowania mikrousług 2848.2.1. Kto jest właścicielem i czego? 2858.2.2. Kto jest pod telefonem? 2868.2.3. Kto decyduje, co kodować? 2888.3. Podsumowanie 292Rozdział 9. Studium przypadku: nodezoo.com 2959.1. Projektuj 2969.1.1. Czym są wymagania biznesowe? 2969.1.2. Czym są komunikaty? 2989.1.3. Czym są usługi? 3049.2. Dostarczaj 3099.2.1. Iteracja 1.: rozwój lokalny 3109.2.2. Iteracja 2.: testowanie, instalacja w systemie pomostowym i pomiar ryzyka 3229.2.3. Iteracja 3.: droga do środowiska produkcyjnego 3279.2.4. Iteracja 4.: poprawki i adaptacja 3329.2.5. Iteracja 5.: monitorowanie i debugowanie 3399.2.6. Iteracja 6.: skalowanie i wydajność 3429.3. Odważny nowy świat 346Skorowidz 348O autorze: Richard Rodger programuje od 1986 roku (zaczął od Sinclair ZX Spectrum) po dziś dzień. Współtworzył wiele firm produkujących oprogramowanie, przy okazji stając się niekwestionowanym autorytetem w dziedzinie Node.js i mikrousług. Twierdzi, że jego obsesja na punkcie JavaScript wzięła się z braku umiejętności kodowania w C++. Napisał kilka niezłych książek, a od czasu do czasu przemawia na różnych konferencjach technologicznych.
czerwona cegiełka na ścianę, żaluzje do okien, krzesełko dla dzieci ogrodowe, kwiaty werbeny, bloczek kominowy, panele do ogrodu, narożniki na ściany, syfon do kondensatu, plafon bambusowy, widły fiskars, wiertarka macallister, mole ubraniowe jak się ich pozbyć, półka na wymiar, izolacja rury, zbironik, pudełka do przechowywania, szara doniczka ceramiczna, plyta regips
yyyyy