Vodič za mikroservise: Što je, Architektura i Primjer
⚡ Pametni sažetak
Mikroservisi su servisno orijentirani arhitektonski obrazac u kojem se aplikacija gradi kao skup malih, neovisnih servisnih jedinica. Ovaj resurs objašnjava monolitnu naspram mikroservisne arhitekture, njihove razlike, izazove, usporedbu SOA-e, popularne alate i najbolje prakse.
Što su mikroservisi?
Microservices je uslužno orijentirani arhitektonski obrazac u kojem su aplikacije izgrađene kao skup različitih najmanjih neovisnih uslužnih jedinica. To je a programsko inženjerstvo pristup koji se usredotočuje na rastavljanje aplikacije na jednofunkcionalne module s dobro definiranim sučeljima. Ove module mogu neovisno implementirati i njima upravljati mali timovi koji posjeduju cijeli životni ciklus usluge.
Pojam „mikro“ odnosi se na veličinu mikroservisa, kojim mora moći upravljati jedan razvojni tim (5 do 10 programera). U ovoj metodologiji, velike aplikacije su podijeljene na najmanje neovisne jedinice.
Što je monolit Architekstura?
Laičkim rječnikom, može se reći da je monolitna arhitektura poput velikog spremnika u kojem su sve softverske komponente aplikacije objedinjene u jedan paket. Razmotrimo primjer e-trgovine u kontekstu monolitne arhitekture.
monolitan Archistruktura aplikacije za e-trgovinu
U svakoj aplikaciji za e-trgovinu postoje neke standardne značajke poput pretraživanja, Revpregled i ocjene te plaćanja. Ove su značajke dostupne korisnicima putem preglednika ili aplikacija. Kada programer e-trgovine implementira aplikaciju, to je jedna monolitna jedinica. Kod za različite značajke poput pretraživanja, RevPregled i ocjene te Plaćanja nalaze se na istom poslužitelju. Za skaliranje aplikacije potrebno je pokrenuti više instanci (poslužitelja) tih aplikacija.
Što je Microservice Architekstura?
Mikroservis Architektura je arhitektonski razvojni stil koji omogućuje izgradnju aplikacija kao zbirke malih autonomnih usluga razvijenih za poslovnu domenu. To je varijanta arhitekture strukturalnog stila koja pomaže rasporediti aplikacije kao labavo povezane zbirke usluga. Mikroservis Architecture sadrži detaljne usluge i lagane protokole.
Uzmimo primjer aplikacije za e-trgovinu razvijene s mikroservisnom arhitekturom. U ovom primjeru mikroservisne arhitekture, svaka mikroservisna usluga usmjerena je na jednu poslovnu mogućnost. Pretraživanje, ocjenjivanje i Revview i Payment imaju svoju instancu (poslužitelj) i međusobno komuniciraju.
Microservices Architektura
U Monolitu Architekstura, sve komponente se spajaju u jedan modul. Ali u mikroservisima Architeksture, oni su raspoređeni u pojedinačne module (mikroservise) koji međusobno komuniciraju, kao što je prikazano u gornjem primjeru mikroservisa.
Komunikacija između mikroservisa je komunikacija bez stanja gdje je svaki par zahtjeva i odgovora neovisan. Stoga Microservices može komunicirati bez napora. U mikroservisu ArchiU strukturi, podaci su federirani. Svaki mikroservis ima svoje zasebno spremište podataka.
Mikroservisi protiv monolitnih Architektura
| Microservices | monolitan Architektura |
|---|---|
| Svaka jedinica cijele aplikacije trebala bi biti najmanja i trebala bi moći isporučiti jedan specifičan poslovni cilj. | Jedna baza koda za sve poslovne ciljeve. |
| Pokretanje usluge je relativno brzo. | Pokretanje usluge traje dulje. |
| Izolacija kvara je jednostavna. Čak i ako jedna usluga padne, druge mogu nastaviti s radom. | Izolacija kvara je teška. Ako bilo koja specifična značajka ne radi, cijeli sustav se ruši. Da bi se riješio ovaj problem, aplikaciju je potrebno ponovno izgraditi, ponovno testirati i ponovno implementirati. |
| Svi mikroservisi trebaju biti labavo povezani tako da promjene napravljene u jednom ne utječu na drugi. | Monolitna arhitektura je čvrsto povezana. Promjene u jednom modulu koda utječu na drugi. |
| Tvrtke mogu usmjeriti više resursa na usluge koje generiraju veći povrat ulaganja. | Budući da usluge nisu izolirane, individualna alokacija resursa nije moguća. |
| Više hardverskih resursa moglo bi se dodijeliti usluzi koja se često koristi. U gornjem primjeru e-trgovine, više korisnika provjerava popis proizvoda i pretražuje u usporedbi s plaćanjima, pa bi se više resursa moglo dodijeliti mikroservisu pretraživanja i popisa proizvoda. | Skaliranje aplikacije je izazovno, ali i rasipno. |
| Mikroservisi su uvijek dosljedni i kontinuirano dostupni. | Razvojni alati postaju preopterećeni jer proces mora započeti ispočetka. |
| Podaci su federirani. To omogućuje pojedinačnim mikroservisima da usvoje model podataka koji najbolje odgovara njihovim potrebama. | Podaci su centralizirani. |
| Mali fokusirani timovi. Paralelan i brži razvoj. | Potreban je veliki tim i znatan napor u upravljanju timom. |
| Promjena podatkovnog modela jednog mikroservisa ne utječe na druge mikroservise. | Promjena modela podataka utječe na cijelu bazu podataka. |
| Interagira s drugim mikroservisima koristeći dobro definirana sučelja. | Nije primjenjivo. |
| Mikroservisi rade na principu usmjerenosti na proizvode, a ne na projekte. | Stavlja naglasak na cijeli projekt. |
| Nema unakrsnih ovisnosti između baza koda. Možete koristiti različite tehnologije za različite mikrousluge. | Jedna funkcija ili program ovisi o drugima. |
Izazovi mikroservisa
- Mikroservisi se oslanjaju jedni na druge i morat će međusobno komunicirati.
- U usporedbi s monolitnim sustavima, postoji više usluga za praćenje koje su razvijene korištenjem različitih programski jezici.
- Budući da se radi o distribuiranom sustavu, on je inherentno složen model.
- Različite usluge imat će svoje odvojene mehanizme, što će rezultirati velikom količinom memorije za nestrukturirane podatke.
- Učinkovito upravljanje i timski rad potrebni su kako bi se spriječilo nakupljanje problema.
- Reproduciranje problema bit će težak zadatak kada nestane u jednoj verziji, a vrati se u najnovijoj verziji.
- Neovisno postavljanje je komplicirano s mikroservisima.
- Mikroservisna arhitektura donosi mnogo operativnih troškova.
- Teško je upravljati aplikacijom kada se u sustav dodaju nove usluge.
- Za podršku heterogeno distribuiranim mikroservisima potreban je širok raspon vještih stručnjaka.
- Mikroservis je skup jer morate održavati različit prostor na poslužitelju za različite poslovne zadatke.
SOA protiv mikroservisa
SOA usluge u organizaciji održava registar koji djeluje kao popis direktorija. Aplikacije trebaju tražiti usluge u registru i pozivati usluge. Drugim riječima, SOA-e je kao orkestar u kojem svaki umjetnik nastupa sa svojim instrumentom dok glazbeni voditelj svima daje upute.
S druge strane, mikroservisi su oblik servisno orijentirane arhitekture u kojem se aplikacije grade kao skup različitih manjih servisa umjesto jednog softvera ili aplikacije. Mikroservisi su poput trupe gdje je svaki plesač neovisan i zna što treba učiniti. Dakle, ako propuste neke korake, znaju kako se vratiti na ispravan redoslijed. Evo detaljne usporedbe između SOA-e i mikroservisa.
| Parametar | SOA-e | Microservices |
|---|---|---|
| Vrsta dizajna | U SOA-i, komponente softvera su izložene vanjskom svijetu za korištenje u obliku usluga. | Micro Service je dio SOA-e. To je implementacija SOA-e. |
| zavisnost | Poslovne jedinice su ovisne. | Oni su neovisni jedni o drugima. |
| Veličina softvera | Veličina softvera je veća od bilo kojeg konvencionalnog softvera. | Veličina softvera je uvijek mala u mikroservisima. |
| Tehnološki stog | Tehnološki skup niži je u usporedbi s Microserviceom. | Tehnološki skup mikroservisa mogao bi biti vrlo velik. |
| Priroda primjene | Monolitne prirode. | Puni stog u prirodi. |
| Neovisan i usredotočen | SOA aplikacije izgrađene su za obavljanje više poslovnih zadataka. | Izgrađeni su za obavljanje jednog poslovnog zadatka. |
| razvoj | Proces implementacije oduzima puno vremena. | Implementacija je jednostavna i oduzima manje vremena. |
| Isplativost | Isplativije. | Less isplativ. |
| skalabilnost | Less u usporedbi s Microservices. | Visoko skalabilan. |
| Poslovna logika | Komponente poslovne logike pohranjene su unutar jedne servisne domene, s jednostavnim žičanim protokolima (HTTP s XML-om ili JSON-om) i API-jem pokretanim SDK-ovima/klijentima. | Poslovna logika može postojati u različitim domenama, sa slojevima sličnim servisnoj sabirnici poduzeća između usluga (Middleware). |
Alati za mikroservise
1) Wiremock: Testiranje mikroservisa
WireMock je fleksibilna biblioteka za stubbing i mocking web servisa. Može konfigurirati odgovor koji vraća HTTP API kada primi određeni zahtjev. Također se koristi za testiranje mikroservisa.
Preuzmite link: http://wiremock.org/
2) Docker
Docker je projekt otvorenog koda koji nam omogućuje stvaranje, implementaciju i pokretanje aplikacija pomoću kontejnera. Korištenjem ovih kontejnera, programeri mogu pokrenuti aplikaciju kao jedan paket. Omogućuje vam isporuku biblioteka i drugih ovisnosti u jednom paketu.
Preuzmite link: https://www.docker.com/
3) Hystrix
Hystrix je tolerantan na greške Java biblioteka. Ovaj alat je osmišljen za odvajanje točaka pristupa udaljenim servisima, sustavima i bibliotekama trećih strana u distribuiranom okruženju poput mikroservisa. Poboljšava cjelokupni sustav izoliranjem servisa koji ne rade i sprječavanjem kaskadnog učinka kvarova.
Preuzmite Link: https://github.com/Netflix/Hystrix
Najbolji primjeri mikroservisa iz prakse Architektura
- Odvojeno spremište podataka za svaki mikroservis.
- Održavajte kod na sličnoj razini zrelosti.
- Odvojena izrada za svaki mikroservis.
- Uvijek tretirajte svaki poslužitelj kao bez stanja.



