Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Microservice - Jak to ugryźć
Pyton_000
post
Post #1





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Temat nadaje się raczej do Pro (IMG:style_emoticons/default/wink.gif)

Do rzeczy. Mamy dość pokaźną aplikację która została napisana już wieki temu. Przyszedł czas aby zacząć ją migrować na nowe rozwiązania.
Aplikacja z biznesowego pkt. jest podzielona na modułu np. Wyszukiwarka, Klienci, Kontrakty, Firmy itd.

Ogólnie jest to aplikacja do zarządzania rekrutacjami.

Chcemy to zmigrować i postawić w oparciu o Microservices. Tylko jak to ugryźć.
Nie mam doświadczenia w tej materii więc może będzie ktoś kto udzieli jakichś wskazówek.

Założenia są takie że migrujemy na Laravel 5.1 (nie pytajcie dla czego (IMG:style_emoticons/default/tongue.gif) , hejt i tak nic nie wniesie (IMG:style_emoticons/default/smile.gif) ), PHP 5.6 (lub 7).
Jest to dość złożona struktura, dla tego musimy się "wpiąć" w stary system i robić przekierowanie do nowych elementów tak aby móc powoli wyłączać stare rzeczy.

Może ktoś ma jakieś ciekawe materiały na ten temat, jak to ładnie powinno wyglądać.
Wiem tyle że całość ma się opierać o REST i Events.

Czy każdy moduł stawiać jako w pełni działająca aplikacja na FW czy może jakieś inne rozwiązania.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lukaskolista
post
Post #2





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


Poniżej moja propozycja, głównie architektura, o implementacji nie będę się rozpisywał.

Na podstawie wiedzy, doświadczenia oraz 2-godzinnego review na temat microservice proponuję takie rozwiązanie:
1. Wyznaczcie autonomiczne obszary biznesowe. Autonomiczne to nie takie, które nie mają powiązań z innymi, bo to by było bez sensu. Chodzi mi o obszary typu: fakturowanie, płatności, marketing itp. Gdybyś przybliżył szczegóły projektu było by łatwiej.
2. Powyższe obszary bezpośrednio mapują się na architekturę SOA - każdy obszar to odrębna usługa. Dobrze to zrobić tak, że każda usługa jest pod dedykowanym load balancerem, bo usługi mogą pracować na kilku węzłach klastra active-active (są nadmiarowe nogi tak, aby w przypadku awarii jednej z nich usługa dalej mogła obsługiwać większe obciążenie). Oczywiście jeśli obciążenie jest małe, to nie ma sensu, wtedy wystarczy active-passive po 1 węźle aktywnym i pasywnym.

Krótko mówiąc: obszar biznesowy = usługa w ujęciu SOA.

Usługi należy rozdzielić pomiędzy zespoły. Jak Was jest np. 5, to macie trochę problem organizacyjny, ale pewnie dacie radę.

Jak już są usługi, to teraz należy zastanowić się nad ich implementacją. Zakładam, że będzie to PHP (pewnie framework) + jakaś baza. Sugeruję użyć wzorców:
Oddzielone wywołanie
Usługa transakcyjna
Usługa aktywna (na 99% się przyda)
Workflow (jeżeli potrzeby biznesu są dynamiczne, np. często tworzone są nowe oferty w ramach tej samej funkcjonalności, ale są różnie obsługiwane, to biznes będzie bardzo zadowolony z użycia tego wzorca)
Potoki równoległe (też pewnie użyjecie, bardzo fajnie się skalują, można wykorzystać system kolejnowania, np. rabbitMQ czy Gearman - gearman w Symfony ma bardzo fajny pakiet, jeżeli byście symfony używali)

Wzorce typu komponent brzegowy pomijam, bo to nie problem zespołu deweloperów danej usługi (chyba, że będziecie utrzymywać serwery produkcyjne).

Następnie zastanowił bym się nad tym, jak poszczególne usługi zaprojektować. Niektóre pewnie można zrealizować na microservice (usługa w pojęciu SOA to niekoniecznie jeden monolit, to raczej jakiś byt z interfacem komunikacji). Taki interface może przyjmować zapytania i przekazywać je wewnętrzenie gdziekolwiek i robić z nimi cokolwiek.

Nie należy każdej usługi robić na microservice, to już zależy konkretnie od potrzeb.

Na koniec:
SOA != microservice
SOA - ujmuje obszary biznesowe jako usługi, może wykonywać wiele czynności
microservice - ujmuje pojedyncze funkcjonalności jako usługi, wykonuje mało czynności, a najlepiej jedną, w której jest wyspecjalizowana (np. generowanie faktury to jeden mikroserwis, bo z punktu widzenia biznesu to jedna czynność)
Należy jedynie zdefiniować pojęcie czynność na odpowiednim poziomie szczegółowości (wystawienie faktury to czynność, wysłanie emaila też, ale mają różny poziom szczegółowości)

Ten post edytował lukaskolista 29.01.2016, 15:57:08
Go to the top of the page
+Quote Post

Posty w temacie
- Pyton_000   Microservice - Jak to ugryźć   25.01.2016, 09:26:31
- - marcio   W tym momencie robimy to samo z systemem ktory zar...   26.01.2016, 10:25:28
- - Pyton_000   Hehe widać nie jestem sam w bólu Tak BD zostaje....   26.01.2016, 10:34:24
- - lukaskolista   CytatAplikacja z biznesowego pkt. jest podzielona ...   29.01.2016, 11:41:46
- - Pyton_000   Też to rozważam. Masz może jakieś sprawdzone lekt...   29.01.2016, 11:45:44
- - marcio   http://microservices.io https://www.nginx.com/blog...   29.01.2016, 12:42:05
- - lukaskolista   Ebook porównujący microservices i SOA: https://www...   29.01.2016, 13:02:59
- - marcio   abstrahujac abstrakcje i tak by mozna bylo w niesk...   29.01.2016, 14:16:54
- - lukaskolista   Nie, microservice to nie wdrożenie w życie. Wdroże...   29.01.2016, 14:24:52
- - Pyton_000   Każda dyskusja ma sens o ile jest merytoryczna C...   29.01.2016, 14:39:33
- - Dejmien_85   W skrócie: 1. Zerknij na cała aplikację, zlokaliz...   29.01.2016, 14:46:01
- - Pyton_000   Dość poważny problem tej aplikacji jest taki że ni...   29.01.2016, 15:11:04
- - by_ikar   Założenie mikrosewisów nie jest takie że wszystko ...   29.01.2016, 15:32:01
|- - Dejmien_85   Cytat(by_ikar @ 29.01.2016, 15:32:01 ...   29.01.2016, 17:35:49
- - Pyton_000   U nas nie ma takiego problemu. Jest już ustalone, ...   29.01.2016, 15:44:09
- - lukaskolista   Poniżej moja propozycja, głównie architektura, o i...   29.01.2016, 15:54:45
- - lukaskolista   CytatWeź się za porządną literaturę, ona Ci pomoże...   29.01.2016, 17:59:51
- - Pyton_000   @lukaskolista, @Dejmien_85 kawał dobrej wypowiedzi...   29.01.2016, 20:21:46
- - lukaskolista   Na jakim systemie bazodanowym to macie postawione?...   29.01.2016, 21:03:38
- - Pyton_000   Tak, Mysql, serwis działa od 2006 roku   29.01.2016, 21:25:04


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.04.2026 - 14:36