Jak stworzyć system oparty o mikroserwisy Karol Buler

Save this PDF as:
 WORD  PNG  TXT  JPG

Wielkość: px
Rozpocząć pokaz od strony:

Download "Jak stworzyć system oparty o mikroserwisy Karol Buler"

Transkrypt

1 Jak stworzyć system oparty o mikroserwisy Karol Buler

2 O czym będzie? Architektura monolityczna Problemy z monolitem Architektura oparta o mikroserwisy Tworzenie mikroserwisu od zera Przejście z monolitu na mikroserwisy Problemy(?) z mikroserwisami SpringBoot live demo Zuul

3 To nie jest wszystko jedyne słuszne rozwiązanie

4 Architektura monolityczna

5 Serwis idealny SRP Single Responsibility Principle OCP Open/closed principle Zbudowany, wdrożony sam, jeden, niezależny Działa we własnym procesie, sam, jeden, niezależnie Posiada swoje dane, które może zmieniać tylko on sam, jeden, niezależnie Jest lekki, łatwy we wdrożeniu oraz łatwo z niego korzystać

6 Architektura monolityczna View

7 Monolit

8 Monolit - problemy Skalowanie wielkiego klocka Wszystko działa w jednym procesie, jest ciężkie, długo się buduje. Tracimy dużo czasu, żeby przetestować mały fragment implementacji. Nawet dzieląc wszystko na logiczne części i tak znajdzie się ninja, który dobierze się do nieswojego zasobu. Najczęściej system zastany (legacy), archaiczną wiedzę o nim posiadają tylko nieliczni wodzowie plemienia Starszych Programistów

9 Monolit - nietykalny

10 Monolit a serwis idealny SRP Single Responsibility Principle OCP Open/closed principle Zbudowany, wdrożony sam, jeden, niezależny Działa we własnym procesie, sam, jeden, niezależnie Posiada swoje dane, które może zmieniać tylko on sam, jeden, niezależnie Jest lekki, łatwy we wdrożeniu oraz łatwo z niego korzystać

11 Mikroserwisy

12 Mikroserwisy View

13 Mikroserwisy View

14 Mikroserwisy View

15 Mikroserwisy View

16 Mikroserwisy View 3

17 Mikroserwisy View 3

18 Mikroserwisy View 3

19 Problemy monolitu a mikroserwisy Skalowanie wielkiego klocka Wszystko działa w jednym procesie, jest ciężkie, długo się buduje. Tracimy dużo czasu, żeby przetestować mały fragment implementacji. Nawet dzieląc wszystko na logiczne części i tak znajdzie się ninja, który dobierze się do nieswojego zasobu. Najczęściej system zastany (legacy), archaiczną wiedzę o nim posiadają tylko nieliczni wodzowie plemienia Starszych Programistów

20 (Mikro)Serwis idealny SRP Single Responsibility Principle OCP Open/closed principle Zbudowany, wdrożony sam, jeden, niezależny Działa we własnym procesie, sam, jeden, niezależnie Posiada swoje dane, które może zmieniać tylko on sam, jeden, niezależnie Jest lekki, łatwy we wdrożeniu oraz łatwo z niego korzystać

21 Mikroserwis od zera

22 Koncepcja Duży problem biznesowy

23 Koncepcja Mały problem biznesowy Mały problem biznesowy Mały problem biznesowy Mały problem biznesowy Mały problem biznesowy Mały problem biznesowy

24 Koncepcja 1 Mały problem biznesowy Mały problem biznesowy 2 Mały problem biznesowy Mały problem biznesowy 3 Mały problem biznesowy Mały problem biznesowy

25 Koncepcja 1 4 Mały problem biznesowy Mały problem biznesowy 2 Mały problem biznesowy Mały problem biznesowy 5 3 Mały problem biznesowy Mały problem biznesowy 6

26 Koncepcja 1 4 Mały problem biznesowy Mały problem biznesowy 2 Mały problem biznesowy Mały problem biznesowy 5 3 Mały problem biznesowy Mały problem biznesowy 6

27 Dzielenie problemu Opis systemu IPTV (Internet Protocol Television): Użytkownik ma możliwość oglądania telewizji udostępnianej poprzez sieć szerokopasmową obsługującą protokół IP. W trakcie oglądania telewizji użytkownik może przeglądać EPG (Electronic Program Guide) oraz katalogi VoD (Video on Demand), ustawiać przypomnienia na konkretne Programy, kupować wybrane filmy lub dodawać je do listy ulubionych. Programy również mogą zostać dodane do listy ulubionych.

28 Dzielenie problemu Opis systemu IPTV (Internet Protocol Television): Użytkownik ma możliwość oglądania telewizji udostępnianej poprzez sieć szerokopasmową obsługującą protokół IP. W trakcie oglądania telewizji użytkownik może przeglądać EPG (Electronic Program Guide) oraz katalogi VoD (Video on Demand), ustawiać przypomnienia na konkretne Programy, kupować wybrane filmy lub dodawać je do listy ulubionych. Programy również mogą zostać dodane do listy ulubionych.

29 Dzielenie problemu Opis systemu IPTV (Internet Protocol Television): Użytkownik ma możliwość oglądania telewizji udostępnianej poprzez sieć szerokopasmową obsługującą protokół IP. W trakcie oglądania telewizji użytkownik może przeglądać EPG (Electronic Program Guide) oraz katalogi VoD (Video on Demand), ustawiać przypomnienia na konkretne Programy, kupować wybrane filmy lub dodawać je do listy ulubionych. Programy również mogą zostać dodane do listy ulubionych.

30 Dzielenie problemu Opis systemu IPTV (Internet Protocol Television): Użytkownik ma możliwość oglądania telewizji udostępnianej poprzez sieć szerokopasmową obsługującą protokół IP. W trakcie oglądania telewizji użytkownik może przeglądać EPG (Electronic Program Guide) oraz katalogi VoD (Video on Demand), ustawiać przypomnienia na konkretne Programy, kupować wybrane filmy lub dodawać je do listy ulubionych. Programy również mogą zostać dodane do listy ulubionych.

31 Dzielenie problemu Opis systemu IPTV (Internet Protocol Television): Użytkownik ma możliwość oglądania telewizji udostępnianej poprzez sieć szerokopasmową obsługującą protokół IP. W trakcie oglądania telewizji użytkownik może przeglądać EPG (Electronic Program Guide) oraz katalogi VoD (Video on Demand), ustawiać przypomnienia na konkretne Programy, kupować wybrane filmy lub dodawać je do listy ulubionych. Programy również mogą zostać dodane do listy ulubionych.

32 Dzielenie problemu Opis systemu IPTV (Internet Protocol Television): Użytkownik ma możliwość oglądania telewizji udostępnianej poprzez sieć szerokopasmową obsługującą protokół IP. W trakcie oglądania telewizji użytkownik może przeglądać EPG (Electronic Program Guide) oraz katalogi VoD (Video on Demand), ustawiać przypomnienia na konkretne Programy, kupować wybrane filmy lub dodawać je do listy ulubionych. Programy również mogą zostać dodane do listy ulubionych.

33 Dzielenie problemu Opis systemu IPTV (Internet Protocol Television): Użytkownik ma możliwość oglądania telewizji udostępnianej poprzez sieć szerokopasmową obsługującą protokół IP. W trakcie oglądania telewizji użytkownik może przeglądać EPG (Electronic Program Guide) oraz katalogi VoD (Video on Demand), ustawiać przypomnienia na konkretne Programy, kupować wybrane filmy lub dodawać je do listy ulubionych. Programy również mogą zostać dodane do listy ulubionych.

34 Dzielenie problemu Opis systemu IPTV (Internet Protocol Television): Użytkownik ma możliwość oglądania telewizji udostępnianej poprzez sieć szerokopasmową obsługującą protokół IP. W trakcie oglądania telewizji użytkownik może przeglądać EPG (Electronic Program Guide) oraz katalogi VoD (Video on Demand), ustawiać przypomnienia na konkretne Programy, kupować wybrane filmy lub dodawać je do listy ulubionych. Programy również mogą zostać dodane do listy ulubionych.

35 Mikroserwisy z monolitu

36 Why??? How???

37 Monolit -> Mikroserwisy (powolutku) View

38 Monolit -> Mikroserwisy (powolutku) View

39 Monolit -> Mikroserwisy (powolutku) View 1

40 Monolit -> Mikroserwisy (powolutku) View 1

41 Monolit -> Mikroserwisy (powolutku) View 1

42 Monolit -> Mikroserwisy (powolutku) View 1

43 Problemy?

44 Problemy(?) z mikroserwisami 1. Deployment całego systemu 2. Testowanie 3. (teoretycznie) znalezienie błędu w systemie 4. Development a zależności między modułami

45 Problemy(?) z mikroserwisami 1. Deployment całego systemu 2. Testowanie 3. (teoretycznie) znalezienie błędu w systemie 4. Development a zależności między modułami 1. Docker + docker compose 2. Testy integracyjne (spring integration tests) 3. Zipkin 4. Docker + docker compose

46 SpringBoot

47 SpringBoot?

48 Zuul Gateway

49 Zuul Gateway zuul: routes: users: path: /users/** url: epg: path: /epg/** url: vod: path: /vod/** url:

50 Zuul Gateway zuul: routes: users: path: /users/** url: epg: path: /epg/** url: vod: path: /vod/** url:

51 Zuul Gateway zuul: routes: users: path: /users/** url: epg: path: /epg/** url: vod: path: /vod/** url:

52 Dziękuję!