Vodič za mikroservise: Što je, Architektura i Primjer
Š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.
Izraz "mikro" odnosi se na dimenzioniranje mikroservisa kojim mora upravljati jedan razvojni tim (5 do 10 programera). U ovoj metodologiji velike aplikacije su podijeljene u najmanje neovisne jedinice.
Što je monolit Architekstura?
Laički rečeno, možete reći da je monolitna arhitektura poput velikog spremnika u kojem su sve softverske komponente aplikacije skupljene u jedan paket.
Razmotrimo primjer eCommerce trgovine u kontekstu monolitne arhitekture.

U svakoj aplikaciji za e-trgovinu postoje neke standardne značajke poput pretraživanja, Review & ocjene i plaćanja. Ove su značajke dostupne korisnicima putem preglednika ili aplikacija. Kada razvojni programer web-mjesta e-trgovine implementira aplikaciju, to je jedna monolitna jedinica. Kôd za različite značajke poput pretraživanja, Review & Ratings i Payments su na istom poslužitelju. Da biste skalirali aplikaciju, trebate pokrenuti više instanci (poslužitelja) ovih 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 arhitekture mikroservisa, svaki je mikroservis usmjeren na jednu poslovnu sposobnost. Pretraživanje, ocjenjivanje & Review i Payment imaju svaki svoju instancu (poslužitelj) i međusobno komuniciraju.
U Monolitu Architeksture, sve komponente spajaju se u jedan modul. Ali, u Microservices ArchiU strukturi 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 Archistrukture, podaci su udruženi. Svaki mikroservis ima svoju zasebnu pohranu podataka. Sljedeći u ovome Java Tutorial o mikroservisima, naučit ćemo o razlici između mikroservisa i monolitne arhitekture.
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 | Za pokretanje usluge potrebno je više vremena |
Izolacija kvara je jednostavna. Čak i ako jedna usluga padne, druga može nastaviti funkcionirati. | Izolacija kvara je teška. Ako bilo koja značajka ne radi, kompletan sustav pada. Kako bi riješili ovaj problem, aplikaciju je potrebno ponovno izgraditi, ponovno testirati i također ponovno implementirati. |
Sve mikrousluge trebaju biti labavo povezane tako da promjene napravljene u jednoj ne utječu na drugu. | Monolitna arhitektura je usko povezana. Promjene u jednom modulu koda utječu na drugi |
Tvrtke mogu primijeniti više resursa na usluge koje generiraju veći ROI | Budući da usluge nisu izolirane, individualna dodjela resursa nije moguća |
Više hardverskih resursa moglo bi se dodijeliti usluzi koja se često koristi. U gornjem primjeru e-trgovine, veći broj korisnika provjerava popis proizvoda i pretražuje u usporedbi s plaćanjima. Dakle, više resursa moglo bi se dodijeliti mikroservisu pretraživanja i popisa proizvoda. | Skaliranje aplikacije je izazovno, ali i rasipno. |
Mikroservisi uvijek ostaju dosljedni i kontinuirano dostupni. | Razvojni alati postaju preopterećeni jer proces treba započeti od nule. |
Podaci su udruženi. To omogućuje pojedinačnim mikroservisima da usvoje podatkovni model koji najbolje odgovara njegovim 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 podatkovnog modela utječe na cijelu bazu podataka |
Interakcija s drugim mikroservisima pomoću dobro definiranih sučelja | Nije primjenjivo |
Mikroservisi rade na principu da se fokusiraju na proizvode, a ne na projekte | Stavite 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
- MicroServices se oslanjaju jedna na drugu 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 zasebne mehanizme, što će rezultirati velikom količinom memorije za nestrukturirane podatke.
- Učinkovito upravljanje i timski rad potrebni su za sprječavanje kaskadnih problema
- Reproduciranje problema bit će težak zadatak kada nestane u jednoj verziji, a vrati se u posljednjoj verziji.
- Neovisna implementacija komplicirana je 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 mikrouslugama potreban je širok raspon kvalificiranih 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 održavaju se u organizaciji putem registra koji djeluje kao popis imenika. Aplikacije moraju potražiti usluge u registru i pozvati uslugu.
U drugom svijetu, SOA-e je kao orkestar u kojem svaki umjetnik nastupa sa svojim instrumentom dok glazbeni voditelj svima daje upute.
S druge strane, Microservices je oblik stila arhitekture orijentiranog na usluge u kojem su aplikacije izgrađene kao skup različitih manjih usluga umjesto jednog softvera ili aplikacije.
Microservices je poput trupe u kojoj je svaki plesač neovisan i zna što treba raditi. Dakle, ako propuste neke korake, znaju kako se vratiti na točan redoslijed. Sada u ovom vodiču o arhitekturi mikroservisa, naučimo o razlici između SOA-e i mikroservisa.
Ovdje je detaljna usporedba 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 uvijek je 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 | Pun 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 je dugotrajan. | 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 domene jedne usluge Jednostavni žični protokoli (HTTP s XML JSON) API-jem upravlja SDK-ovima/klijentima | Poslovna logika može živjeti preko domena Enterprise Service Bus poput slojeva između usluga Middleware |
Alati za mikroservise
1) Wiremock: Testiranje mikroservisa
WireMock je fleksibilna biblioteka za zabijanje i ismijavanje web usluga. 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 spremnika. Korištenjem ovih spremnika programeri mogu pokrenuti aplikaciju kao jedan paket. Omogućuje vam slanje biblioteka i drugih ovisnosti u jednom paketu.
Preuzmite link:https://www.docker.com/
3) Hystrix
Hystrix je java biblioteka otporna na greške. Ovaj je alat dizajniran za odvajanje točaka pristupa udaljenim uslugama, sustavima i bibliotekama trećih strana u distribuiranom okruženju kao što je Microservices. Poboljšava cjelokupni sustav izoliranjem servisa u kvaru i sprječavanjem kaskadnog učinka kvarova.
Preuzmite Link:https://github.com/Netflix/Hystrix
Najbolji primjeri mikroservisa iz prakse Architektura
- Odvojena pohrana podataka za svaki mikroservis
- Čuvajte kod slične razine zrelosti.
- Zasebna verzija za svaku Micro uslugu.
- Uvijek postupajte – teško kao bez državljanstva.
Rezime
- Mikroservisi su uslužno orijentirani arhitektonski obrazac u kojem su aplikacije izgrađene kao skup različitih najmanjih neovisnih servisnih jedinica.
- Mikroservis Architecture je arhitektonski razvojni stil koji omogućuje izgradnju aplikacije kao skupa malih autonomnih usluga razvijenih za poslovnu domenu.
- Monolitna arhitektura je poput velikog spremnika u kojem su sve softverske komponente aplikacije skupljene u jedan paket
- U mikroservisu bi svaka jedinica cijele aplikacije trebala biti najmanja i trebala bi moći isporučiti jedan određeni poslovni cilj
- U monolitnoj arhitekturi velika baza koda može usporiti cijeli proces razvoja. Nova izdanja mogu trajati mjesecima. Održavanje koda je teško
- Dvije vrste mikroservisa su 1) bez statusa 2) sa statusom
- Mikroservisi u Java oslanjaju se jedni na druge i morat će komunicirati jedni s drugima. Pomaže vam da naglasite određenu značajku i poslovne potrebe
- Servisno orijentirana arhitektura, kratko poznata kao SOA, evolucija je distribuiranog računarstva temeljena na modelu dizajna zahtjeva ili odgovora za sinkrone i asinkrone aplikacije
- U SOA-i, softverske komponente su izložene vanjskom svijetu za korištenje u obliku usluga, dok je Micro Service dio SOA-e. To je implementacija SOA-e
- Wiremock, Docker i Hystrix neki su od popularnih mikroservisnih alata