Arhitektuuristiili valik (osa 1)

Tere, Habr. Just nĂŒĂŒd on OTUSis avatud uus kursuse voog. „Software Architect“. Kursuse alguses tahan jagada teiega oma autorilugu.

Sissejuhatus

Arhitektuuristiili valik on ĂŒks peamisi tehnilisi otsuseid teabe sĂŒsteemi loomisel. Selles artiklite seerias kĂ€sitleme kĂ”ige populaarsemaid rakenduste arhitektuuristiile ja vastame kĂŒsimusele, millal on milline arhitektuuristiil kĂ”ige eelistatum. KĂ€sitlen loogilist ahelat, mis selgitab arhitektuuristiilide arengut monoliitsetest mikroteenustele.

Enne kui liigume edasi

Kui proovite kĂŒsida arendajatelt: „Miks on mikroteenused vajalikud?“, siis saate kĂ”ige erinevamaid vastuseid. Kuulete, et mikroteenused parandavad skaleeritavust, lihtsustavad koodi mĂ”istmist, suurendavad usaldusvÀÀrsust, vahel vĂ”ite kuulda, et nad vĂ”imaldavad „koodi puhastada“. Vaatame ajaloos tagasi, et mĂ”ista, millist eesmĂ€rki mikroteenuste loomine jĂ€rgnes.

LĂŒhidalt öeldes tekkisid mikroteenused meie tĂ€napĂ€evases mĂ”istes jĂ€rgmiselt: 2011. aastal mĂ€rkis James Lewis, analĂŒĂŒsides erinevate ettevĂ”tete töid, uue mustri „micro-app“ tekkimist, mis optimeeris SOA teenuste juurutamise kiirusest. Veidi hiljem, 2012. aastal, nimetati arhitektuurisummitil muster mikroteenuseks. Seega oli mikroteenuste rakendamise algne eesmĂ€rk parandada kurikuulsat time to market.

Mikroteenuste laine oli 2015. aastal vĂ€ga populaarne. MĂ”nede uuringute kohaselt ei möödunud ĂŒkski konverents ilma mikroteenuste teemalise ettekandeta. Veel enam, mĂ”ned konverentsid keskendusid ainult mikroteenustele. Praegu algavad vĂ€ga paljud projektid selle arhitektuuristiili rakendamisega, ja kui projekt sisaldab suures mahus pĂ€randkoodi, siis tĂ”enĂ€oliselt toimub aktiivne ĂŒleminek mikroteenustele.

Hoolimata eeltoodust suudab veel ĂŒsna vĂ€ike arv arendajaid mÀÀratleda mĂ”istet „mikroteenus“. Kuid sellest rÀÀgime natuke hiljem...

Monoliit

Mikroteenustele vastanduv arhitektuuristiil on monoliit (vĂ”i „kĂ”ik ĂŒhes“). Selles stiilis pole mĂ”tet rÀÀkida monoliidist, seetĂ”ttu loetlen kohe selle arhitektuuristiili puudused, mis initsieerisid edasise arhitektuuristiilide arengu: suurus, seotus, juurutamine, skaleeritavus, usaldusvÀÀrsus ja jĂ€ikus. Allpool tutvustan kĂ”iki puudusi eraldi.

Suurus

Monoliit on vĂ€ga suur. Ja see suhtleb tavaliselt vĂ€ga suure andmebaasiga. Rakendus muutub liiga suureks, et seda saaks ĂŒksi mĂ”ista. Monoliidiga saavad hĂ€sti töötada ainult need, kes on selle koodiga piisavalt kaua aega veetnud, samas kui algajad kulutavad vĂ€ga palju aega proovides monoliidiga toime tulla, ja ei ole kindel, et nad saavad sellega jagu. TĂŒĂŒpiliselt on monoliidi töös alati mingi „tinglik“ vanem, kes tunneb monoliiti enam-vĂ€hem hĂ€sti ja hoiab uued arendajad aasta vĂ”i pooleteise jooksul kĂ€puli. Loomulikult on selline tinglik vanem ainsaks rikke punktiks, ja tema lahkumine vĂ”ib tuua kaasa monoliidi hĂ€vimise.

Seos

Monoliit esindab „suur must kera“ (big ball of mud), mille muutmine vĂ”ib tuua ettearvamatuid tagajĂ€rgi. Muute ĂŒhes kohas, vĂ”ib kahjustada monoliiti teises kohas (just see „kĂ”rva sĂŒgamine, *@ kukkus maha“). See on seotud sellega, et monoliidi komponendid omavad vĂ€ga keerulisi ja mis kĂ”ige tĂ€htsam, mitte selgeid seoseid.

TÔhustamine

Monoliidi tÔhustamine on oma komponentide vaheliste keeruliste seoste tÔttu pikk protsess koos oma rituaaliga. Selline rituaal ei ole tavaliselt tÀielikult standardiseeritud ja seda edastatakse "suust suhu".

Skaleeritavus

Monoliidi moodulitel vĂ”ivad olla konfliktseid vajadusi ressursside osas, mistĂ”ttu on vajalik leida kompromiss riistvara osas. Kujutage ette, et teie monoliit koosneb teenustest A ja B. Teenus A nĂ”uab suurt kĂ”vakettamahtu, samas kui teenus B nĂ”uab palju mĂ€lu. Sellisel juhul peab masin, kuhu monoliit paigaldatakse, toetama mĂ”lema teenuse nĂ”udmisi, vĂ”i tuleb kĂ€sitsi ĂŒks teenustest vĂ€lja lĂŒlitada.

Veel ĂŒks nĂ€ide (klassikalisem): teenus A on palju populaarsem kui teenus B, seega soovite, et teenuseid A oleks 100 ja teenuseid B oleks 10. Taaskord kaks varianti: kas paigaldame 100 tĂ€isfunktsionaalset monoliiti vĂ”i tuleb mĂ”nes neist kĂ€sitsi teenused B vĂ€lja lĂŒlitada.

UsaldusvÀÀrsus

Kuna kĂ”ik teenused on koos, siis kui monoliit ebaĂ”nnestub, ebaĂ”nnestuvad kĂ”ik teenused korraga. Tegelikult pole see vĂ”ib-olla nii halb, kuna jaotatud sĂŒsteemis ei esine osalisi tĂ”rkeid, kuid teisest kĂŒljest vĂ”ite kaotada kĂ”ik oma sĂŒsteemi kasutajad, sest tĂ”rge funktsionaalsuses, mida kasutab 0,001% kasutajatest.

Kangus

Monoliidi suuruse tĂ”ttu on keeruline ĂŒle minna uutele tehnoloogiatele. Selle tagajĂ€rjel tĂ”useb eraldi ĂŒlesanne hoida alles tegemisolevat tingimuslikku senior'i. Projekti alguses valitud tehnoloogia virn vĂ”ib osutuda takistuseks toote arengule.

KokkuvÔte

JĂ€rgmine kord rÀÀgime sellest, kuidas inimesed on pĂŒĂŒdnud neid probleeme lahendada, liikudes komponentide ja SOA suunas.

Arhitektuuristiili valik (osa 1)

Loe edasi:

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