- Mikroservisi vam omogućavaju razvoj modularnih i skalabilnih aplikacija dijeljenjem funkcija na nezavisne servise.
- Nude agilnost i brzinu u razvoju, olakšavajući uključivanje promjena.
- Njegovo usvajanje poboljšava otpornost sistema, jer kvar u jednoj usluzi ne utiče na druge.
- Koriste heterogene tehnologije, što omogućava timovima da odaberu najbolji alat za svaki specifičan zadatak.
Zašto su mikroservise važne?
Kratka istorija mikroservisa
Šta su mikroservise?
1. Definicija mikroservisa
2. Ključne karakteristike mikroservisa
- Odvajanje:Svaki mikroservis je nezavisan i može se razvijati, implementirati i skalirati autonomno, bez uticaja na druge usluge.
- Jedinstvena odgovornost: Svaki mikroservis odgovoran je za određeni zadatak ili funkcionalnost, slijedeći princip jedinstvene odgovornosti.
- Heterogene tehnologije: Mikroservis se može razviti u različitim programskim jezicima i tehnologije, što vam omogućava da odaberete najbolji alat za svaki zadatak.
- Otpornost: Budući da su odvojeni, kvar u jednoj mikroservisi ne utiče na ceo sistem, poboljšavajući ukupnu otpornost.
- Skalabilnost: Mikrousluge se mogu nezavisno skalirati po potrebi, optimizirajući korištenje resursa.
Link do Wikipedije na mikroservisima
Arhitektura mikroservisa
1. Komponente arhitekture mikroservisa
- Mikroservisi: Glavne komponente arhitekture, svaka je odgovorna za određeni zadatak ili funkcionalnost.
- API Gateways: Centralizirana ulazna tačka koja usmjerava zahtjeve do odgovarajućih mikroservisa i upravlja sigurnošću, autentifikacijom i usmjeravanjem.
- Service Record: Komponenta koja održava ažurnu evidenciju o svim dostupnim mikroservisima i njihovim lokacijama.
- Praćenje i registracija: Alati za praćenje performansi, zdravlja i evidencije mikroservisa.
- Komunikacija između službi: Mehanizmi za mikroservise za sigurnu i efikasnu komunikaciju, kao što su HTTP/REST, razmjena poruka ili prijenos događaja.
2. Komunikacijski obrasci između mikroservisa
- Zahtjev/Odgovor: Jedan mikroservis postavlja zahtjev drugom i čeka odgovor, obično koristeći HTTP/REST.
- Asinhrone porukeMikroservise komuniciraju putem sistema za razmenu poruka, kao što su redovi poruka ili sistemi za striming događaja. U ovom pristupu, mikroservis šalje poruke u red čekanja ili temu, a druge mikroservise asinhrono konzumiraju te poruke. Ovaj obrazac omogućava veće razdvajanje i skalabilnost.
- Prenos događaja: Mikroservis objavljuje i konzumira kontinuirane tokove događaja u realnom vremenu koristeći sisteme za striming događaja kao što su Apache Kafka ili Amazon Kinesis. Ovaj pristup je pogodan za slučajeve upotrebe koji zahtijevaju obradu podataka u realnom vremenu i visoku skalabilnost.
- Koreografija događaja: Umjesto direktne komunikacije između mikroservisa, koristi se centralizirana sabirnica događaja gdje mikroservise objavljuju i slušaju relevantne događaje. Svaki mikroservis reaguje na događaje nezavisno, promovišući veće razdvajanje.
- Pozivi udaljenih procedura (RPC)Mikroservise mogu komunicirati preko RPC protokola, kao što je gRPC, koji pružaju efikasniju, binarno orijentisanu komunikaciju u poređenju sa HTTP/REST.
- Upiti dijeljene baze podatakaU nekim slučajevima, mikroservis može pristupiti zajedničkim bazama podataka i tražiti relevantne podatke, iako ovaj pristup može uvesti povećano povezivanje i njime treba pažljivo postupati.
Prednosti mikroservisa
1. Agilnost i brzina razvoja
2. Skalabilnost i otpornost
3. Jednostavnost održavanja
4. Usvajanje novih tehnologija
5. Izazovi mikroservisa
6. Složenost upravljanja
7. Distribuirano praćenje i evidentiranje
8. Testiranje i implementacija
9. Sigurnost i usklađenost
Mikrousluge vs. Monolitna arhitektura
Poređenje pristupa
- Monolitna arhitektura: Aplikacija je izgrađena kao jedna jedinica, gdje su sve komponente čvrsto povezane i raspoređene kao jedan paket.
- Arhitektura mikroservisa: Aplikacija je podijeljena na manje, nezavisne servise, od kojih je svaki fokusiran na određeni zadatak ili funkcionalnost i implementiran pojedinačno.
Kada odabrati mikroservise?
Slučajevi upotrebe mikroservisa
1. E-trgovina
2. Finansijske usluge
3. Medicinska njega
4. Zabava i mediji
Popularni alati i okviri
1. Upravljanje kontejnerima (Docker, Kubernetes)
2. Orkestracija usluga
3. API Gateways
4. Praćenje i snimanje
Najbolje prakse za implementaciju mikroservisa
1. Kohezivni dizajn usluge
2. Automatizacija infrastrukture
3. Proaktivno praćenje
4. Upravljanje distribuiranim podacima
Budućnost mikrousluga
Trendovi i napredak u mikrouslugama
- Mikrousluge vođene događajimaOčekuje se da će komunikacijski obrasci vođeni događajima kao što su striming događaja i asinkrono slanje poruka dobiti veću popularnost u arhitekturi mikroservisa.
- Usluge bez servera: Kombinacija mikroservisa i usluga bez servera sve više dobija na značaju, omogućavajući veću skalabilnost i efikasnost u korišćenju resursa.
- Umjetna inteligencija i mašinsko učenje: Uključivanje AI i mogućnosti mašinskog učenja u mikroservise može omogućiti pametnije, prilagodljivije aplikacije.
- Service MeshServisne mreže, kao što su Istio i Linkerd, olakšavaju upravljanje i praćenje mikroservisa u složenim okruženjima, pružajući funkcije kao što su inteligentno rutiranje, upravljanje prometom i otpornost.