Mudelli arkitettoniċi konvenjenti

Ħej Habr!

Fid-dawl tal-ġrajjiet kurrenti minħabba l-koronavirus, għadd ta’ servizzi tal-Internet bdew jirċievu tagħbija akbar. Pereżempju, Waħda mill-ktajjen tal-bejgħ bl-imnut tar-Renju Unit sempliċement waqfet is-sit tal-ordnijiet onlajn tagħha., għax ma kienx hemm kapaċità biżżejjed. U mhux dejjem ikun possibbli li tħaffef server billi sempliċement iżżid tagħmir aktar qawwi, iżda t-talbiet tal-klijenti jridu jiġu pproċessati (jew imorru għand il-kompetituri).

F'dan l-artikolu ser nitkellem fil-qosor dwar prattiki popolari li jippermettulek toħloq servizz veloċi u tolleranti għall-ħsarat. Madankollu, mill-iskemi ta 'żvilupp possibbli, għażilt biss dawk li huma bħalissa faċli biex tużah. Għal kull oġġett, jew għandek libreriji lesti, jew għandek l-opportunità li ssolvi l-problema billi tuża pjattaforma sħaba.

Skalar orizzontali

L-iktar punt sempliċi u magħruf. Konvenzjonalment, l-aktar komuni żewġ skemi ta 'distribuzzjoni tat-tagħbija huma skalar orizzontali u vertikali. Fl-ewwel każ inti tippermetti li s-servizzi jaħdmu b'mod parallel, u b'hekk tqassam it-tagħbija bejniethom. Fit-tieni tordna servers aktar qawwija jew tottimizza l-kodiċi.

Pereżempju, nieħu ħażna ta 'fajls sħaba astratti, jiġifieri, xi analogu ta' OwnCloud, OneDrive, eċċ.

Stampa standard ta 'ċirkwit bħal dan hija hawn taħt, iżda turi biss il-kumplessità tas-sistema. Wara kollox, jeħtieġ li b'xi mod nissinkronizzaw is-servizzi. X'jiġri jekk l-utent jiffranka fajl mill-pillola u mbagħad irid jarah mit-telefon?

Mudelli arkitettoniċi konvenjenti
Id-differenza bejn l-approċċi: fl-iskala vertikali, aħna lesti li nżidu l-qawwa tan-nodi, u fl-iskala orizzontali, aħna lesti li nżidu nodi ġodda biex iqassmu t-tagħbija.

CQRS

Kmand Mistoqsija Responsabbiltà Segregazzjoni Mudell pjuttost importanti, peress li jippermetti lill-klijenti differenti mhux biss li jikkonnettjaw ma 'servizzi differenti, iżda wkoll li jirċievu l-istess flussi ta' avvenimenti. Il-benefiċċji tiegħu mhumiex daqshekk ovvji għal applikazzjoni sempliċi, iżda huwa estremament importanti (u sempliċi) għal servizz okkupat. L-essenza tagħha: il-flussi tad-dejta deħlin u ħerġin m'għandhomx jaqsmu. Jiġifieri, ma tistax tibgħat talba u tistenna tweġiba; minflok, inti tibgħat talba lis-servizz A, iżda tirċievi tweġiba mis-servizz B.

L-ewwel bonus ta 'dan l-approċċ huwa l-abbiltà li tkisser il-konnessjoni (fis-sens wiesa' tal-kelma) filwaqt li tesegwixxi talba twila. Pereżempju, ejja nieħdu sekwenza bejn wieħed u ieħor standard:

  1. Il-klijent bagħat talba lis-server.
  2. Is-server beda żmien twil ta 'proċessar.
  3. Is-server wieġeb lill-klijent bir-riżultat.

Ejja nimmaġinaw li fil-punt 2 il-konnessjoni nkissret (jew in-netwerk reġa' konness, jew l-utent mar f'paġna oħra, u kiser il-konnessjoni). F'dan il-każ, ikun diffiċli għas-server li jibgħat tweġiba lill-utent b'informazzjoni dwar x'kien eżattament ipproċessat. Billi tuża CQRS, is-sekwenza tkun kemmxejn differenti:

  1. Il-klijent abbona għal aġġornamenti.
  2. Il-klijent bagħat talba lis-server.
  3. Is-server wieġeb "talba aċċettata."
  4. Is-server wieġeb bir-riżultat permezz tal-kanal mill-punt "1".

Mudelli arkitettoniċi konvenjenti

Kif tistgħu taraw, l-iskema hija ftit aktar kumplessa. Barra minn hekk, l-approċċ intuwittiv tat-talba-rispons huwa nieqes hawn. Madankollu, kif tistgħu taraw, waqfa ta' konnessjoni waqt l-ipproċessar ta' talba mhux se twassal għal żball. Barra minn hekk, jekk fil-fatt l-utent ikun konness mas-servizz minn diversi apparati (pereżempju, minn mowbajl u minn tablet), tista' tiżgura li r-rispons jasal għaż-żewġ apparati.

Interessanti, il-kodiċi għall-ipproċessar tal-messaġġi deħlin isir l-istess (mhux 100%) kemm għal avvenimenti li kienu influwenzati mill-klijent innifsu, kif ukoll għal avvenimenti oħra, inklużi dawk minn klijenti oħra.

Madankollu, fir-realtà niksbu bonus addizzjonali minħabba l-fatt li l-fluss unidirezzjonali jista 'jiġi mmaniġġjat fi stil funzjonali (bl-użu ta' RX u simili). U dan diġà huwa vantaġġ serju, peress li essenzjalment l-applikazzjoni tista 'ssir kompletament reattiva, u wkoll bl-użu ta' approċċ funzjonali. Għal programmi ta 'xaħam, dan jista' jiffranka b'mod sinifikanti r-riżorsi ta 'żvilupp u appoġġ.

Jekk ngħaqqdu dan l-approċċ ma 'skala orizzontali, allura bħala bonus ikollna l-abbiltà li nibagħtu talbiet lil server wieħed u nirċievu tweġibiet minn ieħor. Għalhekk, il-klijent jista 'jagħżel is-servizz li huwa konvenjenti għalih, u s-sistema ġewwa xorta tkun tista' tipproċessa l-avvenimenti b'mod korrett.

Akkwist ta' Avvenimenti

Kif tafu, waħda mill-karatteristiċi ewlenin ta 'sistema distribwita hija n-nuqqas ta' ħin komuni, sezzjoni kritika komuni. Għal proċess wieħed, tista 'tagħmel sinkronizzazzjoni (fuq l-istess mutexes), li fiha inti żgur li ħadd ieħor m'hu qed jesegwixxi dan il-kodiċi. Madankollu, dan huwa perikoluż għal sistema mqassma, peress li se teħtieġ overhead, u se toqtol ukoll is-sbuħija kollha tal-iskala - il-komponenti kollha xorta se jistennew wieħed.

Minn hawn nieħdu fatt importanti - sistema mqassma mgħaġġla ma tistax tiġi sinkronizzata, għax allura nnaqqsu l-prestazzjoni. Min-naħa l-oħra, ħafna drabi għandna bżonn ċerta konsistenza bejn il-komponenti. U għal dan tista 'tuża l-approċċ ma' konsistenza eventwali, fejn huwa garantit li jekk ma jkunx hemm bidliet fid-dejta għal xi perjodu ta 'żmien wara l-aħħar aġġornament ("eventwalment"), il-mistoqsijiet kollha se jirritornaw l-aħħar valur aġġornat.

Huwa importanti li wieħed jifhem li għal databases klassiċi huwa pjuttost spiss użat konsistenza qawwija, fejn kull node għandu l-istess informazzjoni (dan ħafna drabi jinkiseb fil-każ fejn it-tranżazzjoni titqies stabbilita biss wara li t-tieni server jirrispondi). Hemm xi rilassamenti hawn minħabba l-livelli ta 'iżolament, iżda l-idea ġenerali tibqa' l-istess - tista 'tgħix f'dinja kompletament armonizzata.

Madankollu, ejja nerġgħu lura għall-kompitu oriġinali. Jekk parti mis-sistema tista 'tinbena bi konsistenza eventwali, allura nistgħu nibnu d-dijagramma li ġejja.

Mudelli arkitettoniċi konvenjenti

Karatteristiċi importanti ta 'dan l-approċċ:

  • Kull talba li tidħol titqiegħed f'kju wieħed.
  • Waqt l-ipproċessar ta’ talba, is-servizz jista’ wkoll ipoġġi kompiti fi kjuwijiet oħra.
  • Kull avveniment li jkun dieħel għandu identifikatur (li huwa meħtieġ għad-deduplikazzjoni).
  • Il-kju jaħdem ideoloġikament skont l-iskema "append only". Ma tistax tneħħi elementi minnha jew tirranġahom mill-ġdid.
  • Il-kju jaħdem skont l-iskema FIFO (skużani għat-tawtoloġija). Jekk għandek bżonn tagħmel eżekuzzjoni parallela, allura fi stadju wieħed għandek tmexxi l-oġġetti għal kjuwijiet differenti.

Ħa nfakkarkom li qed nikkunsidraw il-każ tal-ħażna tal-fajls onlajn. F'dan il-każ, is-sistema tidher xi ħaġa bħal din:

Mudelli arkitettoniċi konvenjenti

Huwa importanti li s-servizzi fid-dijagramma ma jfissrux neċessarjament server separat. Anke l-proċess jista 'jkun l-istess. Ħaġa oħra hija importanti: ideoloġikament, dawn l-affarijiet huma separati b'tali mod li l-iskala orizzontali tista 'tiġi applikata faċilment.

U għal żewġ utenti, id-dijagramma tidher bħal din (is-servizzi maħsuba għal utenti differenti huma indikati b'kuluri differenti):

Mudelli arkitettoniċi konvenjenti

Bonuses minn kombinazzjoni bħal din:

  • Is-servizzi tal-ipproċessar tal-informazzjoni huma separati. Il-kjuwijiet huma wkoll separati. Jekk irridu nżidu l-fluss tas-sistema, allura jeħtieġ biss li nniedu aktar servizzi fuq aktar servers.
  • Meta nirċievu informazzjoni minn utent, m'għandniex għalfejn nistennew sakemm id-dejta tiġi ssejvjata kompletament. Għall-kuntrarju, jeħtieġ biss li nwieġbu "ok" u mbagħad nibdew naħdmu gradwalment. Fl-istess ħin, il-kju twitti l-qċaċet, peress li ż-żieda ta 'oġġett ġdid isseħħ malajr, u l-utent m'għandux għalfejn jistenna pass sħiħ miċ-ċiklu kollu.
  • Bħala eżempju, żidt servizz ta' deduplikazzjoni li jipprova jingħaqad fajls identiċi. Jekk taħdem għal żmien twil f'1% tal-każijiet, il-klijent bilkemm jinduna bih (ara hawn fuq), li huwa vantaġġ kbir, peress li m'għadniex meħtieġa li nkunu XNUMX% veloċità u affidabbli.

Madankollu, l-iżvantaġġi huma viżibbli immedjatament:

  • Is-sistema tagħna tilfet il-konsistenza stretta tagħha. Dan ifisser li jekk, pereżempju, tabbona għal servizzi differenti, allura teoretikament tista 'tikseb stat differenti (peress li wieħed mis-servizzi jista' ma jkollux ħin biex jirċievi notifika mill-kju intern). Bħala konsegwenza oħra, is-sistema issa m'għandhiex ħin komuni. Jiġifieri, huwa impossibbli, pereżempju, li jiġu ssortjati l-avvenimenti kollha sempliċement bil-ħin tal-wasla, peress li l-arloġġi bejn is-servers jistgħu ma jkunux sinkroniċi (barra minn hekk, l-istess ħin fuq żewġ servers huwa utopja).
  • L-ebda avveniment issa ma jista 'jiġi sempliċiment rolled back (kif jista' jsir b'database). Minflok, trid iżżid avveniment ġdid − avveniment ta' kumpens, li se jibdel l-aħħar stat għal dak meħtieġ. Bħala eżempju minn qasam simili: mingħajr kitba mill-ġdid tal-istorja (li hija ħażina f'ċerti każijiet), ma tistax tirritorna impenn f'git, iżda tista 'tagħmel speċjali impenn ta' rollback, li essenzjalment jirritorna biss l-istat antik. Madankollu, kemm l-impenn żbaljat kif ukoll ir-rollback se jibqgħu fl-istorja.
  • L-iskema tad-dejta tista' tinbidel minn rilaxx għal rilaxx, iżda avvenimenti qodma ma jkunux jistgħu jibqgħu jiġu aġġornati għall-istandard il-ġdid (peress li l-avvenimenti ma jistgħux jinbidlu fil-prinċipju).

Kif tistgħu taraw, Event Sourcing jaħdem tajjeb ma' CQRS. Barra minn hekk, l-implimentazzjoni ta 'sistema bi kjuwijiet effiċjenti u konvenjenti, iżda mingħajr tissepara l-flussi tad-dejta, diġà hija diffiċli fiha nnifisha, għaliex ikollok iżżid punti ta' sinkronizzazzjoni li jinnewtralizzaw l-effett pożittiv kollu tal-kjuwijiet. L-applikazzjoni taż-żewġ approċċi f'daqqa, huwa meħtieġ li taġġusta ftit il-kodiċi tal-programm. Fil-każ tagħna, meta tibgħat fajl lis-server, ir-rispons jiġi biss "ok", li jfisser biss li "l-operazzjoni taż-żieda tal-fajl ġiet salvata." Formalment, dan ma jfissirx li d-dejta hija diġà disponibbli fuq apparati oħra (per eżempju, is-servizz ta 'deduplikazzjoni jista' jerġa 'jibni l-indiċi). Madankollu, wara xi żmien, il-klijent jirċievi notifika fl-istil ta '"fajl X ġie salvat."

B'riżultat ta 'dan:

  • In-numru ta 'status li jibagħtu l-fajls qed jiżdied: minflok il-klassika "fajl mibgħut", aħna jkollna tnejn: "il-fajl ġie miżjud mal-kju fuq is-server" u "il-fajl ġie salvat fil-ħażna." Dan tal-aħħar ifisser li apparati oħra jistgħu diġà jibdew jirċievu l-fajl (aġġustat għall-fatt li l-kjuwijiet joperaw b'veloċitajiet differenti).
  • Minħabba l-fatt li l-informazzjoni tas-sottomissjoni issa tiġi permezz ta 'kanali differenti, jeħtieġ li noħorġu b'soluzzjonijiet biex nirċievu l-istatus tal-ipproċessar tal-fajl. Bħala konsegwenza ta 'dan: b'differenza mill-klassika talba-rispons, il-klijent jista' jerġa 'jinbeda waqt li jipproċessa l-fajl, iżda l-istatus ta' dan l-ipproċessar innifsu se jkun korrett. Barra minn hekk, dan l-oġġett jaħdem, essenzjalment, barra mill-kaxxa. Bħala konsegwenza: issa aħna aktar tolleranti għall-fallimenti.

Sharding

Kif deskritt hawn fuq, is-sistemi ta' sorsi ta' avvenimenti m'għandhomx konsistenza stretta. Dan ifisser li nistgħu nużaw diversi ħażniet mingħajr ebda sinkronizzazzjoni bejniethom. Meta noqorbu l-problema tagħna, nistgħu:

  • Separa l-fajls skond it-tip. Pereżempju, stampi/vidjows jistgħu jiġu dekodifikati u jista 'jintgħażel format aktar effiċjenti.
  • Kontijiet separati skont il-pajjiż. Minħabba ħafna liġijiet, dan jista 'jkun meħtieġ, iżda din l-iskema ta' arkitettura tipprovdi tali opportunità awtomatikament

Mudelli arkitettoniċi konvenjenti

Jekk trid tittrasferixxi data minn ħażna għal oħra, allura l-mezzi standard m'għadhomx biżżejjed. Sfortunatament, f'dan il-każ, għandek bżonn twaqqaf il-kju, tagħmel il-migrazzjoni, u mbagħad tibdaha. Fil-każ ġenerali, id-dejta ma tistax tiġi trasferita "fuq il-ħin", madankollu, jekk il-kju tal-avvenimenti jinħażen kompletament, u għandek snapshots ta 'stati ta' ħażna preċedenti, allura nistgħu nerġgħu nimxu l-avvenimenti kif ġej:

  • Fis-Sors tal-Avveniment, kull avveniment għandu l-identifikatur tiegħu (idealment, li ma jonqosx). Dan ifisser li nistgħu nżidu qasam mal-ħażna - l-id tal-aħħar element ipproċessat.
  • Aħna nidduplikaw il-kju sabiex l-avvenimenti kollha jkunu jistgħu jiġu pproċessati għal diversi ħażniet indipendenti (l-ewwel huwa dak li fih id-dejta hija diġà maħżuna, u t-tieni hija ġdida, iżda għadha vojta). It-tieni kju, ovvjament, għadu mhux qed jiġi pproċessat.
  • Inniedu t-tieni kju (jiġifieri nibdew nirreplayu l-avvenimenti).
  • Meta l-kju l-ġdid ikun relattivament vojt (jiġifieri, id-differenza fil-ħin medja bejn iż-żieda ta 'element u l-irkupru huwa aċċettabbli), tista' tibda taqleb il-qarrejja għall-ħażna l-ġdida.

Kif tistgħu taraw, ma kellniex, u għad m'għandniex, konsistenza stretta fis-sistema tagħna. Hemm biss konsistenza eventwali, jiġifieri, garanzija li l-avvenimenti jiġu pproċessati fl-istess ordni (iżda possibilment b'dewmien differenti). U, bl-użu ta 'dan, nistgħu relattivament faċilment tittrasferixxi data mingħajr ma nwaqqfu s-sistema lejn in-naħa l-oħra tad-dinja.

Għalhekk, inkomplu bl-eżempju tagħna dwar il-ħażna onlajn għall-fajls, arkitettura bħal din diġà tagħtina numru ta 'bonuses:

  • Nistgħu nimxu l-oġġetti eqreb lejn l-utenti b'mod dinamiku. B'dan il-mod tista' ttejjeb il-kwalità tas-servizz.
  • Nistgħu naħżnu xi dejta fi ħdan il-kumpaniji. Pereżempju, l-utenti tal-Intrapriża ħafna drabi jeħtieġu li d-dejta tagħhom tkun maħżuna f'ċentri tad-dejta kkontrollati (biex jiġi evitat it-tnixxija tad-dejta). Permezz ta 'sharding nistgħu faċilment nappoġġjaw dan. U l-kompitu huwa saħansitra aktar faċli jekk il-klijent ikollu sħaba kompatibbli (per eżempju, Azure self ospitat).
  • U l-iktar ħaġa importanti hija li m'għandniex għalfejn nagħmlu dan. Wara kollox, biex tibda, inkunu pjuttost kuntenti b'ħażna waħda għall-kontijiet kollha (biex tibda taħdem malajr). U l-karatteristika ewlenija ta 'din is-sistema hija li għalkemm hija espansibbli, fl-istadju inizjali hija pjuttost sempliċi. Inti sempliċiment m'għandekx għalfejn tikteb immedjatament kodiċi li jaħdem b'miljun kjuwijiet indipendenti separati, eċċ. Jekk meħtieġ, dan jista' jsir fil-futur.

Hosting tal-Kontenut Statiku

Dan il-punt jista 'jidher pjuttost ovvju, iżda għadu meħtieġ għal applikazzjoni mgħobbija bejn wieħed u ieħor standard. L-essenza tagħha hija sempliċi: il-kontenut statiku kollu jitqassam mhux mill-istess server fejn tinsab l-applikazzjoni, iżda minn dawk speċjali ddedikati speċifikament għal dan il-kompitu. Bħala riżultat, dawn l-operazzjonijiet huma mwettqa aktar malajr (nginx kondizzjonali jservi fajls aktar malajr u inqas għaljin minn server Java). Plus CDN arkitettura (Network Kunsinna Kontenut) jippermettilna nsibu l-fajls tagħna eqreb lejn l-utenti finali, li għandu effett pożittiv fuq il-konvenjenza li taħdem mas-servizz.

L-aktar eżempju sempliċi u standard ta 'kontenut statiku huwa sett ta' skripts u stampi għal websajt. Kollox huwa sempliċi magħhom - huma magħrufa minn qabel, imbagħad l-arkivju jittella fuq is-servers tas-CDN, minn fejn jitqassmu lill-utenti finali.

Madankollu, fir-realtà, għal kontenut statiku, tista 'tuża approċċ kemmxejn simili għall-arkitettura lambda. Ejja nerġgħu lura għall-kompitu tagħna (ħażna ta 'fajls onlajn), li fih għandna bżonn nqassmu fajls lill-utenti. L-aktar soluzzjoni sempliċi hija li jinħoloq servizz li, għal kull talba tal-utent, jagħmel il-kontrolli kollha meħtieġa (awtorizzazzjoni, eċċ.), u mbagħad iniżżel il-fajl direttament mill-ħażna tagħna. L-iżvantaġġ ewlieni ta 'dan l-approċċ huwa li l-kontenut statiku (u fajl b'ċerta reviżjoni huwa, fil-fatt, kontenut statiku) huwa mqassam mill-istess server li fih il-loġika tan-negozju. Minflok, tista 'tagħmel id-dijagramma li ġejja:

  • Is-server jipprovdi URL tat-tniżżil. Jista 'jkun tal-forma file_id + key, fejn ċavetta hija firma mini-diġitali li tagħti d-dritt ta' aċċess għar-riżors għall-24 siegħa li ġejjin.
  • Il-fajl huwa mqassam b'nginx sempliċi bl-għażliet li ġejjin:
    • Caching tal-kontenut. Peress li dan is-servizz jista 'jinstab fuq server separat, ħallejna lilna nfusna riżerva għall-futur bil-kapaċità li naħżnu l-aħħar fajls imniżżla kollha fuq disk.
    • Iċċekkja ċ-ċavetta fil-ħin tal-ħolqien tal-konnessjoni
  • Fakultattiv: proċessar tal-kontenut streaming. Pereżempju, jekk nikkompressaw il-fajls kollha fis-servizz, allura nistgħu nagħmlu l-unzipping direttament f'dan il-modulu. Bħala konsegwenza: operazzjonijiet IO isiru fejn jappartjenu. Arkivjar f'Java faċilment jalloka ħafna memorja żejda, iżda l-kitba mill-ġdid ta 'servizz b'loġika tan-negozju f'kondizzjonali Rust/C++ tista' wkoll tkun ineffettiva. Fil-każ tagħna, jintużaw proċessi differenti (jew saħansitra servizzi), u għalhekk nistgħu nisseparaw b'mod pjuttost effettiv il-loġika tan-negozju u l-operazzjonijiet IO.

Mudelli arkitettoniċi konvenjenti

Din l-iskema mhix simili ħafna għad-distribuzzjoni tal-kontenut statiku (peress li aħna ma ntellgħux il-pakkett statiku kollu x'imkien), iżda fir-realtà, dan l-approċċ huwa preċiżament ikkonċernat bid-distribuzzjoni ta 'data immutabbli. Barra minn hekk, din l-iskema tista 'tiġi ġeneralizzata għal każijiet oħra fejn il-kontenut mhuwiex sempliċement statiku, iżda jista' jiġi rappreżentat bħala sett ta 'blokki immutabbli u li ma jitħassrux (għalkemm jistgħu jiġu miżjuda).

Bħala eżempju ieħor (għal rinforz): jekk ħdimt ma' Jenkins/TeamCity, allura taf li ż-żewġ soluzzjonijiet huma miktuba f'Java. It-tnejn li huma huma proċess Java li jimmaniġġa kemm l-orkestrazzjoni tal-bini kif ukoll il-ġestjoni tal-kontenut. B'mod partikolari, it-tnejn għandhom kompiti bħal "ittrasferixxi fajl/folder mis-server." Bħala eżempju: ħruġ ta 'artifacts, trasferiment ta' kodiċi tas-sors (meta l-aġent ma tniżżel il-kodiċi direttament mir-repożitorju, iżda s-server jagħmel dan għalih), aċċess għal zkuk. Dawn il-kompiti kollha jvarjaw fit-tagħbija IO tagħhom. Jiġifieri, jirriżulta li s-server responsabbli għal loġika tan-negozju kumplessa għandu fl-istess ħin ikun kapaċi jimbotta b'mod effettiv flussi kbar ta 'dejta minnu nnifsu. U l-aktar interessanti huwa li operazzjoni bħal din tista 'tiġi delegata lill-istess nginx skond eżattament l-istess skema (ħlief li ċ-ċavetta tad-dejta għandha tiżdied mat-talba).

Madankollu, jekk nerġgħu lura għas-sistema tagħna, nieħdu dijagramma simili:

Mudelli arkitettoniċi konvenjenti

Kif tistgħu taraw, is-sistema saret radikalment aktar kumplessa. Issa mhuwiex biss mini-proċess li jaħżen il-fajls lokalment. Issa dak li hu meħtieġ mhuwiex l-aktar appoġġ sempliċi, kontroll tal-verżjoni API, eċċ. Għalhekk, wara li d-dijagrammi kollha jkunu tfasslu, huwa aħjar li tevalwa fid-dettall jekk l-estensibilità hijiex jiswew l-ispiża. Madankollu, jekk trid tkun tista 'tespandi s-sistema (inkluż li taħdem ma' numru saħansitra akbar ta 'utenti), allura jkollok tmur għal soluzzjonijiet simili. Iżda, bħala riżultat, is-sistema hija lesta arkitettonikament għal tagħbija miżjuda (kważi kull komponent jista 'jiġi kklonat għal skalar orizzontali). Is-sistema tista 'tiġi aġġornata mingħajr ma twaqqafha (sempliċement xi operazzjonijiet se jitnaqqsu kemmxejn).

Kif għedt fil-bidu nett, issa numru ta' servizzi tal-Internet bdew jirċievu tagħbija akbar. U xi wħud minnhom sempliċement bdew jieqfu jaħdmu b'mod korrett. Fil-fatt, is-sistemi fallew preċiżament fil-mument meta n-negozju suppost kellu jagħmel il-flus. Jiġifieri, minflok kunsinna differita, minflok ma tissuġġerixxi lill-klijenti "ppjana l-kunsinna tiegħek għax-xhur li ġejjin," is-sistema sempliċement qalet "mur għand il-kompetituri tiegħek." Fil-fatt, dan huwa l-prezz tal-produttività baxxa: it-telf iseħħ preċiżament meta l-profitti jkunu l-ogħla.

Konklużjoni

Dawn l-approċċi kollha kienu magħrufa qabel. L-istess VK ilu juża l-idea ta’ Hosting ta’ Kontenut Statiku biex juri immaġini. Ħafna logħob online jużaw l-iskema Sharding biex jaqsmu l-plejers f'reġjuni jew biex jisseparaw postijiet tal-logħob (jekk id-dinja nnifisha hija waħda). L-approċċ tal-Akkwist tal-Avvenimenti jintuża b'mod attiv fl-email. Il-biċċa l-kbira tal-applikazzjonijiet tal-kummerċ fejn id-dejta qed tiġi riċevuta kontinwament huma fil-fatt mibnija fuq approċċ CQRS sabiex ikunu jistgħu jiffiltraw id-dejta riċevuta. Ukoll, l-iskala orizzontali intuża f'ħafna servizzi għal żmien pjuttost twil.

Madankollu, l-aktar importanti, dawn il-mudelli kollha saru faċli ħafna biex jiġu applikati f'applikazzjonijiet moderni (jekk huma xierqa, ovvjament). Clouds joffru Sharding u skalar orizzontali mill-ewwel, li huwa ħafna aktar faċli milli tordna servers dedikati differenti f'ċentri tad-dejta differenti lilek innifsek. CQRS sar ħafna aktar faċli, jekk biss minħabba l-iżvilupp ta 'libreriji bħal RX. Madwar 10 snin ilu, websajt rari tista 'tappoġġja dan. Event Sourcing huwa wkoll oerhört faċli biex jitwaqqaf grazzi għal kontenituri lesti b'Apache Kafka. 10 snin ilu din kienet tkun innovazzjoni, issa hija komuni. Huwa l-istess ma 'Static Content Hosting: minħabba teknoloġiji aktar konvenjenti (inkluż il-fatt li hemm dokumentazzjoni dettaljata u database kbira ta' tweġibiet), dan l-approċċ sar saħansitra aktar sempliċi.

Bħala riżultat, l-implimentazzjoni ta 'numru ta' mudelli arkitettoniċi pjuttost kumplessi issa saret ħafna aktar sempliċi, li jfisser li huwa aħjar li tagħti ħarsa aktar mill-qrib lejha minn qabel. Jekk f'applikazzjoni ta 'għaxar snin waħda mis-soluzzjonijiet t'hawn fuq ġiet abbandunata minħabba l-ispiża għolja ta' implimentazzjoni u tħaddim, issa, f'applikazzjoni ġdida, jew wara refactoring, tista 'toħloq servizz li diġà jkun arkitettoniku kemm estensibbli ( f'termini ta' prestazzjoni) u lesti għal talbiet ġodda mill-klijenti (pereżempju, biex tiġi lokalizzata data personali).

U l-aktar importanti: jekk jogħġbok tużax dawn l-approċċi jekk għandek applikazzjoni sempliċi. Iva, huma sbieħ u interessanti, iżda għal sit bi żjara massima ta 'nies 100, ħafna drabi tista' tgħaddi minn monolitu klassiku (għall-inqas fuq barra, kollox ġewwa jista 'jinqasam f'moduli, eċċ.).

Sors: www.habr.com

Żid kumment