Arhitektuuristiili valik (osa 2)

Tere, Habr. TĂ€na jĂ€tkan artiklite seeriat, mille kirjutasingi uue kursuse alguseks „Software Architect“.

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.

Uues eelmine kord Me oleme uurinud monoliiti ja jÔudnud jÀreldusele, et monoliidil on mitmeid probleeme: suurus, seotus, juurutamine, skaleeritavus, usaldusvÀÀrsus ja jÀikus.

Seekord soovin rÀÀkida sĂŒsteemi korraldamise vĂ”imalustest modulaarsena/raamatukogude kujul (komponendipĂ”hine arhitektuur) vĂ”i teenustena (teenuspĂ”hine arhitektuur).

KomponendipÔhine arhitektuur

KomponendipĂ”hine arhitektuur tugineb sĂŒsteemi ĂŒlesehitusele, mis koosneb komponentidest, mida saab kasutada nii praegustes kui ka tulevastes projektides. SĂŒsteemi komponentideks jagamisel arvestatakse: nende korduvkasutatavust, asendatavust, kontekstist sĂ”ltumatust, laiendatavust, kapseldatavust ja iseseisvust.

Õigesti kasutades ei teki probleemi „suure rĂ€pane komaga” (suurus + kĂ”rge seotus), ja komponendid vĂ”ivad esindada nii kogumisi (modulid, raamatukogud) kui ka juurutamisĂŒksusi (teenused). JuurutamisĂŒksused ei pruugi alati olla seotud kĂ€ivitatava protsessiga: nĂ€iteks veebirakendus ja andmebaas juurutatakse koos.

Enamasti arendatakse monoliite modulaarsete komplektidena. See lÀhenemine tagab arenduse iseseisvuse, kuid samas jÀÀvad probleemid iseseisva skaleeritavuse ja juurutamise, tÔrke- ja tehnoloogiahalli sÔltumatuse lahendamata. SeetÔttu on moodul osaliselt iseseisev komponent.

Selle monoliidi peamine probleem on see, et jagamine mooduliteks on puhtalt loogiline ja arendajad vĂ”ivad seda kergesti rikkuda. VĂ”ib tekkida core moodul, mis jĂ€rk-jĂ€rgult muutub prĂŒgilaks, moodulite vahel vĂ”ivad sĂ”ltuvuste grafid paisuda jne. Selliste probleemide vĂ€ltimiseks peaks arendus toimuma kas vĂ€ga kĂŒpse meeskonna poolt vĂ”i „arhitekti” juhendamisel, kes töötab tĂ€istööajaga koodivaatamiste kallal ja hoiab silma peal loogilist struktuuri rikkuvatel arendajatel.

„TĂ€iuslik” monoliit on koosnev loogiliselt eraldatud moodulitest, millest igaĂŒhel on oma andmebaas.

TeenuspÔhine arhitektuur

Kui siiski plaanitakse sĂŒsteemi korraldada teenuste kogumina, siis rÀÀgime teenustepĂ”hisest arhitektuurist. Selle printsiibid: rakenduste ĂŒhilduvus, kasutajakesksus, Ă€riteenuste korduv kasutamine, sĂ”ltumatud tehnoloogiakomplektidest ja autonoomsus (iseseisev evolutsioon, skaleeritavus ja rakendamine).

TeenustepÔhine arhitektuur (SOA = service oriented architecture) lahendab kÔik monoliidi probleemid: muudatuste korral mÔjutatakse ainult teenust, samas kui selgelt mÀÀratletud API toetab head komponentide kapseldamist.

Kuid mitte kĂ”ik ei ole nii sujuv: SOA toob esile uusi probleeme. Kaugkutsed on kallimad kui kohalikud ning ĂŒlesannete jaotamine komponentide vahel muutus oluliselt kallimaks.

Muide, iseseisva rakendamise vĂ”imalus on teenuse vĂ€ga oluline omadus. Kui teenuseid tuleb rakendada koos vĂ”i veelgi enam, kindlas jĂ€rjestuses, siis ei saa sĂŒsteemi pidada teenustepĂ”hiseks. Sellisel juhul rÀÀgitakse hajutatud monoliidist (mis loetakse antipatterniks mitte ainult SOA vaatepunktist, vaid ka mikroteenuste arhitektuurist).

TeenustepÔhist arhitektuuri toetavad hÀsti arhitektuuri kogukond ja tarnijad. SeetÔttu on olemas palju kursusi ja sertifikaate, samuti hÀsti lÀbi töötatud mustreid. Nendesse kuulub nÀiteks tuntud ettevÔtte teenuste buss (ESB = enterprise service bus). Samas on ESB tarnijate pagas, see ei pea tingimata olema SOA-s kasutusel.

TeenustepÔhise arhitektuuri populaarsuse tipp langes umbes 2008. aastasse, pÀrast mida see hakkas langema, mis muutus oluliselt jÀrsemaks pÀrast mikroteenuste ilmumist (~2015. aasta).

KokkuvÔte

PĂ€rast seda, kui oleme arutanud vĂ”imalusi teabe sĂŒsteemide korraldamiseks teenuste ja moodulitena, soovitan lĂ”puks liikuda mikroteenuste arhitektuuri printsiipide juurde ja pöörata erilist tĂ€helepanu mikroteenuste arhitektuuri eristumisele teenustepĂ”hisest jĂ€rgmises osas.

Arhitektuuristiili valik (osa 2)

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