Słowo mikroserwisy padło w tym roku na konferencjach i portalach branżowych w liczbie, która powinna znaleźć się w Księdze Guinessa. Czy ten nowy, eksplodujący na naszych oczach trend zmienia na zawsze naszą branżę, czy też przeminie jak wiele innych rozwiązań z kategorii „silver bullet”. Postaramy się podczas tego szkolenia odpowiedzieć na wiele pytań, wprowadzić podstawowe wzorce i przedstawić techniki projektowania mikrousług. Podzielimy się z Wami naszym doświadczeniami i obserwacjami z implementacji mikrousług i przestrzec przed czającymi się niebezpieczeństwami, a przede wszystkim wywołać dyskusję, która pozwoli odnaleźć Wam Waszą własną drogę w tej nowej architekturze.

Opis szkolenia

Co zyskasz?

Podczas szkolenia poznasz najpopularniejsze wzorce architektury mikroserwisowej, ich warianty oraz przykłady zastosowania. Przećwiczysz możliwe implementacje wzorców w oparciu o najpopularniejsze na rynku narzędzia.

Profil uczestnika

Szkolenie skierowane jest do programistów, projektantów oraz architektów pracujących w środowiskach rozproszonych (mikrousługowych), pragnących poznać narzędzia i techniki nadające strukturę wybranym elementom architektury.

Program szkolenia

Całość szkolenia przeprowadzana jest w formule wzorców projektowych: nazwania wzorca, opisu problemu, który stara się zaadresować (rozwiązać), przykładowych implementacji (wraz z demo, ćwiczeniem) oraz omówienia konsekwencji zastosowania wzorca.

Wychodząc od klasycznych praw i teorii (twierdzenie CAP, 8 błędów przetwarzania rozproszonego), analizowane są pojawiające się problemy, sposoby ich mitygowania oraz minimalizacja zasięgu błędów.

Omawiane wzorce

Wzorce architektoniczne określają strukturę rozwiązania pewnego problemu w obrębie systemu informatycznego. Nie inaczej jest w przypadku mikro usług, gdzie udało się wykształcić kilka wzorców. Podczas szkolenia ćwiczenia praktyczne opierają się właśnie o analizę m.in. następujących wzorców.

  • API Gateway

  • Circuit breakers

  • Load balancing

  • Service discovery and externalized configuration

  • Service orchestration and choreography

  • Consumer-driven contracts

  • Centralized loggings and monitoring

  • Authorisation and security

Program szkolenia

1. Podstawy teoretyczne architektury mikrousługowej

  • Różne podejścia do strukturyzowania architektury

  • Monolityczne aplikacje i Microservices

  • Prawo Conway’a

  • Architektura wokół funkcjonalności biznesowych

  • Dekompozycja domeny wykorzystując Domain-Driven Design, określanie granic mikro usług

Tip
Cel modułu

Odpowiadamy na pytania:

  • po co w ogóle stosować architekturę mikro usług,

  • dlaczego stosujemy, jaki problem próbujemy rozwiązać,

  • w jaki sposób podzielić dziedzinę problemu na części odpowiadające pojedynczym usługom.


2. Projektowanie i implementacja mikrousług

  • Smart endpoints and dumb pipes

    • Zasoby REST i ich reprezentacja

    • Zasady projektowania URLi

    • Wersjonowanie i zarządzanie zasobami

    • Hypermedia as the Engine of Application State (HATEOAS)

  • Decentralizacja danych

    • Podział danych pod kątem mikrousług

    • Relacyjne i nierelacyjne bazy danych

    • Wolumen, szybkość, spójność - w odniesieniu do dostępnych źródeł danych (CAP Theorem)

    • Projektowanie modeli pod kątem odczytu (CQRS)

  • Elementy interfejsu użytkownika

  • Strategie refaktoryzacji systemów monolitycznych

Tip
Cel modułu

Odpowiadamy na pytania:

  • w jaki sposób zacząć implementować pojedyncze usługi,

  • jakie narzędzia frameworki mogą nam w tym pomóc (Spring Boot, Spring Cloud, Netflix OSS, Dropwizard, Spark Java itp),

  • jak od strony implementacji wyglądają poszczególne założenia mikrousług (decentralizacja danych, dowolność stosów technologicznych),

  • jak możemy dzielić i refaktoryzować istniejące aplikacje.


3. Komunikacja pomiędzy usługami

  • Komunikacja synchroniczna vs. asynchroniczna

    • Wprowadzenie do wzorca “Circuit Breaker” i konfiguracja bezpiecznika połączenia

  • Definiowanie zależności pomiędzy usługami oraz ich dokumentacja

    • Wprowadzenie do wzorca "API Gateway", "Service Discovery"

    • Modelowanie procesów w obrębie serwisów (orkiestracja i choreografia)

  • Kompatybilność usług, zmiany i kompatybilność wsteczna

    • Wprowadzenie do wzorca "Consumer Driven Contracts"

    • Testowanie usług w ujęciu end-to-end

Tip
Cel modułu

Bazując na zestawie gotowych mikrousług obserwujemy problemy które mogą się pojawiać:

  • jak zabezpieczyć się przed niedostępnością określonych usług,

  • jak ukryć wewnętrzną złożoność platformy przed klientem,

  • w jaki sposób usługi mogą rozgłaszać informacje o swojej dostępności,

  • czy i w jaki sposób równoważyć obciążenie poszczególnych usług.


4. Produkcyjne wdrożenie mikrousług

  • Continious Integration / Continious Delivery

  • Infrastruktura jako kod

    • Automatyzacja procesów budujących (Jenkins DSL)

    • Automatyzacja tworzenia infrastruktury (Ansible)

  • Wirtualizacja i konteneryzacja

  • Wykorzystanie chmury (IaaS, PaaS) i związane z tym koszty

  • Zarządzenie rozproszoną konfiguracją

Tip
Cel modułu

Odpowiadamy na pytania

  • jak zarządzać przygotowaniem różnorodnej infrastruktury,

  • jak dostosować się do różnych wymagań stawianych przez różne usługi,

  • jak w spójny i powtarzalny sposób zarządzać procesem budowania usług,

  • gdzie i jak wdrażać poszczególne usługi.


5. Utrzymanie i zarządzanie usługami

  • Standardowe metryki usługi (Actuator)

  • Monitoring usług - centralizacja logowania

    • Śledzenie transakcji w obrębie systemu rozproszonego

    • Metryki biznesowe oraz techniczne

  • Śledzenie przepływu komunikacji

  • Skalowanie systemów rozproszonych

    • Skalowanie pionowe (scale-up) i poziome (scale-out)

    • Koncepcja automatycznego skalowania w środowiskach chmurowych

Tip
Cel modułu

Staramy się odpowiedzieć na pytanie "Jak zrozumieć co dzieje się w systemie rozproszonym"

  • jak logować i raportować informacje z systemu,

  • gdzie dane z systemu gromadzić i w jaki sposób tego dokonać,

  • jak śledzić przepływ informacji pomiędzy poszczególnymi usługami,

  • jak reagować na problemy, i jak skalować aplikację w przy większym obciążeniu.

Zapytaj o szkolenie

Jestem dla Ciebie dostępny poprzez: twitter, linkedin lub tradycyjnie przez email kuba.marchwicki at gmail.com