U svetu mikroservisa, aplikacije su sastavljene od brojnih nezavisnih jedinica, koje moraju međusobno komunicirati da bi sistem funkcionisao kao celina.
Direktna komunikacija između mikroservisa često je neefikasna i podložna greškama. Upravo tu servisna mreža stupa na scenu kao rešenje.
Šta je servisna mreža?
Pojam servisne mreže opisuje sistem upravljanja razmenom podataka između mikroservisa u aplikaciji. Konkretno, radi se o softverskom rešenju koje omogućava komunikaciju između mikroservisa i to kroz:
- Identifikaciju aplikacije
- Balansiranje opterećenja
- Autentifikaciju
- Enkripciju
Mreža međusobno povezanih mikroservisa stvara se putem paralelnih veza koje prolaze kroz njihove proksi servere. Ova mreža je integrisana u širi sistem za upravljanje umrežavanjem datacentra. Na taj način se optimizuje komunikacija tokom evolucije aplikacije, bez zastoja. U praksi, svaka aplikacijska usluga zahteva druge usluge za ispunjenje korisničkih zahteva.
Na primer, prilikom online kupovine, korisnik želi da proveri dostupnost proizvoda. Ovaj proces zahteva komunikaciju između servisa koji upravlja bazom podataka i onog koji prikazuje stranicu proizvoda. Dalje, taj servis komunicira sa korisničkom korpom za kupovinu.
Pored toga, prodavac može uvesti servis za preporuku proizvoda kako bi bolje usmerio korisnike. Ovaj novi servis komunicira ne samo sa bazom podataka o proizvodima, već i sa bazom zaliha, koja prethodno komunicira sa stranicom proizvoda. To je zapravo skup međusobno povezanih komponenti.
Savremene aplikacije se često postavljaju kao mreže servisa, od kojih svaki ima ulogu u ispunjavanju određenog poslovnog zadatka.
Kako funkcioniše servisna mreža i koje su njene prednosti?
Važno je napomenuti da servisna mreža ne dodaje nove funkcionalnosti radnom okruženju aplikacije. Servisna mreža se sastoji od grupe mrežnih proksi servera, što je već poznat koncept u poslovnom IT okruženju.
Proksi serveri se koriste svaki put kada se pristupa internetu sa radnog računara. Proksi serveri u mikroservisnoj infrastrukturi usmeravaju zahteve između servisa. Izraz „sidecar“ opisuje proksi servere koji su deo servisne mreže. Oni se izvršavaju uz same servise, a ne unutar njih. Proksi serveri različitih servisa formiraju ovu mrežu.
Bez servisne mreže, programeri bi morali da ugrade komunikacijsku logiku u svaki mikroservis. Ovakav pristup može dovesti do poteškoća u razvoju i dijagnostikovanju problema u komunikaciji, jer je logika komunikacije skrivena unutar svakog servisa.
Servisna mreža pojednostavljuje upravljanje komunikacijom između servisa.
Servisna mreža automatizuje komunikaciju i pruža potrebne podatke i uvide u spoljnoj infrastrukturi. Ovo olakšava pronalaženje i rešavanje problema i grešaka. Takođe, IT timovi mogu da se fokusiraju na druge zadatke koji doprinose vrednosti kompanije.
Zahvaljujući apstrakciji komunikacije, servisi koji ne funkcionišu mogu se automatski zaobići, bez prekidanja razmene podataka u drugim delovima aplikacije. Lako dostupni podaci iz servisne mreže mogu se analizirati za poboljšanje operacija i performansi aplikacije.
Predstavili smo kako funkcioniše servisna mreža. Sada, pogledajmo neke od najpoznatijih rešenja za servisne mreže:
Meshery
Meshery je menadžer servisne mreže koji omogućava korišćenje različitih rešenja za servisnu mrežu. Može se instalirati na Kubernetes i Docker. Meshery pruža korisnički interfejs (UI) i komandnu liniju (CLI) za testiranje performansi glavnih rešenja za servisne mreže, uključujući Linkerd i Istio. Meshery se može primeniti na klaster ili lokalno.
Amazon App Mesh
AWS App Mesh je servisna mreža za Amazon Kubernetes platformu (EKS). Omogućava upravljanje na nivou aplikacije preko proksi servera za ulazni i izlazni saobraćaj. Koristi prekidače kola za prikupljanje metrika vidljivosti koristeći AWS X-Ray. AWS App Mesh se može koristiti i sa drugim uslugama kao što su Amazon EC2 i AWS Fargate.
Linkerd
Linkerd je menadžer servisne mreže otvorenog koda koji koristi prilagođeni proksi server baziran na Rustu za upravljanje mikroservisima. Dolazi sa unapred instaliranom Grafanom koja omogućava prikaz metrika. Za razliku od drugih open-source menadžera, Linkerd nudi grafički korisnički interfejs (GUI) i ne podržava samo Prometheus, već i ulazne kontrolere kao što su Traefik, Kong i Gloo. Linkerd takođe podržava automatske nadogradnje u klasterima.
Istio
Istio je servisna mreža otvorenog koda koja koristi Envoy proksi za upravljanje mikroservisima. Istio nudi funkcije kao što su balansiranje opterećenja, kreiranje politika, rutiranje saobraćaja, vremenska ograničenja, prekidači kola, preusmeravanje saobraćaja i ponovni pokušaji. Istio takođe obezbeđuje distribuirano praćenje bez potrebe za dodatnim softverom, kroz kontejnere ili virtuelne mašine.
Kuma
Kuma je servisna mreža koju je kreirao Kong, a koristi se za proširenje funkcionalnosti postojećih usluga putem Envoy proksi servera. Kuma podržava različite mikroservise i obezbeđuje unapređenu sigurnost i nadgledanje mreže. Sadrži brojne unapred definisane politike za rutiranje, mTLS, kontrolu saobraćaja i bezbednosne funkcije. Kuma omogućava kontrolu nad različitim izolovanim mrežama preko jedne kontrolne ravni.
NGINX Mesh
NGINX je servisna mreža za Kubernetes koja enkriptuje saobraćaj između kontejnera koristeći podatkovni sloj pokretan NGINX Plusom. NGINX koristi ograničenje brzine i prekidače za upravljanje saobraćajem između servisa i dolazi sa Grafana kontrolnom tablom za prikaz metrika servisne mreže.
Consul
Consul iz HashiCorp je servisna mreža koja pruža ugrađeni proksi sloj i podržava Envoy sidecar proksi. Nudi rutiranje zasnovano na putanji, preusmeravanje saobraćaja i balansiranje opterećenja. Consul je integrisan sa HashiCorp Vault-om i podržava mTLS. Može se integrisati sa Prometheusom i Grafanom za pregled metrika vidljivosti.
Gloo Mesh
Gloo Mesh je servisna mreža izgrađena na vrhu Istio mreže i koristi Envoy proksi koji omogućava implementaciju sigurnosnog modela Zero Trust. Gloo podržava Kubernetes, virtuelne mašine i druge mikroservise. Pogodan je za CI/CD i GitOps, što olakšava primenu.
Zaključak
Servisna mreža rešava problem komunikacije između mikroservisa i pruža razne bezbednosne prednosti. Međutim, zbog velikog broja mrežnih rešenja na tržištu, važno je odabrati onu koja najbolje odgovara vašim zahtevima i kojom se lako upravlja.