- Mikroservisi vam omogućuju razvoj modularnih i skalabilnih aplikacija dijeljenjem funkcija u neovisne servise.
- Nude agilnost i brzinu u razvoju, olakšavajući uključivanje promjena.
- Njegovo usvajanje poboljšava otpornost sustava, budući da kvar u jednoj usluzi ne utječe na druge.
- Koriste heterogene tehnologije, što timovima omogućuje odabir najboljeg alata za svaki specifični zadatak.
Zašto su mikroservisi važni?
Kratka povijest mikroservisa
Što su mikroservisi?
1. Definicija mikroservisa
2. Ključne značajke mikroservisa
- Odvajanje:Svaka mikrousluga je neovisna i može se samostalno razvijati, implementirati i skalirati, bez utjecaja na druge usluge.
- Jedna odgovornost:Svaka mikrousluga odgovorna je za određeni zadatak ili funkcionalnost, slijedeći načelo jedinstvene odgovornosti.
- Heterogene tehnologije: Mikrousluge se mogu razvijati u različite programske jezike i tehnologije, omogućujući vam da odaberete najbolji alat za svaki zadatak.
- Elastičnost: Budući da su razdvojeni, kvar u jednoj mikroservisi ne utječe na cijeli sustav, poboljšavajući ukupnu otpornost.
- Skalabilnost: Mikroservisi se mogu neovisno skalirati prema potrebi, optimizirajući korištenje resursa.
Link na Wikipediju o mikroservisima
Arhitektura mikroservisa
1. Komponente arhitekture mikroservisa
- Mikroservisi: Glavne komponente arhitekture, od kojih je svaka odgovorna za određeni zadatak ili funkcionalnost.
- API pristupnik: Centralizirana ulazna točka koja usmjerava zahtjeve odgovarajućim mikroservisima i upravlja sigurnošću, autentifikacijom i usmjeravanjem.
- Registracija usluge: komponenta koja održava ažurnu evidenciju svih dostupnih mikroservisa i njihovih lokacija.
- Praćenje i registracija: Alati za praćenje performansi, zdravlja i zapisa mikroservisa.
- Komunikacija između usluga: Mehanizmi za sigurnu i učinkovitu komunikaciju mikroservisa, kao što su HTTP/REST, razmjena poruka ili strujanje događaja.
2. Komunikacijski obrasci između mikroservisa
- Zahtjev/Odgovor: Jedna mikrousluga šalje zahtjev drugoj i čeka odgovor, obično koristeći HTTP/REST.
- Asinkrono slanje porukaMikroservisi komuniciraju putem sustava za slanje poruka, kao što su redovi poruka ili sustavi za strujanje događaja. U ovom pristupu, mikrousluga šalje poruke u red ili temu, a druge mikrousluge asinkrono troše te poruke. Ovaj obrazac omogućuje veće odvajanje i skalabilnost.
- Streaming događaja: Mikroservisi objavljuju i konzumiraju kontinuirane tokove događaja u stvarnom vremenu koristeći sustave za strujanje događaja kao što su Apache Kafka ili Amazon Kinesis. Ovaj je pristup prikladan za slučajeve korištenja koji zahtijevaju obradu podataka u stvarnom vremenu i visoku skalabilnost.
- Koreografija događanja: Umjesto izravne komunikacije između mikroservisa, koristi se centralizirana sabirnica događaja gdje mikroservisi objavljuju i slušaju relevantne događaje. Svaka mikrousluga neovisno reagira na događaje, promičući veće odvajanje.
- Pozivi udaljenih procedura (RPC)Mikroservisi mogu komunicirati putem RPC protokola, kao što je gRPC, koji pružaju učinkovitiju, binarno orijentiranu komunikaciju u usporedbi s HTTP/REST-om.
- Upiti dijeljene baze podatakaU nekim slučajevima, mikroservisi mogu pristupiti zajedničkim bazama podataka i postavljati upite za relevantne podatke, iako ovaj pristup može uvesti povećanu povezanost i s njim treba pažljivo postupati.
Prednosti mikroservisa
1. Okretnost 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 bilježenje
8. Testiranje i implementacija
9. Sigurnost i usklađenost
Mikroservisi vs. Monolitna arhitektura
Usporedba pristupa
- Monolitna arhitektura: Aplikacija je izgrađena kao jedna jedinica, gdje su sve komponente čvrsto povezane i postavljene kao jedan paket.
- Arhitektura mikroservisa: Aplikacija je podijeljena na manje, neovisne usluge, od kojih je svaka usmjerena na specifičan zadatak ili funkcionalnost i postavlja se pojedinačno.
Kada odabrati mikroservise?
Slučajevi korištenja mikroservisa
1. Elektronička trgovina
2. Financijske usluge
3. Medicinska njega
4. Zabava i mediji
Popularni alati i okviri
1. Upravljanje spremnikom (Docker, Kubernetes)
2. Orkestracija usluge
3. API pristupnici
4. Praćenje i snimanje
Najbolje prakse za implementaciju mikroservisa
1. Kohezivni dizajn usluge
2. Automatizacija infrastrukture
3. Proaktivno praćenje
4. Distribuirano upravljanje podacima
Budućnost mikroservisa
Trendovi i napredak u mikrouslugama
- Mikroservisi vođeni događajimaOčekuje se da će komunikacijski obrasci vođeni događajima, poput strujanja događaja i asinkronog slanja poruka, dobiti veću popularnost u arhitekturama mikroservisa.
- Usluge bez poslužitelja: Kombinacija mikrousluga i usluga bez poslužitelja sve je popularnija, što omogućuje veću skalabilnost i učinkovitost u korištenju resursa.
- Umjetna inteligencija i strojno učenjeUključivanje AI i mogućnosti strojnog učenja u mikroservise može omogućiti pametnije, prilagodljivije aplikacije.
- Servisna mrežaServisne mreže, kao što su Istio i Linkerd, olakšavaju upravljanje i praćenje mikroservisa u složenim okruženjima, pružajući značajke kao što su inteligentno usmjeravanje, upravljanje prometom i otpornost.