Arhitektuuristiili valik (osa 2)

Tere, Habr. TĂ€na jĂ€tan oma artiklite seeriat, mille kirjutasin spetsiaalselt uue kursuse voolu alguseks. „Tarkvara arhitekt“.

Sissejuhatus

Arhitektuuristiili valimine on ĂŒks pĂ”hitehnilisi otsuseid teabe sĂŒsteemi loomisel. Selles artiklite seerias soovin uurida populaarseimaid rakenduste arhitektuuristiile ja vastata kĂŒsimusele, millal on mĂ”ni arhitektuuristiil kĂ”ige eelistatum. Kirjutamise kĂ€igus pĂŒĂŒan esitada loogilise ahela, mis selgitab arhitektuuristiilide arengut monoliitidest mikroteenusteni.

V eelmine kord Oleme kokku leppinud, et monoliitil on mitmeid probleeme: suurus, seotuse tase, juurutamine, skaleeritavus, usaldusvÀÀrsus ja jÀikus.

Seekord tahaksin rÀÀkida vĂ”imalustest korraldada sĂŒsteem moodulite/teekide kogumina (komponentpĂ”hine arhitektuur) vĂ”i teenustena (teenuspĂ”hine arhitektuur).

KomponentpÔhine arhitektuur

KomponentpĂ”hine arhitektuur tĂ€hendab, et sĂŒsteem koosneb komponentidest, mida saab kasutada nii praegustes kui ka tulevastes projektides. SĂŒsteemi komponentideks jagamisel arvestatakse: nende taaskasutatavust, asendatavust, kontekstitundlikkust, laiendatavust, kapseldatust ja sĂ”ltumatust.

Õigesti kasutatavate komponentide abil lahendatakse "suure mustuse kommi" probleem (suure suuruse + kĂ”rge seotus), kuid komponendid vĂ”ivad olla nagu kogumisse moodulid vĂ”i raamatukogud kui ka juurutamise ĂŒksused (teenused). Juurutamise ĂŒksused ei pruugi alati vĂ€ljenduda teostatavas protsessis: nĂ€iteks veebirakendus ja andmebaas juurutatakse koos.

Enamasti arendatakse monoliite moodulite kogumina. Selline lĂ€henemine tagab arendamise iseseisvuse, kuid jĂ€tab endale probleemid iseseisva skaleerimise ja juurutamise, tĂ”rkevaru ja sĂ”ltumatuse ĂŒhest tehnoloogilisest kultuurist. Just seetĂ”ttu on moodul - osaliselt iseseisev komponent.

Selle monoliidi kĂ”ige olulisem probleem on see, et moodulite jagamine on puhtalt loogiline ja arendajad vĂ”ivad seda kergesti rikkuda. VĂ”ib ilmuda core moodul, mis jĂ€rk-jĂ€rgult muutub prĂŒgilaks, sĂ”ltuvusgraafikud moodulite vahel vĂ”ivad kasvada jne. Selliste probleemide vĂ€ltimiseks peab arendustööd tegema kas vĂ€ga kĂŒps meeskond vĂ”i «arhitekt», kes tĂ€iskohaga tegeleb koodi ĂŒlevaatamisega ja hoiab arendajaid, kes loogilist struktuuri rikuvad, kontrolli all.

«Ideaalne» monoliit on komplekt loogiliselt eraldatud mooduleid, millest igaĂŒhel on oma andmebaas.

TeenusepÔhine arhitektuur

Kui siiski plaanitakse sĂŒsteemi korraldada teenuste komplekti kujul, rÀÀgime teenusepĂ”hisest arhitektuurist. Selle pĂ”himĂ”tted: rakenduste ĂŒhilduvus, kasutajale orienteeritud lĂ€henemine, Ă€riteenuste korduv kasutamine, sĂ”ltumatus tehnoloogiatest ja autonoomia (sĂ”ltumatu areng, skaleeritavus ja rakendatavus).

Teenusele orienteeritud arhitektuur (SOA = teenusele orienteeritud arhitektuur) lahendab kĂ”ik monoliidi nĂ€htud probleemid: muudatuste korral mĂ”jutatakse ainult ĂŒhte teenust ning selgelt mÀÀratletud API toetab head komponendi kapseldamist.

Kuid asjad ei ole nii sujuvad: SOA toob endaga kaasa uusi probleeme. Kaugkutsed on kallimad kui kohalikud, ja kohustuste ĂŒmberjaotamine komponentide vahel on muutunud oluliselt kallimaks.

Muide, sĂ”ltumatu juurutamise vĂ”imalus on teenuse jaoks vĂ€ga oluline omadus. Kui teenuseid tuleb juurutada koos vĂ”i, veel enam, kindlas jĂ€rjestuses, siis ei saa sĂŒsteemi pidada teenusele orienteerituks. Sellisel juhul rÀÀgitakse jaotatud monoliidist (see loetakse antipatterniks mitte ainult SOA, vaid ka mikroteenuste arhitektuuri seisukohalt).

Teenusorienteeritud arhitektuuri toetavad hÀsti arhitektuuri kogukond ja teenusepakkujad. SeetÔttu on olemas rohkesti kursusi ja sertifikaate ning hÀsti vÀlja töötatud mustreid. Nende hulka kuulub nÀiteks tuntud ettevÔtte teenuse buss (ESB = enterprise service bus). Sellegipoolest on ESB teenusepakkujate pÀrand ning see ei pea tingimata olema SOA-s kasutusel.

Teenuseid orienteeritud arhitektuuri populaarsuse tipp langes umbes 2008. aastasse, millele jÀrgnes jÀrkjÀrguline langus, mis muutus oluliselt jÀrsemaks pÀrast mikroteenuste ilmumist (~2015. aasta).

KokkuvÔte

PĂ€rast seda, kui oleme arutanud infotehnoloogiasĂŒsteemide korraldamise vĂ”imalusi teenuste ja moodulitena, soovin lĂ”puks liikuda mikroteenuste arhitektuuri pĂ”himĂ”tete juurde, pöörates jĂ€rgmisel korral erilist tĂ€helepanu mikroteenuste arhitektuuri ja teenuseid orienteeritud arhitektuuri erinevustele.

Arhitektuuristiili valik (osa 2)

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster