Arhitektūras stila izvēle (1. daļa)

Sveiki, Habr. TieÅ”i tagad OTUS ir atvērta uzņemÅ”ana jaunajam kursam. Ā«ProgrammatÅ«ras arhitektsĀ». Pirms kursa sākuma vēlos ar jums dalÄ«ties ar savu autordarbu.

Ievads

ArhitektÅ«ras stila izvēle ir viens no galvenajiem tehniskajiem lēmumiem informācijas sistēmas izveidē. Å ajā rakstu sērijā es piedāvāju apskatÄ«t populārākos lietojumprogrammu arhitektÅ«ras stilus un atbildēt uz jautājumu, kurā gadÄ«jumā kurÅ” arhitektÅ«ras stils ir visvairāk vēlams. Izklāstot informāciju, es cenÅ”os veidot loÄ£isku secÄ«bu, kas izskaidro arhitektÅ«ras stilu attÄ«stÄ«bu no monolÄ«tiem lÄ«dz mikroservisiem.

Mazliet vēstures

Ja jÅ«s mēģināsiet uzdot jautājumu izstrādātājiem: "Kāpēc ir nepiecieÅ”ami mikropakalpojumi?", tad saņemsiet visdažādākās atbildes. JÅ«s dzirdēsiet, ka mikropakalpojumi uzlabo mērogojamÄ«bu, vienkārÅ”o koda izpratni, uzlabo kļūmju toleranci, dažreiz var dzirdēt, ka tie ļauj "sakārtot kodu". ApskatÄ«sim vēsturi, lai saprastu, kādu mērÄ·i bija paredzējusi mikropakalpojumu raÅ”anās.

Ja runājam Ä«si, tad mikropakalpojumi mÅ«su paÅ”reizējā izpratnē radās Ŕādi: 2011. gadā Džeimss LjÅ«iss, analizējot dažādu uzņēmumu darbus, pievērsa uzmanÄ«bu jaunā modeļa "micro-app" raÅ”anās nepiecieÅ”amÄ«bai, kas optimizēja SOA, paātrinot pakalpojumu izsniegÅ”anu. Nedaudz vēlāk, 2012. gadā, arhitektÅ«ras samita laikā Å”is modelis tika pārdēvēts par mikropakalpojumu. Tādējādi sākotnējais mērÄ·is, ievieÅ”ot mikropakalpojumus, bija uzlabot tā saucamo time to market.

Mikropakalpojumu aktualitāte sasniedza virsotni 2015. gadā. Pēc dažām pētÄ«jumu atziņām neviena konference nevarēja iztikt bez ziņojuma par mikropakalpojumiem. Pat vairākas konferences tika veltÄ«tas tikai mikropakalpojumiem. Tagad ļoti daudzi projekti sākas ar Ŕī arhitektÅ«ras stila pielietoÅ”anu, bet, ja projektā ir liels mantojuma kods, tad noteikti notiek aktÄ«va migrācija uz mikropakalpojumiem.

Neskatoties uz iepriekÅ” minēto, lÄ«dz Å”im diezgan neliels skaits izstrādātāju var definēt jēdzienu "mikropakalpojums". Bet par to mēs runāsim nedaudz vēlāk...

Monolīts

ArhitektÅ«ras stils, kas ir pretstats mikropakalpojumiem, ir monolÄ«ts (jeb "viss vienā"). Par monolÄ«tu stāstÄ«t, iespējams, nav jēgas, tāpēc es uzreiz uzskaitīŔu Ŕī arhitektÅ«ras stila trÅ«kumus, kas rosināja turpmākas arhitektÅ«ras stilu attÄ«stÄ«bas: lielums, saistÄ«tÄ«ba, izsniegÅ”ana, mērogojamÄ«ba, uzticamÄ«ba un stÄ«vums. Zemāk es piedāvāju iepazÄ«ties ar katru no trÅ«kumiem atseviŔķi.

Izmērs

MonolÄ«ts ir ļoti liels. Un parasti tas sazinās ar ļoti plaÅ”u datu bāzi. Lietojums kļūst pārāk liels, lai to varētu saprast viens izstrādātājs. Ar monolÄ«tu var labi strādāt tikai tie, kuri ir pavadÄ«juÅ”i pietiekami daudz laika pie Ŕī koda, savukārt iesācēji pavadÄ«s ļoti daudz laika, mēģinot saprast monolÄ«tu, un nav garantijas, ka viņi to izdarÄ«s. Parasti, strādājot ar monolÄ«tu, vienmēr ir kāds ā€žnosacÄ«tsā€ vecākais, kurÅ” pazÄ«st monolÄ«tu vairāk vai mazāk labi un iedod norādÄ«jumus citiem jauniem izstrādātājiem visā gadā vai pusotra laikā. Protams, Ŕāds nosacÄ«ts vecākais ir vienÄ«gā atteices vieta, un viņa aizieÅ”ana var novest pie monolÄ«ta bojājuma.

Saistība

MonolÄ«ts ir ā€žliels dubļu kamolsā€ (big ball of mud), kurā izmaiņas var novest pie neparedzamām sekām. Veicot izmaiņas vienā vietā, var sabojāt monolÄ«tu citā (tieÅ”i tāpēc saka ā€žja pēderē, rekur atslēdzāsā€). Tas saistÄ«ts ar to, ka komponenti monolÄ«tā ir ļoti sarežģīti un, galvenais, neacÄ«mredzami saistÄ«ti.

IzvietoŔana

MonolÄ«ta izvietoÅ”ana, ņemot vērā sarežģītās saistÄ«bas starp tā komponentiem, ir ilgs process ar savu rituālu. Å is rituāls parasti nav pilnÄ«gi standartizēts un tiek nodots ā€žno mutes mutÄ“ā€.

Mērogojamība

MonolÄ«ta moduļi var bÅ«t konfliktējoÅ”as prasÄ«bas attiecÄ«bā uz resursiem, tāpēc ir nepiecieÅ”ams meklēt kompromisu attiecÄ«bā uz aparatÅ«ru. Iedomājieties, ka jÅ«su monolÄ«ts sastāv no pakalpojumiem A un B. Pakalpojums A ir prasÄ«gs attiecÄ«bā uz cietā diska izmēru, bet pakalpojums B — attiecÄ«bā uz operatÄ«vo atmiņu. Šādā gadÄ«jumā vai nu dators, uz kura tiek uzstādÄ«ts monolÄ«ts, jāatbilst abu pakalpojumu prasÄ«bām, vai arÄ« bÅ«s jāsamazina kāds no pakalpojumiem manuāli.

Vēl viens piemērs (klasiskāks): pakalpojums A ir daudz populārāks nekā pakalpojums B, tāpēc jÅ«s vēlaties, lai pakalpojumu A bÅ«tu 100, bet pakalpojumu B — 10. Atkal divi varianti: vai nu izvietojam 100 pilnvērtÄ«gus monolÄ«tus, vai kādos no tiem manuāli bÅ«s jāsamazina pakalpojumi B.

Uzticamība

Tā kā visi pakalpojumi atrodas kopā, ja monolīts sabrūk, sabrūk visi pakalpojumi uzreiz. Patiesībā, iespējams, tas nav tik slikti, vismaz nebūs daļēju traucējumu sadalītā sistēmā, bet no otras puses, kļūdas dēļ funkcionalitātē, ko izmanto 0.001% lietotāju, jūs varat zaudēt visus savas sistēmas lietotājus.

Kustība

Ņemot vērā monolÄ«ta izmēru, ir grÅ«ti pāriet uz jaunām tehnoloÄ£ijām. Tā rezultātā, atseviŔķa uzdevuma veidoÅ”anās izvēlēŔanās saglabāt to paÅ”u nosacÄ«to senioru. Izvēlētais tehnoloÄ£iju kaudze projekta sākumā var kļūt par Ŕķērsli, kas kavē produkta attÄ«stÄ«bu.

Secinājums

Nākamajā reizē mēs runāsim par to, kā cilvēki mēģināja atrisināt minētās problēmas, pārejot uz komponentiem un SOA.

Arhitektūras stila izvēle (1. daļa)

Lasīt vēl:

Avots: habr.com

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster