Читать книгу Mikroserwisy. Wzorce z przykładami w języku Java - Chris Richardson - Страница 42

Systemy rozproszone są złożone

Оглавление

Innym problemem związanym z korzystaniem z architektury mikroserwisowej jest to, że programiści muszą poradzić sobie z dodatkową złożonością tworzenia systemu rozproszonego. Usługi muszą korzystać z mechanizmu komunikacji międzyprocesowej. Jest to bardziej złożone niż proste wywołanie metody. Ponadto usługa musi być zaprojektowana w taki sposób, aby mogła obsługiwać częściowe awarie i radzić sobie z usługą zdalną, która jest niedostępna lub która wykazuje duże opóźnienia.

Wdrażanie przypadków użycia obejmujących wiele usług wymaga użycia nowych technik. Każda usługa ma własną bazę danych, co utrudnia wdrożenie transakcji i zapytań obejmujących usługi. Jak opisano w rozdziale 4, aplikacja oparta na mikroserwisach musi używać tak zwanych sag, aby zachować spójność danych w różnych usługach. Rozdział 7 wyjaśnia, że aplikacja oparta na mikroserwisach nie może pobierać danych z wielu usług za pomocą prostych zapytań. Zamiast tego musi implementować zapytania z wykorzystaniem kompozycji API lub widoków CQRS.

IDE i inne narzędzia programistyczne koncentrują się na budowaniu aplikacji monolitycznych i nie zapewniają wyraźnego wsparcia w tworzeniu aplikacji rozproszonych. Pisanie automatycznych testów obejmujących wiele usług jest trudne. Są to problemy specyficzne dla architektury mikroserwisowej. W związku z tym programiści w naszej organizacji muszą mieć zaawansowane umiejętności tworzenia i dostarczania oprogramowania, aby skutecznie korzystać z mikroserwisów.

Architektura mikroserwisowa wprowadza również znaczną złożoność operacyjną. Na produkcji musi być zarządzanych znacznie więcej wymienialnych elementów – wiele wystąpień różnych rodzajów usług. Aby pomyślnie wdrożyć mikrousługi, potrzebujemy automatyzacji na wysokim poziomie. Musimy użyć następujących technologii:

 ■ zautomatyzowanych narzędzi do wdrażania, np. Netflix Spinnaker;

 ■ gotowego PaaS, takich jak Pivotal Cloud Foundry lub Red Hat OpenShift;

 ■ platformy orkiestracyjnej Docker, takich jak Docker Swarm lub Kubernetes.

W rozdziale 12 przedstawię bardziej szczegółowo możliwości związane z wdrażaniem.

Mikroserwisy. Wzorce z przykładami w języku Java

Подняться наверх