Mikroslužby / gateway

Mikroslužby / gateway
« kdy: 30. 06. 2019, 19:44:20 »
Ahoj,
nedávno jsem četl seriál od pana Tišnovského a rozhodl jsem se, že si zkusim napsat službu, která bude rozsekaná na mikroslužby. Chtěl bych mít gateway, se kterou bude komunikovat klient přes websocket. Ta gateway zprávu přepošle odpovídající mikroslužbě a zároveň bude fungovat pro zpětnou komunikaci, pokud mikroslužba bude chtít zpravit klienta, dá to vědět gatewayi .

Pan Tišnovský zdůrazňoval, že jeden z problémů u mikroservis je nespolehlivost sítě, tedy že služby by spolu měly komunikovat co nejvíc nepřímo, přes nějakého message brokera a přímo, jen pokud je to nutný a poté i cachovat.

Bude zpoždění velké, pokud budu posílat požadavky pro klienta na gateway přes frontu i jako odpověď na nějakej dotaz, kterej jsem od klienta přijal?

Když nějaká služba se rozhodne informovat o něčem klienta, pošle gatewayi požadavek, ale gateway vyhodí chybu, nebo spadne, kde bych měl v udržet požadavek na gateway, aby se neztratil? Jestli se nepletu, řeší to Kafka, ale nejsem si jist, jestli to neni tak trochu kanón na vrabce.

A poslední otázka, kde přesně a jak řešit cache? Napadlo mě mít elasticu na gatewayi, všechny dotazy tahat z ní a jen ji updatit v případě změn.

Děkuji předem za vaše názory, nápady a další odpovědi :)


Re:Mikroslužby / gateway
« Odpověď #1 kdy: 30. 06. 2019, 20:05:06 »
Spíš se tím myslí, že nějaká gateway nebo ESB se lépe konfiguruje za firewallem apod. než že by to bylo spolehlivější.
ESB nebo chytřejší message broker umí řešit opětovné doručení zprávy jinak si musí poradit mikroservisa sama.
Latence gateway, mb nebo ESB mohou být různé od milisekund po sekundy to záleží na typu.
ESB, mb nebo gateway je výrazně přehlednější než špagety.

Kafka je dobrá jako message broker jako gateway by šel použít NGINX
« Poslední změna: 30. 06. 2019, 20:07:10 od Jan Forman »
„Řemeslo se naučí každý. Umění nikdo.“
„Jednoduchost je nejvyšší úroveň sofistikovanosti.“
- Leonardo Da Vinci

David

  • ***
  • 143
    • Zobrazit profil
Re:Mikroslužby / gateway
« Odpověď #2 kdy: 30. 06. 2019, 20:24:53 »
Jako message broker používám RabbitMQ díky jednoduché instalaci/konfiguraci a spolehlivosti provozu.

ldj

Re:Mikroslužby / gateway
« Odpověď #3 kdy: 01. 07. 2019, 09:16:57 »
Osobne bych se ESB patternu u microsluzeb spise vyhybal, je to spise relikt SOA architetkury podobne jako velke databaze v pozadi. Mikroservices vnimam spise jako krok k distribuovanym systemum, kde mit message brokery je slozite, protoze potrebuju je mit skalovatelne a v HA setupu.
Tohle se puvodne resilo ruznyma knihovnama ve sluzbach, kdy vsechny retries, circuit breakers, service discovery atp byly reseny v apliakci vecmi jako netflix zuul atp. Ve svete kontejnerizace a service meshes bych se uz spise dival po infrastrukture, ktera mi tohle vse zajisti. Myslim, ze orchestrace zalozena na Kuberentes/OpenShif ve spolupraci si istiem a solidini API GW je zajimavou platformou.
Pokud se tohle vse propoji s nejakym FaaS (Azure functions, OpenWhisk?) tak se muze jednat o velmi vyspelou infrastrukturu, ktera mi spolehlive ridi, zabezpecuje a standardizuje vyvoj a nasazeni mych mikrosluzeb.