Читать книгу Mikroserwisy w akcji - Группа авторов - Страница 10
Część 1
Stan rzeczy
1. Projektowanie i uruchamianie mikroserwisów
1.1. Czym jest aplikacja mikroserwisowa?
1.1.1. Skalowanie przez dekompozycję
ОглавлениеMożemy się także zastanowić, w jaki sposób mikroserwisy pozwalają na skalowanie aplikacji. W The Art of Scalability Abbott i Fisher definiują trzy wymiary skalowania jako kostkę (rys. 1.2).
Aplikacje monolityczne są zazwyczaj skalowane przez horyzontalne duplikowanie – wdrażanie wielu identycznych wystąpień aplikacji. Jest to również znane jako skalowanie cookiem cutter lub skalowanie w osi X. Aplikacje mikroserwisowe są przykładem skalowania w osi Y, w którym jest wykonywana dekompozycja systemu, aby sprostać unikalnym potrzebom skalowania różnych funkcjonalności.
UWAGA Oś Z odnosi się do poziomego partycjonowania danych – fragmentowania. Można zastosować fragmentowanie do obu podejść, mikroserwisów lub aplikacji monolitycznych, ale nie będziemy się tym zajmować w tej książce.
Rysunek 1.2. Trzy wymiary skalowania aplikacji
Ponownie jako przykładowi przyjrzyjmy się narzędziu inwestycyjnemu o następujących cechach:
■ prognozy finansowe mogą być złożone obliczeniowo i występować rzadko;
■ rachunki inwestycyjne mogą być regulowane przez skomplikowane przepisy prawne i biznesowe;
■ handel na giełdzie może się odbywać w bardzo dużych ilościach, a jednocześnie wymagać minimalizowania opóźnień.
Jeśli tworzymy funkcjonalności jako mikroserwisy, które spełniają pewne wymagania, możemy wybrać idealne narzędzia do rozwiązania danego problemu, zamiast próbować dopasować kwadratowe kołki do okrągłych otworów. Ponadto, autonomia i niezależność wdrażania oznacza, że możemy zarządzać potrzebnymi wymaganiami mikroserwisów osobno. Co ciekawe, oznacza to naturalny sposób na ograniczenie niepowodzeń – jeśli nasza usługa prognozowania finansowego nie zadziała, to jest mało prawdopodobne, aby ta awaria kaskadowo przeniosła się do obrotu na giełdzie lub usług obsługi rachunku inwestycyjnego.
Aplikacje mikroserwisowe mają kilka interesujących właściwości technicznych:
■ budowanie usług odpowiadających pojedynczym zdolnościom stawia naturalne granice co do wielkości i odpowiedzialności;
■ autonomia pozwala niezależnie rozwijać, wdrażać i skalować usługi.