Mikropalveluiden opetusohjelma: Mikä on, Architecture ja esimerkki
⚡ Älykäs yhteenveto
Mikropalvelut ovat palveluorientoitunut arkkitehtuurimalli, jossa sovellus rakennetaan kokoelmana pieniä, itsenäisiä palveluyksiköitä. Tämä resurssi selittää monoliittisen ja mikropalveluarkkitehtuurin, niiden erot, haasteet, SOA-vertailun, suositut työkalut ja parhaat käytännöt.
Mitä ovat mikropalvelut?
mikro Palvelut on palvelukeskeinen arkkitehtuurimalli, jossa sovellukset on rakennettu kokoelmaksi erilaisia pienimpiä itsenäisiä palveluyksiköitä. Se on a ohjelmistotuotanto lähestymistapa, joka keskittyy sovelluksen hajottamiseen yksitoimisiksi moduuleiksi, joissa on hyvin määritellyt rajapinnat. Näitä moduuleja voivat ottaa käyttöön ja käyttää itsenäisesti pienet tiimit, jotka omistavat palvelun koko elinkaaren.
Termi ”mikro” viittaa mikropalvelun kokoon, jonka yhden kehitystiimin (5–10 kehittäjää) on oltava hallittavissa. Tässä menetelmässä suuret sovellukset jaetaan pienimpiin itsenäisiin yksiköihin.
Mikä on monoliitti Architektuuri?
Yksinkertaisesti sanottuna monoliittinen arkkitehtuuri on kuin suuri kontti, jossa kaikki sovelluksen ohjelmistokomponentit on koottu yhdeksi paketiksi. Tarkastellaanpa esimerkkiä verkkokaupasta monoliittisen arkkitehtuurin kontekstissa.
yhtenäinen Archiverkkokauppasovelluksen rakenne
Kaikissa verkkokauppasovelluksissa on joitain vakioominaisuuksia, kuten haku, RevNäkymät ja arvioinnit sekä maksut. Asiakkaat voivat käyttää näitä ominaisuuksia selaimellaan tai sovelluksillaan. Kun verkkokauppasivuston kehittäjä ottaa sovelluksen käyttöön, se on yksi monoliittinen yksikkö. Eri ominaisuuksien, kuten haun, koodi RevView & Ratings ja Payments ovat samalla palvelimella. Sovelluksen skaalaamiseksi sinun on suoritettava useita instansseja (palvelimia) näistä sovelluksista.
Mikä on mikropalvelu Architektuuri?
Mikropalvelu Archirakenne on arkkitehtoninen kehitystyyli, joka mahdollistaa sovellusten rakentamisen kokoelmana pieniä itsenäisiä palveluita, jotka on kehitetty yritysalueelle. Se on muunnelma rakennetyylisestä arkkitehtuurista, joka auttaa järjestämään sovelluksia löyhästi kytketyksi palvelukokoelmaksi. Mikropalvelu Architecture sisältää hienojakoisia palveluita ja kevyitä protokollia.
Otetaan esimerkki mikropalveluarkkitehtuurilla kehitetystä verkkokauppasovelluksesta. Tässä mikropalveluarkkitehtuuriesimerkissä jokainen mikropalvelu keskittyy yhteen liiketoimintaominaisuuteen. Haku, arviointi ja RevIEW:llä ja Paymentillä on kullakin oma instanssinsa (palvelin) ja ne kommunikoivat keskenään.
mikro Palvelut Archirakenne
Monoliitissa Archirakenteessa kaikki komponentit yhdistyvät yhdeksi moduuliksi. Mutta mikropalveluissa ArchiRakenteessa ne on jaettu yksittäisiin moduuleihin (mikropalveluihin), jotka kommunikoivat keskenään, kuten yllä olevassa mikropalveluesimerkissä on esitetty.
Mikropalvelujen välinen viestintä on tilatonta viestintää, jossa jokainen pyyntö- ja vastauspari on riippumaton. Näin ollen mikropalvelut voivat kommunikoida vaivattomasti. Mikropalvelussa ArchiRakenteessa data on federoitu. Jokaisella mikropalvelulla on oma erillinen tietovarastonsa.
Mikropalvelut vs. monoliitti Archirakenne
| mikro Palvelut | yhtenäinen Archirakenne |
|---|---|
| Koko sovelluksen jokaisen yksikön tulee olla pienin, ja sen tulee pystyä saavuttamaan yksi tietty liiketoimintatavoite. | Yksi koodikanta kaikille liiketoimintatavoitteille. |
| Palvelun käyttöönotto on suhteellisen nopeaa. | Palvelun käyttöönotto vie enemmän aikaa. |
| Vian eristäminen on helppoa. Vaikka yksi palvelu kaatuisi, muut voivat jatkaa toimintaansa. | Vian eristäminen on vaikeaa. Jos jokin tietty ominaisuus ei toimi, koko järjestelmä kaatuu. Tämän ongelman ratkaisemiseksi sovellus on rakennettava uudelleen, testattava uudelleen ja otettava uudelleen käyttöön. |
| Kaikkien mikropalveluiden tulisi olla löyhästi kytkettyjä toisiinsa, jotta yhdessä tehdyt muutokset eivät vaikuta toiseen. | Monoliittinen arkkitehtuuri on tiiviisti kytköksissä toisiinsa. Yhden koodimoduulin muutokset vaikuttavat toiseen. |
| Yritykset voivat käyttää enemmän resursseja palveluihin, jotka tuottavat korkeampaa sijoitetun pääoman tuottoa. | Koska palvelut eivät ole erillisiä, yksilöllinen resurssien kohdentaminen ei ole mahdollista. |
| Usein käytetylle palvelulle voitaisiin osoittaa enemmän laitteistoresursseja. Yllä olevassa verkkokauppaesimerkissä useammat käyttäjät tarkistavat tuotelistauksen ja hakevat verrattuna maksuihin, joten haku- ja tuotelistausmikropalvelulle voitaisiin osoittaa enemmän resursseja. | Sovellusten skaalaus on haastavaa ja tuhlattavaa. |
| Mikropalvelut pysyvät aina yhtenäisinä ja jatkuvasti saatavilla. | Kehitystyökalut ylikuormittuvat, koska prosessin on aloitettava alusta. |
| Data on federoitua. Tämä mahdollistaa yksittäisten mikropalveluiden käyttöönoton tarpeisiinsa parhaiten sopivalla datamallilla. | Tiedot on keskitetty. |
| Pienet, keskittyneet tiimit. Rinnakkainen ja nopeampi kehitys. | Vaatii suurta tiimiä ja huomattavaa tiimin johtamista. |
| Yhden Mikropalvelun tietomallin muutos ei vaikuta muihin mikropalveluihin. | Tietomallin muutos vaikuttaa koko tietokantaan. |
| Vuorovaikuttaa muiden mikropalveluiden kanssa käyttämällä hyvin määriteltyjä rajapintoja. | Ei sovellettavissa. |
| Mikropalvelut toimivat periaatteella, joka keskittyy tuotteisiin, ei projekteihin. | Painopiste on koko projektissa. |
| Ei ristiriippuvuutta koodikantojen välillä. Voit käyttää eri tekniikoita eri mikropalveluissa. | Yksi toiminto tai ohjelma riippuu muista. |
Mikropalveluhaasteet
- Mikropalvelut ovat riippuvaisia toisistaan, ja niiden on kommunikoitava keskenään.
- Verrattuna monoliittisiin järjestelmiin on valvottavana enemmän palveluita, joita kehitetään erilaisilla ohjelmointikielet.
- Koska se on hajautettu järjestelmä, se on luonnostaan monimutkainen malli.
- Eri palveluilla on omat mekanisminsa, mikä johtaa suureen muistimäärään strukturoimattomalle datalle.
- Tehokas johtaminen ja tiimityöskentely ovat välttämättömiä ongelmien kasautumisen estämiseksi.
- Ongelman toistaminen on vaikea tehtävä, jos se on poissa yhdessä versiossa ja palaa takaisin uusimmassa versiossa.
- Itsenäinen käyttöönotto on monimutkaista mikropalveluiden kanssa.
- Mikropalveluarkkitehtuuri tuo mukanaan runsaasti operaatioita.
- Sovelluksen hallinta on vaikeaa, kun järjestelmään lisätään uusia palveluita.
- Heterogeenisesti hajautettujen mikropalveluiden tukemiseen tarvitaan laaja joukko osaavia ammattilaisia.
- Mikropalvelu on kallista, koska sinun on ylläpidettävä erilaista palvelintilaa eri liiketoimintatehtäviä varten.
SOA vs. mikropalvelut
SOA-palveluita ylläpidetään organisaatiossa rekisterin avulla, joka toimii hakemistoluettelona. Sovellusten on etsittävä palvelut rekisteristä ja kutsuttava palvelua. Toisin sanoen, SOA on kuin orkesteri, jossa jokainen taiteilija esiintyy omalla instrumentillaan musiikinjohtajan ohjeistaessa kaikkia.
Toisaalta mikropalvelut ovat palveluorientoitunut arkkitehtuurityyli, jossa sovellukset rakennetaan kokoelmana erilaisia pienempiä palveluita yhden ohjelmiston tai sovelluksen sijaan. Mikropalvelut ovat kuin ryhmä, jossa jokainen tanssija on itsenäinen ja tietää, mitä hänen on tehtävä. Joten jos heiltä jää jokin vaihe ohi, he tietävät, miten palata oikeaan järjestykseen. Tässä on yksityiskohtainen vertailu SOA:n ja mikropalveluiden välillä.
| Parametri | SOA | mikro Palvelut |
|---|---|---|
| Suunnittelutyyppi | SOA:ssa ohjelmistokomponentit altistetaan ulkomaailmalle käytettäväksi palvelujen muodossa. | Micro Service on osa SOA:ta. Se on SOA:n toteutus. |
| riippuvuus | Liiketoimintayksiköt ovat riippuvaisia. | Ne ovat toisistaan riippumattomia. |
| Ohjelmiston koko | Ohjelmiston koko on suurempi kuin minkään perinteisen ohjelmiston. | Mikropalveluissa ohjelmiston koko on aina pieni. |
| Teknologiapino | Teknologiapino on pienempi kuin Microservice. | Mikropalveluteknologiapino voi olla hyvin suuri. |
| Sovelluksen luonne | Luonteeltaan monoliittinen. | Täysi pino luonnossa. |
| Itsenäinen ja keskittynyt | SOA-sovellukset on rakennettu suorittamaan useita liiketoiminnan tehtäviä. | Ne on suunniteltu suorittamaan yksittäinen liiketoimintatehtävä. |
| Käyttöönotto | Käyttöönottoprosessi on aikaa vievä. | Käyttöönotto on yksinkertaista ja vähemmän aikaa vievää. |
| Kustannustehokkuus | Kustannustehokkaampi. | Less kustannustehokas. |
| skaalautuvuus | Less verrattuna mikropalveluihin. | Erittäin skaalautuva. |
| Liikelogiikka | Liiketoimintalogiikkakomponentit tallennetaan yhden palvelualueen sisälle yksinkertaisilla tiedonsiirtoprotokollilla (HTTP XML:llä tai JSON:lla) ja SDK:iden/asiakasohjelmien ohjaamalla API:lla. | Liiketoimintalogiikka voi toimia eri toimialueiden välillä, ja palveluiden välillä on yritystason palveluväylän kaltaisia kerroksia (Middleware). |
Mikropalvelutyökalut
1) Wiremock: Testing Microservices
WireMock on joustava kirjasto verkkopalveluiden tynkä- ja pilkkaukseen. Se voi määrittää HTTP-rajapinnan palauttaman vastauksen, kun se vastaanottaa tietyn pyynnön. Sitä käytetään myös mikropalveluiden testaamiseen.
Download link: http://wiremock.org/
2) Telakka
Docker on avoimen lähdekoodin projekti, jonka avulla voimme luoda, ottaa käyttöön ja suorittaa sovelluksia konttien avulla. Näiden konttien avulla kehittäjät voivat suorittaa sovelluksen yhtenä pakettina. Se mahdollistaa kirjastojen ja muiden riippuvuuksien toimittamisen yhdessä paketissa.
Download link: https://www.docker.com/
3) Hystrix
Hystrix on vikasietoinen Java kirjasto. Tämä työkalu on suunniteltu erottamaan etäpalveluiden, järjestelmien ja kolmansien osapuolten kirjastojen käyttöpisteet hajautetussa ympäristössä, kuten mikropalveluissa. Se parantaa järjestelmän kokonaisuutta eristämällä vikaantuvat palvelut ja estämällä vikojen ketjureaktion.
Download Link: https://github.com/Netflix/Hystrix
Mikropalveluiden parhaat käytännöt Archirakenne
- Erillinen tietovarasto jokaiselle mikropalvelulle.
- Pidä koodi samalla kypsyystasolla.
- Erillinen koontiversio kullekin mikropalvelulle.
- Käsittele aina jokaista palvelinta tilattomana.



