Mikroteenused: mis need on, miks neid on vaja ja millal neid rakendada

Olen juba ammu tahtnud kirjutada artikli mikroteenuste arhitektuurist, kuid mind on pidevalt pidurdanud kaks asjaolu: mida sĂŒgavamale ma sellesse teemasse sukeldusin, seda rohkem tundus mulle, et mis ma tean — on ilmne, ja mis ma ei tea — seda tuleb veel Ă”ppida. Teiselt poolt arvan, et on juba millestki arutleda ja laiema publikuni jĂ”uda. Nii et alternatiivsed arvamused on teretulnud.

Conway seadus ja suhe Ă€ri, organisatsiooni ja teabe sĂŒsteemi vahel

Luban endale veel kord tsiteerida:

„Iga organisatsioon, mis projekteerib mingisuguse sĂŒsteemi (laiemas mĂ”ttes), saab disaini, mille struktuur kopeerib selle organisatsiooni meeskondade struktuuri.”
— Melvyn Conway, 1967

Minu arvates seondub see seadus rohkem Ă€riorganisatsiooni otstarbekuse kui otse teabe sĂŒsteemiga. Selgitan nĂ€iteks. Oletame, et meil on piisavalt stabiilne Ă€ri vĂ”imalus elutsĂŒkliga, mis on nii pikk, et on mĂ”istlik asutada ettevĂ”te (see ei ole trĂŒkiviga, aga mulle meeldib see termin, mille ma endale tĂ”in). Loomulikult peab selle Ă€ri toetav sĂŒsteem olema organisatsiooniliselt ja protsesside poolest kooskĂ”las selle ettevĂ”ttega.

Äri suunitlus teabe sĂŒsteemidesse

Mikroteenused: mis need on, miks neid on vaja ja millal neid rakendada

Selgitan nĂ€iteks. Oletame, et meil on Ă€ri vĂ”imalus pizza mĂŒĂŒmise korraldamiseks. V1 versioonis (nimetame seda enneinfotehnoloogiliseks) oli ettevĂ”te pitsakohvik, kassasĂŒsteem ja kohaletoimetamisteenus. See versioon oli pikaealine madala keskkonna muutlikkuse tingimustes. Siis tuli uus versioon 2 — arenenum ja suuteline kasutama oma pĂ”hialuseks infotehnoloogilist sĂŒsteemi Ă€riga monoliitsete arhitektuuride jaoks. Ja siin, minu arvates tekib tĂ”eliselt kohutav ebaĂ”iglus monoliitide suhtes — vĂ€idetavalt ei vasta monoliitne arhitektuur Ă€ri domeeni mudelile. Kui see nii oleks, ei saaks sĂŒsteem ĂŒldse töötada - see oleks vastuolus sama Conway seaduse ja mĂ”istusega. Ei, monoliitne arhitektuur vastab tĂ€ielikult Ă€ri mudelile selle Ă€ri arenguetapis - ma mĂ”tlen etappi, kus sĂŒsteem on juba loodud ja kasutusele vĂ”etud. Ütlemata tore on see, et olenemata arhitektuurilisest lĂ€henemisest, töötavad teenustele orienteeritud arhitektuur versioon 3 ja mikroteenuste arhitektuur versioon N sama hĂ€sti. Kus on peidus konks?

KÔik voolab, kÔik muutub vÔi on mikroteenused keerukuse vastu vÔitlemise vahend?

Enne kui jÀtkame, vaatame mÔningaid vÀÀrarusaamu, mis on seotud mikroteenuste arhitektuuriga.

Mikroteenuste lĂ€henemise pooldajad rÀÀgivad sageli sellest, et monoliidi jagamine mikroteenusteks lihtsustab arendust, vĂ€hendades ĂŒksikute teenuste koodibaasi. Minu arvates on see vĂ€ide tĂ€ielik jama. TĂ”siselt, kas monoliidi ja homogeense koodi omavaheline interaktsioon tundub keeruline? Kui see tĂ”esti nii oleks, ehitataks kĂ”ik projektid algselt mikroteenustena, samas kui praktika nĂ€itab, et ĂŒleminek monoliidist mikroteenustele on palju sagedasem. Keerukus ei kao kuhugi, see lihtsalt liigub eraldi moodulitest liidestesse (olgu need siis andmebusid, RPC, API ja muud protokollid) ja orkestreerimise sĂŒsteemidesse. Ja see on keeruline!

Heterogeense tehnoloogia kasutamise eelised on samuti kĂŒsitavad. Ma ei vaidle vastu, et see on vĂ”imalik, kuid reaalsuses esineb see harva (eessĂ”na - see peaks olema olemas - aga pigem tagajĂ€rjena, mitte eelise tĂ”ttu).

Toote ja teenuse elutsĂŒkkel

Vaadake uuesti ĂŒlaltoodud diagrammi. Ma ei pannud tĂ€hele, et ĂŒksiku versiooni elutsĂŒkkel vĂ€heneb - tĂ€napĂ€eva tingimustes on just ettevĂ”tte versioonide vahetuse kiirus mÀÀrav selle eduks. Toote eduvĂ”ti on selle kaudu testitud Ă€ri-hĂŒpoteeside kiirus.. Ja just siin on minu arvates peidetud mikroteenuste arhitektuuri vĂ”tmeeelis. Kuid liikume jĂ€rjekorras edasi.

Liigume jĂ€rgmise sammu suunas infotehnoloogia sĂŒsteemide evolutsioonis — teenustele orienteeritud arhitektuur SOA. Nii et mingil hetkel oleme oma tootes eraldanud pikaajalised teenused — pikaajalised selles mĂ”ttes, et toote versioonide vahetusel on vĂ”imalus, et teenuse elutsĂŒkkel on pikem kui toote jĂ€rgmise versiooni elutsĂŒkkel. Loogiline oleks, et me ei muudaks neid ĂŒldse — meil on oluline just jĂ€rgmise versiooni kiire ĂŒleminek. Kuid kahjuks oleme sunnitud teenustes pidevalt muudatusi tegema — ja siin sobib meile kĂ”ik, DevOps praktikatest, konteineriseerimisest ja muust — kĂ”ik, mis pĂ€he tuleb. Kuid see ei ole veel mikroteenused!

Mikroteenused kui vahend keerukuse
 konfigureerimise haldamise vastu

Ja siin saame lĂ”puks rÀÀkida mikroteenuste mÀÀravast rollist — see on lĂ€henemine, mis lihtsustab toote konfigureerimise haldamist. TĂ€psemalt öeldes, iga mikroteenuse funktsioon kirjeldab just Ă€rifunktsiooni toote sees vastavalt domeenimudelile — need on asjad, mis ei ela lĂŒhiajalise versiooni, vaid pikaajalise Ă€rivĂ”imaluse sees. Ja jĂ€rgmisse toote versiooni ĂŒleminek toimub sĂ”na otseses mĂ”ttes mĂ€rkamatult — te muudate/puudutate ĂŒhte mikroteenust vĂ”i vĂ”ib-olla lihtsalt nendevahelist skeemi ja Ă€kitselt leiate end juba tulevikus, jĂ€ttes tagaplaanile nutvad konkurendid, kes jĂ€tkavad hĂŒppamist oma monoliitsete versioonide vahel. NĂŒĂŒd kujutage ette, et teil on piisavalt suur hulk mikroteenuseid, millel on eelnevalt mÀÀratletud liidesed ja Ă€rivĂ”imalused. Ja te tulete ja ehitate oma toote struktuuri valmis mikroteenustest — lihtsalt joonistades diagrammi nĂ€iteks. Palju Ă”nne — teil on nĂŒĂŒd platvorm — ja nĂŒĂŒd saate oma ettevĂ”tte lihtsalt klikkida. UnenĂ€od, unenĂ€od.

JĂ€reldused

  • SĂŒsteemi arhitektuur peab olema mÀÀratud selle komponentide elutsĂŒkliga. Kui komponent elab toote versiooni raames — pole mĂ”tet suurendada sĂŒsteemi keerukust, rakendades mikroteenuste lĂ€henemist.
  • Mikroteenuste arhitektuur peaks pĂ”hinema domeenimudelil — pĂ”hjusel, et Ă€rivĂ”imalus on kĂ”ige pikaajalisem valdkond
  • Tarnepraktikad (DevOps praktikad) ja orkestratsioon on mikroteenuste arhitektuuri jaoks ÀÀrmiselt olulised, kuna komponentide muutmise kiirus seab nĂ”uded tarnimise kiirus ja kvaliteedi suhtes.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster