Asseco dla Zdrowia 20-21.09.2018 r.
Architektura i technologia w systemach Asseco Architektura mikrousługowa skonteneryzownaych systemów towards cloud native subsystems Dariusz Augustyn Sekcja Technologiczna Warszawa, 20.09.2018
Mikrousługa Zasady: obsługa wydzielonego, własnego kontekstu biznesowego komunikacja tylko przez oficjalne interfejsy własny magazyn danych (ang. storage) system jako sieć luźno powiązanych mikrousług Implementacja samodzielnie budowane aplikacje z wszystkimi zależnościami / bibliotekami komunikacja synchroniczna z wykorzystaniem lekkiego protokołu HTTP Rest możliwość komunikacji asynchronicznej (kolejki, tematy) Spring Boot
Implementacja Konteneryzacja Zasady: dostarczanie obrazu z implementacją mikrousługi oraz pełnym środowiskiem uruchomieniowym powoływanie instancji kontenerów poprzez uruchomienie obrazów określanie reguł dostępu do usług eksponowanych w kontenerach własny, bazowy obraz oparty o dystrybucję Ubuntu i Azul Zulu Open JDK określona wersja Java JDK, ustawiona strona kodowa, strefa czasowa obrazy budowane i publikowane w ramach opracowanych procesów CI/CD dwa prywatne Rejestry Obrazów (dev, prod) orkiestracja narzędziem Docker Compose
Kompleksowe wdrażanie komponentów w sensie stosu uruchomieniowego właściwe wersje całego środowiska uruchomieniowego dla wersji aplikacji uruchomionej mikrousługi w kontenerze Zwiększenie poziomu odporności na awarie obsługa autonomicznej poddziedziny przedmiotowej; ew. komunikacja asynchroniczna z innymi komponentami np. czasowo nieczynnymi Potencjalne zalety Selektywne wdrażanie komponentów możliwość wymiany wybranego, pojedynczego kontenera w otoczeniu innych Skalowanie pozione możliwość zwielokrotniania liczby kontenerów dla poprawy wydajności
Cechy rozwiązań typu cloud native moduły jako aplikacje mikrousługowe (spring-boot apps), serwis lokalizacji usług (np. eureka service), jeden punkt dostępu do usług (api-gateway, edge service) moduł równoważenia obciążenia (client-side load balancer) mechanizm blokady propagacji bledów (error circuit breaker) 7
Przepływ żądań w systemie o architekturze mikrousługowej
Lokalizacja usług Minimalny zbiór usług - statyczna struktura zależności
Lokalizacja usług Dodatkowy serwis dla lokalizacji usług
Lokalizacja usług Rejestracja usług w Eurece
Lokalizacja usług Odpytanie o lokalizacje usług
Lokalizacja usług Przepływ żądań aplikacyjnych
Lokalizacja usług Sprawdzenie stanu
Skalowanie horyzontalne Pojedyncze instancje usług: S1, S3
Skalowanie horyzontalne Podwojenie instancji - dodatkowe kontenery docker-compose scale S1=2 S3=2
Skalowanie horyzontalne Rozkład obciążenia algorytm karuzelowy
Architektura przykładowego systemu - MPI Infrastruktura Przepływ żądań aplikacyjnych Dziedzina
Architektura przykładowego systemu - MPI Infrastruktura Przepływ żądań aplikacyjnych Dziedzina
Architektura przykładowego systemu - MPI Rozłączne schematy bazy danych
Podejście Monolith first - podsystemy podzielone na moduły - wykorzystanie środowiska OSGi i technologii Spring - uruchamianie w ramach serwer aplikacji Virgo
Przygotowanie do uruchomienia w chmurze lub Centrum Przetwarzania Danych Uruchomienie aplikacji o architekturze monolitycznej klastry maszyn wirtualnych. Podsystemy architekturze mikrousługowej uruchamiane w kontenerach Docker-owych zanurzonych w tzw. pod-ach środowiska Kubernertes. Uruchamianie podów na węzłach klastrów środowiska Kubernates. +
Dziękuję za uwagę Poproszę o pytania
Dariusz.Augustyn@asseco.pl zdrowie.asseco.com
Zastrzeżenia prawne Zawartość dostępna w prezentacji jest chroniona prawem autorskim i stanowi przedmiot własności. Teksty, grafika, fotografie, dźwięk, animacje i filmy, a także sposób ich rozmieszczenia w prezentacji podlegają ochronie na mocy Ustawy o prawach autorskich i prawach pokrewnych oraz innych przepisów z tym związanych. Jakiekolwiek nieautoryzowane zastosowanie jakichkolwiek materiałów zawartych w prezentacji może stanowić naruszenie praw autorskich, znaków firmowych lub innych przepisów. Materiały dostępne w prezentacji nie mogą być modyfikowane, powielane, przedstawiane publicznie, wykonywane, rozprowadzane lub wykorzystywane w innych celach publicznych lub komercyjnych, chyba że Asseco Poland S.A. wydał na to wyraźną zgodę na piśmie. Kopiowanie w celach komercyjnych, rozpowszechnianie, modyfikacja lub przejmowanie zawartości niniejszej prezentacji przez osoby trzecie jest niedozwolone. W prezentacji mogą być prezentowane również materiały zawierające odesłania do ofert i usług podmiotów trzecich. Warunki korzystania z ofert i usług podmiotów trzecich są określone przez te podmioty. Asseco Poland S.A. nie ponosi żadnej odpowiedzialności za warunki i skutki korzystania z ofert i usług tychże podmiotów. Dane i informacje zawarte w prezentacji mają jedynie charakter ogólnoinformacyjny. Prezentacja przygotowana została w oparciu i przy użyciu produktów firmy Inscale. Nazwa oraz logo Asseco Poland S.A. są zarejestrowanymi znakami towarowymi. Korzystanie z tych znaków wymaga wyraźnej zgody ze strony Asseco Poland S.A. 2018 Asseco Poland S.A.
Źródła obrazków (odniesienia) http://stormpath.com/wp-content/uploads/2016/05/spring-boot-logo.jpg http://www.unixstickers.com/image/cache/data/stickers/docker/docker-logo-and-type.sh-600x600.png https://cdn-1.wp.nginx.com/wp-content/uploads/2017/03/cloud-300x300-pms355.png https://cdn.pixabay.com/photo/2014/04/02/11/03/fire-305341_960_720.png https://cdn.pixabay.com/photo/2017/02/11/18/54/uluru-2058380_1280.jpg http://fullbit.ca/wp-content/uploads/2018/02/kubernetes-logo1-e1525258419775.png https://www.google.pl/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&ved=2ahukewjh78mytcbdahuq26qkhuu kba0qjrx6bagbeau&url=https%3a%2f%2fdobsondev.com%2ftag%2fhtml%2f&psig=aovvaw087aqni7m5akqxrqqzqvld&ust =1537423644255239 https://www.google.pl/url?sa=i&rct=j&q=&esrc=s&source=imgres&cd=&ved=2ahukewiz2klnwsbdahwjr6qkhadnbeyqjrx6bagb EAU&url=https%3A%2F%2Fwww.qubole.com%2Fproducts%2Fqds-oracle-cloud-infrastructure%2F&psig=AOvVaw1FjCsbuxXsgEXSZVgt69p&ust=1537427746853586 27