Arhitektuuristiili valik (osa 3)

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.

Viimati rÀÀkisime erinevatest monoliitide tĂŒĂŒpides ja komponentidest nende ehitamisel, sealhulgas nii kogumite kui ka juurutamise komponentidest. Tutvusime teenusorienteeritud arhitektuuriga.

NĂŒĂŒd mÀÀratleme lĂ”puks mikroteenuste arhitektuuri peamised omadused.

Arhitektuuride suhted

Oluline on mÔista, et eelnevates artiklite mÀÀratluste pÔhjal on iga teenus komponent, kuid mitte iga teenus on mikroteenus.

Mikroteenuste arhitektuuri omadused

Mikroteenuste arhitektuuri peamised omadused on:

  • Organiseeritud Ă€ri vĂ”imaluste jĂ€rgi (Organized around Business Capabilities)
  • Tooted, mitte projektid (Products not Projects)
  • Ahned sisenemispunktid ja rumalad kanalid (Smart endpoints and dumb pipes)
  • Keskendumine detsentraliseeritud juhtimisele (Decentralized Governance)
  • Keskendumine detsentraliseeritud andmehaldusele (Decentralized Data Management)
  • Infrastruktuuri automatiseerimine (Infrastructure Automation)
  • Vigade kaitse (Design for failure)
  • Evolutsiooniga arenguga arhitektuur (Evolutionary Design)

Esimene punkt pÀrineb teenusorienteeritud arhitektuurist, kuna mikroteenused on teenuste erivorm. Teised punktid vÀÀrivad eraldi kÀsitlemist.

Organiseeritud Àri vÔimaluste jÀrgi (Organized around Business Capabilities)

NĂŒĂŒd on vajalik meenutada Conway seadust: organisatsioonid, kes loovad sĂŒsteeme, korraldavad nende arhitektuuri vastavalt nende organisatsioonide koostööstruktuurile. NĂ€itena vĂ”ib tuua kompilaatori loomise: seitsmest inimesest koosnev meeskond töötas vĂ€lja seitsme lĂ€bimisega kompilaatori, samas kui viie inimesega meeskond lĂ”i viie lĂ€bimisega kompilaatori.

Kui rÀÀgime monolĂŒĂŒtidest ja mikroteenustest, siis juhul, kui arendus on korraldatud funktsionaalsete osakondade kaupa (taust, esiplaan, andmebaasiadministraatorid), saame klassikalise monoliidi.

Mikroteenuste saamiseks tuleb meeskonnad organiseerida vastavalt ÀrivÔimalustele (tellimuste, vÀljaveo, katalooge kÀsitlev meeskond). Selline korraldus annab meeskondadele vÔimaluse keskenduda rakenduse konkreetsete osade loomisele.

Tooted, mitte projektid (Products not Projects)

Ehkki projekti lĂ€henemine, kus meeskond edastab vĂ€lja arendatud funktsionaalsuse teistele meeskondadele mikroteenuste arhitektuuri korral, ei sobi. Meeskond peab sĂŒsteemi toetama kogu selle elutsĂŒkli vĂ€ltel. EttevĂ”te Amazon, ĂŒks mikroteenuste rakendamise lipulaevu, on öelnud: "sa lood toote ja sina ka kĂ€ivitad selle" ("you build, you run it"). Toote lĂ€henemine vĂ”imaldab meeskonnal tajuda Ă€ri vajadusi.

Ahned sisenemispunktid ja rumalad kanalid (Smart endpoints and dumb pipes)

SOA arhitektuur on suure tÀhelepanu pööranud suhtluskanalitele, sealhulgas Enterprise Service Bus'ile (ettevÔtte teenuste buss). See toob sageli kaasa Erroneous Spaghetti Box'i, st monoliidi keerukus muutub teenuste vaheliseks keerukuseks. Mikroteenuste arhitektuuris kasutatakse vaid lihtsaid suhtlemisviise.

Keskendumine detsentraliseeritud juhtimisele (Decentralized Governance)

Mikroteenuste pÔhiteemad peaksid olema inimeste poolt, kes tegelikult arendavad mikroteenuseid. Siin mÔistetakse pÔhiteemade all valikut.
programmeerimiskeeled, juurutamismeetodid, avalike liideste lepingud jne.

Keskendumine detsentraliseeritud andmehaldusele (Decentralized Data Management)

Standardsed lĂ€henemisviisid, kus rakendus toetub ĂŒhele andmebaasile, ei saa arvestada iga konkreetse teenuse spetsiifikaga. MSA eeldab andmete detsentraliseeritud haldamist, sealhulgas erinevate tehnoloogiate rakendamist.

Infrastruktuuri automatiseerimine (Infrastructure Automation)

MSA toetab pidevat juurutamise ja kohaletoimetamise protsessi. Seda saab saavutada ainult protsesside automatiseerimise kaudu. Samuti ei nÀe suuri teenuste juurutamise protsessid enam midagi hirmutavat. Juurutamisprotsess peab muutuma igavaks. Teine aspekt on teenuste haldamine toote keskkonnas. Ilma automatiseerimiseta muutub teiste operatiivkeskkondades kÀivitatud protsesside haldamine vÔimatuks.

Vigade kaitse (Design for failure)

Hulgal appetid MSA on talitlushĂ€ired. Sellegipoolest on veahaldus jaotatud sĂŒsteemis ĂŒpris keeruline ĂŒlesanne. Rakenduste arhitektuur peab olema sellistele tĆĄehkidele vastupidav. Rebecca Parsons peab vĂ€ga oluliseks, et me ei kasutaks enam isegi protsessi sisest suhtlemist teenuste vahel, nende vahel suhtlemiseks eelistame HTTP-d, mis ei ole sugugi nii usaldusvÀÀrne.

Evolutsiooniga arenguga arhitektuur (Evolutionary Design)

MSA sĂŒsteemi arhitektuur peab arenema evolutsiooniliselt. Soovitav on piirata vajalikke muudatusi ĂŒhe teenuse piirides. Tuleb samuti arvestada mĂ”ju teistele teenustele. Traditsiooniline lĂ€henemine on pĂŒĂŒda probleem lahendada versioonihalduse kaudu, kuid MSA eelĂ”uab versioonihalduse kasutamist
ÀÀrmiselt ÀÀrmuslikuna.

KokkuvÔte

KokkuvĂ”ttes saab sĂ”nastada, mis on mikroteenused. MikrosĂŒsteemide arhitektuur on lĂ€henemine eraldi rakenduse vĂ€ljatöötamisele, mis koosneb vĂ€ikeste teenuste kogumist, millest igaĂŒks töötab oma protsessis ja suhtleb lĂ€bi kergendatud mehhanismide, sageli HTTP ressursside API-liidese kaudu. Need teenused on ĂŒles ehitatud Ă€rivĂ”imalustele ja neid saab iseseisvalt juurutada tĂ€ielikult
automaatse juurutusmehhanismi abil. Nende teenuste jaoks on minimaalne tsentraliseeritud haldus, mis vÔivad olla kirjutatud erinevates programmeerimiskeeltes ja kasutada erinevaid andmehoidlatehnoloogiaid.

Arhitektuuristiili valik (osa 3)

Loe 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