Analiza mikroserwisów. Warszawa,

Podobne dokumenty
Zmiana sposobu dostarczania aplikacji wspierających funkcje państwa

Piotr Bubacz Cloud Computing

DLA SEKTORA INFORMATYCZNEGO W POLSCE

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Architektura korporacyjna jako narzędzie koordynacji wdrażania przetwarzania w chmurze

Usługa: Audyt kodu źródłowego

Etapy życia oprogramowania

Jak stworzyć system oparty o mikroserwisy Karol Buler

AUREA BPM HP Software. TECNA Sp. z o.o. Strona 1 z 7

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

REFERAT PRACY DYPLOMOWEJ

Procesowa specyfikacja systemów IT

Szczegółowy opis przedmiotu umowy. 1. Środowisko SharePoint UWMD (wewnętrzne) składa się z następujących grup serwerów:

Virtual Grid Resource Management System with Virtualization Technology

Historia modeli programowania

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Dokumentacja projektu QUAIKE Architektura oprogramowania

Studia podyplomowe PROGRAM NAUCZANIA PLAN STUDIÓW

Testowanie oprogramowania

Informacja o firmie i oferowanych rozwiązaniach

Opis wdrożenia Platformy Technologicznej epodreczniki.pl na zasobach Poznańskiego Centrum Superkomputerowo-Sieciowego

Skuteczna budowa sieci METRO

WPROWADZENIE DO UML-a

Wykład Ćwiczenia Laboratorium Projekt Seminarium

OSGi Agata Hejmej

Dodatkowo, w przypadku modułu dotyczącego integracji z systemami partnerów, Wykonawca będzie przeprowadzał testy integracyjne.

Dlaczego testowanie jest ważne?

Programowanie zespołowe

Zintegrowane środowisko informatyczne jako narzędzie modelowania i dynamicznej wizualizacji jakości powietrza. Tomasz Kochanowski

Opis podstawowych modułów

Metodyka projektowania komputerowych systemów sterowania

Architektura mikroserwisów na platformie Spring IO

Asseco dla Zdrowia r.

Łatwa czy niełatwa droga do celu? - wdrożenie COSMIC w ZUS

POLITYKA ZARZĄDZANIA RYZYKIEM

Przetwarzanie danych w chmurze

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

Modelowanie i Programowanie Obiektowe

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Wirtualizacja zasobów IPv6 w projekcie IIP

Wstęp 1. Misja i cele Zespołu Szkół Integracyjnych w Siemianowicach Śląskich 2

Zastosowania aplikacji B2B dostępnych na rynku zalety aplikacji online

POLITYKA ZARZĄDZANIA RYZYKIEM W SZKOLE PODSTAWOWEJ NR 2 W KROŚNIE ODRZAŃSKIM

Aplikacja (oprogramowanie) będzie umożliwiać przygotowanie, przeprowadzenie badania oraz analizę wyników według określonej metody.

Program szkolenia: Wprowadzenie do Domain Driven Design dla biznesu (część 0)

Usługa: Testowanie wydajności oprogramowania

STRATEGIA CYFRYZACJI REGIONU MAZOWIECKIE SPOTKANIA Z E-ADMINISTRACJĄ WARSZAWA, R.

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

edycja 1 opracowany zgodnie z Zarządzeniami Wewnętrznymi PWr. nr 14/2012 i 15/2012 i 34/2012

WOJSKOWA AKADEMIA TECHNICZNA WYDZIAŁ CYBERNETYKI

Warszawa, Wytyczne dla projektu Biblioteka GUI

Ciągłe dostarczanie oprogramowania : kompletny przewodnik / Eberhard Wolff. Gliwice, cop Spis treści

Katedra Inżynierii Oprogramowania Tematy prac dyplomowych inżynierskich STUDIA NIESTACJONARNE (ZAOCZNE)

REKOMENDACJE DOTYCZĄCE PLATFORMY ZARZĄDZANIA KOMPETENCJAMI

Bezpieczeństwo danych i systemów informatycznych. Wykład 1

Spring Framework - wprowadzenie i zagadnienia zaawansowane

EZD RP elektroniczne zarządzanie dokumentacją w administracji publicznej

Klient SmartMedia Sp. z o.o., Dziennikus Sp. z o.o. Branża. IT, software. Okres realizacji. Lipiec nadal. Rodzaj usługi:

Narzędzia podnoszące jakość procesu wytwarzania i wdrażania

ZARZĄDZENIE Nr 132/12 BURMISTRZA PASŁĘKA z dnia 28 grudnia 2012 roku

SOA Web Services in Java

Zaawansowane narzędzia programowania rozproszonego

Wspólna Platforma Intranetowa dla pracowników administracji rządowej. Projekt współfinansowany z Europejskiego Funduszu Społecznego

Galileo - encyklopedia internetowa Plan testów

Dotacje na innowacje Inwestujemy w Waszą przyszłość

Wykład 1 Inżynieria Oprogramowania

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Inżynieria Oprogramowania w Praktyce

Maciej Oleksy Zenon Matuszyk

Uniwersytet Mikołaja Kopernika w Toruniu. Profilowanie ruchu sieciowego w systemie GNU/Linux

Historia naszego klienta. Rozwiązanie FAMOC MDM zwiększa bezpieczeństwo mobilne w Credit Agricole Bank Polska

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Deduplikacja danych. Zarządzanie jakością danych podstawowych

Oracle Log Analytics Cloud Service

Podstawy Techniki Komputerowej. Temat: BIOS

Ełk, dn r. DOMSET Marcin Brochacki. ul. Wojska Polskiego 43 lok. 3, Ełk. Nip ZAPYTANIE OFERTOWE

O nas. Usługi. jpbs realizuje następujące rodzaje projektów usługowych:

MVVM Light Toolkit. Julita Borkowska

Testowanie oprogramowania. Testowanie oprogramowania 1/34

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

System Centralny dla banku w 6 miesięcy

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

EXSO-CORE - specyfikacja

Usprawnienie procesu zarządzania konfiguracją. Marcin Piebiak Solution Architect Linux Polska Sp. z o.o.

Program szkolenia: REST i Microservices w PHP

Architektura systemów webowych wysokiej przepustowości. na przykładzie Wikia

BIM Executive projektowanie, koordynacja i wdrażanie nowoczesnych projektów budowlanych

Dwie szkoły oceny 360 stopni. Sprawdź różnicę pomiędzy klasycznym a nowoczesnym podejściem

Podstawy programowania III WYKŁAD 4

ZARZĄDZANIE DOKUMENTACJĄ. Tomasz Jarmuszczak PCC Polska

Plik pobrano z Tytuł: Wzorce projektowe, cz. 2 Strategy Ostatnia aktualizacja:

Wypożyczalnia VIDEO. Technologie obiektowe

<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>

Warsztaty FRAME. Sygnatura warsztatu: W1 (W3) Czas trwania: 3 dni

Transkrypt:

Analiza mikroserwisów Warszawa, 27.02.2017

Streszczenie 3 Cel 3 Sposób realizacji 3 Konkluzja 3 Analiza 3 Korzyści wykorzystania mikroserwisów 3 Zmapowane ryzyka 3 Analiza argumentów 6 Konsultacje z NASK 7 Użycie pamięci operacyjnej 7 2/7

Streszczenie Cel Podjęcie decyzji, czy platforma aplikacje.gov.pl będzie budowana w oparciu o wzorzec mikroserwisów ( http://microservices.io/ ). Sposób realizacji Analiza korzyści i zagrożeń wynikających z podjęcia decyzji o zbudowaniu platformy zgodnie ze wzorcem mikroserwisów. Analiza wagi poszczególnych argumentów. Na podstawie tej analizy podjęcie decyzji w sprawie użycia wzorca mikroserwisów. Konkluzja Wzorzec mikroserwisów bardziej niż architektura monolityczna odpowiada potrzebom i założeniom aplikacji.gov.pl. Aby podjąć decyzję wykorzystania tego wzorca konieczne były konsultacje z zespołem odpowiedzialnym za infrastrukturę chmury. W wyniku konsultacji nie stwierdzono przeciwwskazań do zastosowania wzorca mikrousług. W związku z tym podjęto decyzję o budowie platformy w oparciu o wzorzec mikrousług. Analiza Korzyści wykorzystania mikroserwisów Różne części systemu mogą być tworzone w różnych technologiach. Zarządzanie zmianą i deploymentem jest łatwiejsze, niż w przypadku architektury monolitycznej. Łatwa wymiana konkretnej usługi na inną, w innej technologii, implementującą to samo API. Zarządzanie separacją aplikacji jest łatwiejsze, niż w przypadku architektury monolitycznej, co może wpływać pozytywnie na poziom bezpieczeństwo rozwiązania. Rozpraszanie aplikacji pomiędzy wiele maszyn jest łatwiejsze, niż w przypadku architektury monolitycznej. Zmapowane ryzyka W dyskusjach środowiskowych o stosowaniu mikroserwisów pojawiają się argumenty 1 przeciwko temu rozwiązaniu. Przygotowując analizę zebraliśmy je w jednym miejscu punktując zasadność krytyki. Podzieliliśmy ryzyka na takie, które zgodnie z przytoczonymi 1 Niektóre z nch zostały wyrażone we wpisie na blogu: http://www.ictshop.pl/czym-sa-mikrouslugi/ 3/7

przez nas argumentami są niezasadne lub nie wpływają w istotny sposób na poziom trudności systemu i takie, które istotnie występują i muszą być wzięte pod uwagę w podejmowaniu decyzji o wykorzystaniu mikroserwisów L.p. Ryzyko Kontrargumenty 1 Różne części systemu mogą być tworzone w różnych technologiach, co utrudnia zrozumienie całego kodu na szczegółowym poziomie. 2 Różne części systemu mogą być tworzone w różnych technologiach, co może utrudnić stosowanie automatów pomagających w procesie wytwórczym (np continuous integration). 3 Automaty pomagające w procesie wytwórczym mogą być niezależne dla każdego serwisu z osobna. Co budzi niepokój, że nie ma testów dla całości. Zrozumienie całego kodu na szczegółowym poziomie nie jest potrzebne. Aby nie musieć tego robić w systemach informatycznych stosuje się różnego rodzaju abstrakcje (system operacyjny, język programowania, protokoły). Konieczność rozumienia całego kodu oznacza źle zaprojektowany/napisany system. Automaty pomagające w procesie wytwórczym mogą być niezależne dla każdego serwisu z osobna. Testy dla całości nie są wykluczone. Nie są przypisane do jakiegokolwiek serwisu, tylko do ich zestawu tworzącego platformę. Aplikacja może także zawierać testy integracyjne uruchamiające inne aplikacje i sprawdzające poprawność ich współpracy. 4 Możliwość tworzenie w różnych technologiach może spowodować używanie przestarzałych lub źle zaprojektowanych narzędzi. 5 Możliwość tworzenie w różnych technologiach może spowodować używanie używanie przestarzałych lub źle zaprojektowanych narzędzi, które wprowadzą dziury bezpieczeństwa. Odpowiednie testy integracyjne (niezależne od implementacji) powinny wykryć złe funkcjonowanie. Testy bezpieczeństwa mikroserwisu nie są istotnie trudniejsze od testów bezpieczeństwa aplikacji monolitycznej. Problemem jest jednak m. in. fakt, że należy 4/7

takich testów wykonać wiele, po jednym na każdy mikroserwis. 6 Niezależność mikroserwisów polegająca na łatwym przebiegu ich modyfikacji może być w niektórych sytuacjach postrzegana jako problem, na przykład wtedy, gdy potrzebna będzie zmiana większej części systemu. Łatwość modyfikacji nie wpływa negatywnie na możliwość wykonywania większych zmian. Wygląda na to, że problem tkwi w śledzeniu przez jakie mikroserwisy używana jest część Y mikroserwisu X. Ten problem będzie rozwiązany przez dokładne specyfikacje API. W mikroserwisie Z nie korzystamy z mikroserwisu X, lecz z określonego API. Zmiana API będzie stanowić problem, jednak nie jest to przypadłość tylko mikroserwisów. 7 Trudniejsze zarządzanie transakcjami. Problem tkwi w zapewnieniu atomowości operacji, które angażują wiele mikroserwisów. Kontrargumentem jest, że takich serwisów nie powinno być. Atomowe operacje powinny być realizowane wewnątrz jednego serwisu. Z tego powodu operacje atomowe powinny być małe. 8 W przypadku mikroserwisów API, dla których wprowadzanie zmian jest trudnym procesem, będzie znacznie więcej niż w przypadku monolitu. 9 Wraz ze wzrostem każdej niezależnej aplikacji, wzrasta też zespół ją tworzący może przyczynić się to do problemów w koordynacji. Łatwiej kierować jednym, sporym zespołem, tworzącym spójną całość i pracującym nad jednym kodem, niż nad wieloma zespołami pracującymi nad niezależnymi aplikacjami, które powinny tworzyć spójną całość. 10 Mikroserwisy są stosunkowo nowym stylem programowania, który wymaga bardziej skomplikowanych narzędzi niż monolityczny odpowiednik. Jest też mniej znany, dlatego na Więcej standardowych, opisanych protokołów jest pozytywnym aspektem. Niezależne aplikacje nie muszą być tworzone przez jeden zespół. W momencie gdy osiągają stosunkową stabilność (wprowadzane zmiany nie zmieniają API w poważny sposób) zespoły mogą pracować oddzielnie. Pisanie pojedynczego mikroserwisu to pisanie (w zamierzeniu małego - pod względem funkcji) programu, 5/7

i tak już małym rynku, znajduje się mniej specjalistów wdrożonych w system. Może więc generować większe koszty podczas tworzenia aplikacji, zwłaszcza na początku. który ma API. Nie jest to nic nowego. Uruchamianie wielu takich programów w celu stworzenia funkcjonującego produktu może nastręczać trudności (z powodu swojej żmudności i konieczności odpowiedniej konfiguracji). Zadaniem zespołu tworzącego środowisko deweloperskie jest zapewnienie narzędzia, które w łatwy sposób uruchamia wiele mikroserwisów. L.p. Zmapowane ryzyka, które należy zestawić z korzyściami 1 Trudniej jest dbać o bezpieczeństwo małych, rozproszonych systemów, niż o jeden spory system. Problem ten może też generować dodatkowe koszta. 2 Testowanie integracyjne jest trudniejsze, niż w przypadku architektury monolitycznej. 3 Większe zużycie pamięci operacyjnej, niż w przypadku rozwiązań monolitycznych. 4 Komunikacja między serwisami będzie obciążać sieć. Obciążenie będzie większe, niż w przypadku rozwiązań monolitycznych, których komponenty mogą komunikować się za pomocą wspólnej pamięci. Analiza argumentów Argumenty za i przeciw wykorzystaniu wzorca mikroserwisów są porównywalnej siły. Uwzględniając, że aplikacje uruchamiane na platformie będą wytwarzane przez niezależnych producentów zapewnienie swobody technologicznej jest ważnym aspektem. Bez takiej swobody zbiór potencjalnych producentów aplikacji zostałby ograniczony. Oprócz EZD i innych, planowanych aplikacji, będzie potrzeba uruchamiania na platformie innych aplikacji. Postaci tych aplikacji nie sposób przewidzieć. Ograniczanie jej może ograniczyć możliwe do zrealizowania funkcje. Architektura mikroserwisów, przez zapewnienie swobody technologicznej, zapewnia małe ograniczenia. Jednym z założeń Platformy jest zmiana, możliwość wymiany komponentów bez zmiany całego systemu oraz możliwość dodawania dodatkowych aplikacji. Architektura mikroserwisów dobrze wpisuje się w to założenie, ponieważ ułatwia niezależne zmiany poszczególnych serwisów. Poważnym argumentem przeciw mikroserwisom jest trudność w zapewnieniu bezpieczeństwa. Eliminacja luk bezpieczeństwa wynikających ze stosowania różnych 6/7

technologii, z których niektóre mogą być wadliwe, wymaga nakładu pracy. Każdy serwis musi być sprawdzony, czy nie zawiera luk. Ten sam problem występowałby jednak (choć w mniejszej skali) także w sytuacji, gdyby moduły wielu producentów kooperowały w ramach jednego systemu - oba rozwiązania wymagają certyfikacji aplikacji pod kątem bezpieczeństwa. Rekomenduje się wykorzystanie wzroca mikroserwisów w budowie platformy aplikacje.gov.pl. Aby wybrać to rozwiązanie konieczne jest przeprowadzenie dodatkowych konsultacji z zespołem odpowiedzialnym za architekturę chmurową i bezpieczeństwo docelowej platformy. Konsultacje z NASK Użycie pamięci operacyjnej Przyjmując zamierzoną liczbę 1700 instytucji korzystających z systemu, na instytucję będzie przypadać około 3GB RAMu. Ta ilość jest za mała, aby uruchomić platformę w oparciu o mikroserwisy. Prawdopodobne jest, że w początkowym okresie wdrożeń nie wszystkie 1700 instytucji będzie korzystać z platformy. Gdyby założyć mniejszą liczbę instytucji - 300 - na instytucję przypada około 17GB RAMu, co szacunkowo pozwala na uruchomienie czterech aplikacji. Zdaniem naszym i NASK w kontekście powyższych obliczeń nie należy bardzo przejmować się złożonością pamięciową. Ważniejsze od złożoności jest zapewnienie możliwości skalowania pamięci wzwyż (więcej RAMu w węźle obliczeniowym) jak i wszerz (więcej węzłów obliczeniowych). Architektura mikrousług dobrze wpisuje się w wymaganie skalowalności pamięci, ponieważ wydajność mikrousługi może być zwiększona przez przydzielenie jej większej ilości zasobów (wzwyż) oraz przez uruchomienie większej liczby instancji danej mikrousługi (wszerz). 7/7