VÔi on iga Ônnetu ettevÔte monoliidiga oma moodi Ônnetu.
Dodo IS sĂŒsteemi arendamine algas samal ajal, kui Dodo Pizza Ă€ri â 2011. aastal. Aluseks oli idee Ă€ri protsesside tĂ€ielikust ja totaalsest digitaliseerimisest, ja , mis tekitas juba 2011. aastal palju kĂŒsimusi ja skeptitsismi. Kuid nĂŒĂŒd, juba 9 aastat, oleme liikunud sellistel radadel â oma tarkvara arendamisega, mis algas monoliidiga.
See artikkel on "vastus" kĂŒsimustele "Miks ĂŒmberehitada arhitektuuri ja teha selliseid ulatuslikke ja pikaajalisi muudatusi?" eelnevale artiklile . Alustan sellest, kuidas Dodo IS-i arendamine algas, milline oli algne arhitektuur, kuidas uued moodulid ilmusid ja milliste probleemide tĂ”ttu tuli lĂ€bi viia ulatuslikud muudatused.

Artiklite sari "Mis on Dodo IS?" rÀÀgib:
Varajane monoliit Dodo IS-is (2011-2015). (Sa oled siin)
.
Kliendi osa tee: fassaad andmebaasi kohal (2016-2017). (Töös...)
TÔeliste mikroteenuste ajalugu. (2018-2019). (Töös...)
Monoliidi lÔplik jagunemine ja arhitektuuri stabiliseerimine. (Töös...)
Algne arhitektuur
2011. aastal nÀgi Dodo IS arhitektuur vÀlja nii:

Esimene moodul arhitektuuris â tellimuse vastuvĂ”tt. Ări protsess oli jĂ€rgmine:
klient helistab pitsarestorani;
toru vÔtab vastu haldur;
vastuvÔtt tellimus telefonitsi;
samal ajal sisestab selle tellimuse vastuvĂ”tu liidesesse: arvesse vĂ”etakse kliendi teavet, tellimuse detailide andmeid ja kohaletoimetamise aadressi.Â
Infotehnoloogia sĂŒsteem nĂ€gi vĂ€lja umbes niiâŠ
Esimene versioon oktoobrist 2011:
Esimese tellimuse vastuvĂ”tu mooduli arendamise ressursid olid piiratud. Oli vaja teha palju, kiiresti ja vĂ€ikeses koosseisus. VĂ€ike koosseis â 2 arendajat, kes panid aluse kogu edasisele sĂŒsteemile.
Nende esimene lahendus mÀÀras tehnoloogia stackâi edasise saatuse:
Backend ASP.NET MVC-l, keel C#. Arendajad olid .NET-i spetsialistid, see stack oli neile tuttav ja meeldiv.
Frontend Bootstrapil ja JQuery-l: kasutajaliideste loomine isekirjutatud stiilide ja skriptidega.Â
Andmebaas MySQL: ilma litsentsikuludeta, lihtne kasutada.
Windows Serveri serverid, kuna .NET töötas ainult Windowsi all (Mono mehhanismist ei hakka rÀÀkima).
FĂŒĂŒsiliselt vĂ€ljendus see kĂ”ik hostimisettevĂ”tte 'dedikes'.Â
Tellimuse vastuvÔtmise rakenduse arhitektuur
Tollal rÀÀgiti juba mikroteenustest, samas kui SOA-d on kasutatud suurtes projektides umbes 5 aastat, nÀiteks WCF ilmus 2006. aastal. Kuid toona valiti usaldusvÀÀrne ja testitud lahendus.
Siin see on.

Asp.Net MVC â see on Razor, mis vormi vĂ”i kliendi pĂ€ringu pĂ”hjal genereerib serveris HTML-lehe renderdamisega. Kliendis kuvatakse seejĂ€rel CSS ja JS skriptidest teave ning vajadusel tehakse AJAX-pĂ€ringud lĂ€bi JQuery.
PÀringud serveris jÔuavad *Controller klassidesse, kus meetodis toimub töötlemine ja lÔpliku HTML-lehe genereerimine. Kontrollerid teevad pÀringud loogika kihile, mida nimetatakse *Services. Iga teenus vastas mingile Àri aspektile:
NĂ€iteks pakkus DepartmentStructureService teavet pitsakodade ja osakondade kohta. Osakond on grupi pitsakodade haldamine ĂŒhe frantsiisiga.
ReceivingOrdersService vÔttis vastu ja arvutas tellimuste koostise.
SmsService saatis SMS-e, kutsudes esile SMS-ide saatmise API-teenuseid.
Teenused töötlesid andmeid andmebaasist ja hoidsid Ă€ri loogikat. Igas teenuses oli ĂŒks vĂ”i mitu *Repository vastava nimetusega. Nendes sisaldusid pĂ€ringud andmebaasi salvestatud protseduuride ja kaardistamiskihtide kohta. Salvestatud protseduurides oli Ă€riloogikat, eriti palju neist, mis andsid vĂ€lja aruande andmed. ORM-i ei kasutatud, kĂ”ik toetusid kĂ€sitsi kirjutatud SQL-ile.Â
Samuti oli olemas domeenimudel ja ĂŒldised abiklassid, nĂ€iteks Order klass, mis hoidis tellimust. Seal oli samas ka abimees, mis muundas kuvamisteksti valitud valuuta alusel.
KÔike seda on vÔimalik kujutada jÀrgmise mudelina:

Tellimuse tee
KĂ€sitleme lihtsustatud esialgset tellimuse loomise teed.

Alguses oli sait staatiline. Seal olid hinnad, ja ĂŒleval oli telefoninumber koos tekstiga 'Tahad pitsat â helista numbrile ja telli.' Tellimuse jaoks on meil vaja rakendada lihtne voog:Â
Klient siseneb staatilisele saidile hindadega, valib tooted ja helistab numbrile, mis on veebilehel vÀlja toodud.
Klient nimetab tooted, mida ta soovib tellimusele lisada.
Mainib oma aadressi ja nime.
Operaator vÔtab tellimuse vastu.
Tellimus kuvatakse vastuvÔetud tellimuste liideses.
KĂ”ik algab menĂŒĂŒ kuvamisest. Sisse logitud operaator saab ĂŒhel hetkel vastu vĂ”tta ainult ĂŒhe tellimuse. SeetĂ”ttu vĂ”ib mustand-korv salvestuda tema sessioonis (kasutaja sessioon salvestatakse mĂ€llu). Seal on objekt Cart, kuhu kuuluvad tooted ja kliendi teave.
Klient nimetab toodet, operaator vajutab + toote kÔrval ja saadab serverisse pÀringu. Toote kohta tÔmmatakse andmed andmebaasist ja toote teave lisatakse korvi.

MĂ€rkus. Jah, siin ei pea toodet andmebaasest tooma, vaid seda saab edastada front-endist. Kuid selguse huvides nĂ€itasin ma just teed andmebaasi.Â
SeejĂ€rel sisestame kliendi aadressi ja nime.Â

Nupu âLoo tellimusâ vajutamisel:
Saadame pÀringu OrderController.SaveOrder().
Saame Cart'i sessioonist, seal on tooted vajalikes kogustes.
TĂ€iendame Cart'i kliendi teabega ja edastame selle ReceivingOrderService klassi AddOrder meetodisse, kus see salvestatakse andmebaasi.Â
Andmebaasis on tellimuse, tellimuse sisu ja kliendi tabelid ning need kÔik on omavahel seotud.
Tellimuse kuvamise liides kÀivitub ja tÔmbab vÀlja viimased tellimused ning kuvab need.
Uued moodulid
Tellimuse vastuvĂ”tt oli oluline ja vajalik. Pizza mĂŒĂŒmise Ă€ri ei saa toimida ilma tellimuste vastuvĂ”tmiseta. SeetĂ”ttu hakkas sĂŒsteem ajavahemikul 2012â2015 funktsionaalsust arendama. Sel ajal ilmus palju erinevaid sĂŒsteemi komponente, mida nimetame mooduliteks, vastandina teenuse vĂ”i toote mĂ”istetele.Â
Moodul on funktsioonide kogum, mis on ĂŒhendatud mingi ĂŒhise Ă€ri eesmĂ€rgiga. Samuti asuvad nad fĂŒĂŒsiliselt ĂŒhes rakenduses.
Mooduleid vĂ”ib nimetada sĂŒsteemi plokkideks. NĂ€iteks vĂ”ivad need olla aruande moodul, administreerimise liidese rakendus, , autoriseerimine. Need on kĂ”ik erinevad liidesed kasutaja jaoks, mĂ”nedel on isegi erinevad visuaalsed stiilid. KĂ”ik see jÀÀb ĂŒhe rakenduse, ĂŒhe töötava protsessi raamidesse.Â
Tehniliselt olid moodulid vormistatud kui Area (see idee on isegi jÀÀnud ). Seal olid eraldi failid front-endi, mudelite ja ka oma kontrollereid. LĂ”puks töötas sĂŒsteem vĂ€lja nii...

...niimoodi:

MÔned moodulid on realiseeritud eraldi veebisaitidena (tÀidetav projekt), tÀielikult erilise funktsionaalsuse tÔttu ja osaliselt osaliselt, kuna arendustöö oli eraldatud ja rohkem keskendunud. Need on:
Veebisait â veebisaidist dodopizza.ru.
Export: raportide eksportimine Dodo IS-ist 1C-le.Â
Isiklik â töötaja isiklik kabinet. See on eraldi arendatud ning sellel on oma sisenemispunkt ja eraldi disain.
fs â projekt staatilise sisu majutamiseks. Hiljem sellega lĂ”petati ja kogu staatika viidud Akamai CDN-ile.Â
ĂlejÀÀnud plokid asusid BackOffice rakenduses.Â

Nimede selgitus:
Cashier â restorani kassasĂŒsteem.
ShiftManager â liideseid rollile 'Vahtkonna juht': operatiivne statistika pitsarestorani mĂŒĂŒkidest, vĂ”imalus lisada tooteid musta nimekirja, muuta tellimust.
OfficeManager â liideseid rollidele 'Pitsarestorani juht' ja 'Frantsiisi andja'. Siin on koondatud funktsioonid pitsarestorani seadistamiseks, boonuskampaaniate haldamiseks, töötajate vastuvĂ”tmiseks ja töötamiseks, aruandeks.
PublicScreens â liideseid televisioonidele ja tahvelarvutitele, mis asuvad pitsarestoranides. Televisioonidel kuvatakse menĂŒĂŒ, reklaamiteave, tellimuse staatus vĂ€ljakuulutamise hetkel.Â
Nad kasutasid ĂŒldist teenuste kihti, ĂŒldist domeeniklasside plokki Dodo.Core, samuti ĂŒhist andmebaasi. MĂ”nikord viidi nad suunamiste kaudu ĂŒksteisega kokku. Sealhulgas pÀÀsesid ĂŒhistele teenustele ka eraldi veebisaidid, nagu dodopizza.ru vĂ”i personal.dodopizza.ru.
Uute moodulite ilmnemisel pĂŒĂŒti maksimaalselt taaskasutada juba loodud teenuste, salvestatud protseduuride ja andmebaasi tabelite koodi.Â
Et paremini mĂ”ista sĂŒsteemis loodud moodulite ulatust, on siin 2012. aasta arengukava skeem:

Aastaks 2015 oli kÔik skeemil ja isegi rohkem tootmises.
Tellimuse vastuvÔtt kasvas eraldi Kontaktikeskuseks, kus tellimust vÔtab vastu operaator.
Ilmusid avalikud ekraanid menĂŒĂŒ ja teabe kuvamiseks, mis asusid pitsarestoranides.
Köögis on moodul, mis automaatselt esitab hÀÀlsÔnumi 'Uus pitsal' uue tellimuse saabumisel ja printib kauba saadetise kullerile. See lihtsustab köögiprotsesse oluliselt, vÔimaldades töötajatel mitte hajuda paljude lihtsate toimingute peale.
Kohaletoimetamise plokk muutus eraldi Kohaletoimetamise Kassaks, kus tellimus anti kullerile, kes oli eelnevalt vahetusse lĂ€inud. Tema tööaeg arvestati palga mÀÀramiseks.Â
Aastatel 2012 kuni 2015 tekkis rohkem kui 10 arendajat, avati 35 pitsarestorani, levis sĂŒsteem Rumeenias ning valmistati ette kohtade avamine Ameerikas. Arendajad ei tegele enam kĂ”igi ĂŒlesannetega, vaid jagunevad meeskondadesse, millest igaĂŒks spetsialiseerub oma sĂŒsteemi osale.Â
Probleemid
Sealhulgas arhitektuuri tÔttu (kuid mitte ainult).
Kaos andmebaasis
Ăks andmebaas â see on mugav. Sellega saab saavutada ĂŒhtsuse, kasutades relatsiooniliste andmebaasidega integreeritud tööriistu. Töö selle kallal on tuttav ja mugav, eriti kui seal on vĂ€he tabeleid ja andmeid.
Kuid nelja aasta jooksul arenduses oli andmebaasis umbes 600 tabelit, 1500 salvestatud protseduuri, milles paljus oli ka loogika. Kahjuks ei too salvestatud protseduurid MySQL-i kasutamisel eriliselt eeliseid. Need ei ole andmebaasi poolt vahemÀlus hoitud ning loogika salvestamine keerustab arendust ja silumist. Koodi taaskasutamine on samuti keeruline.
Paljudel tabelitel puudusid sobivad indeksid, kuid mĂ”nes oli vastupidi liiga palju indekseid, mis raskendas lisamist. Ămber tuli teha umbes 20 tabelit â tellimuse loomise tehing vĂ”is vĂ”tta aega umbes 3-5 sekundit.Â
Andmed tabelites ei olnud alati kĂ”ige sobivamas vormis. MĂ”nes kohas tuli teha denormaliseerimist. Ăks osa regulaarselt saadud andmetest oli veerul XML-struktuuri kujul, see pikendas tĂ€itmise aega, venitas pĂ€ringuid ja keerustas arendust.
Ăksikutele tabelitele tehti vĂ€ga mitmekesiseid pĂ€ringuid. Eriti kannatasid populaarsed tabelid, nagu eelmainitud tabel orders vĂ”i tabel pizzeria. Neid kasutati köögis operatiivsete liideste ja analĂŒĂŒsi esitamiseks. Sellest pöördus ka veebileht (), kuhu vĂ”is igal ajal ootamatult tulla palju pĂ€ringuid.Â
Andmed ei olnud agaratiivsed ja palju arvutusi toimus jooksvalt andmebaasi vahendusel. See pĂ”hjustas tarbetuid arvutusi ja lisakoormust.Â
Tihti liikus kood andmebaasi siis, kui tal ei oleks seda teha tohtinud. Kusagil puudusid bulk-tegevused, kusagil oleks pidanud ĂŒhe pĂ€ringu jagama mitmeks lĂ€bi koodi, et kiirus ja usaldusvÀÀrsus tĂ”usta.Â
Seotuse ja segaduse allikad koodis
Moodulid, mis pidid vastutama oma Ă€rivaldkonna eest, ei tĂ€itnud seda Ă”igesti.. MĂ”nedel neist olid rollide funktsioonide dubleerimised. NĂ€iteks kohalik turundaja, kes vastutas oma linna turundustegevuse eest, pidi kasutama nii âAdminiâ liidest (aktsiate seadistamiseks) kui ka âKontori Juhiâ liidest (aktsiate mĂ”ju jĂ€lgimiseks Ă€ritegevusele). Loomulikult kasutasid mĂ”lemad moodulid sama teenust, mis töötas boonuskampaaniatega.
Teenuseid (klassi ĂŒhes suures monoliitses projektis) vĂ”idi omavahel kutsuda, et oma andmeid rikastada.
Mudelklassidega, mis andmeid salvestavad, tööd tehti erineval viisil. Kusagil olid konstruktoreid, mille kaudu sai mĂ€rkida kohustuslikud vĂ€ljad. Kusagil tehti seda avalike omaduste kaudu. Loomulikult oli andmete saamine ja töötlemine andmebaasist mitmekesine.Â
Loogika oli kas kontrollerites vĂ”i teenuseklassides.Â
Need tunduvad vĂ€ikesed probleemid, kuid need aeglustasid arendust ja vĂ€hendasid kvaliteeti, mis viis ebastabiilsuse ja vigade tekkimiseni.Â
Suure arenduse keerukus
TĂ”sised raskused tekkisid ka arenduse endaga. Oli vaja teha erinevaid sĂŒsteemi komponente, ning seda paralleelselt. Iga komponendi vajaduste mahutamine ĂŒhte koodi muutus ĂŒha raskemaks. Ei olnud lihtne kokku leppida ja rahuldada kĂ”iki komponente ĂŒheaegselt. Lisaks sellele tulid tehnoloogilistele piirangutele, eriti andmebaasi ja frontendi osas. Pidi loobuma JQueryst kĂ”rgema taseme raamistikute poole, eriti klienditeenuste (veebisaidi) osas.
MĂ”nes sĂŒsteemi osas vĂ”iksid olla kasutusel andmebaasid, mis sobivad selleks paremini. NĂ€iteks hiljem oli meil pretsedent ĂŒleminek Rediselt CosmosDBle tellimiskorvi salvestamiseks.Â
Komandod ja arendajad, kes tegelesid oma valdkonnaga, soovisid selgelt suuremat iseseisvust oma teenustes, nii arenduse kui ka vĂ€lja laskmise osas. Ăhendamisprobleemid, probleemid vĂ€ljaannetes. Kui 5 arendaja jaoks ei ole see probleem eriti oluline, siis 10 puhul, ja veelgi enam oodatava kasvu korral, oleks kĂ”ik tĂ”sisemaks muutunud. Ja ees oli oodata mobiilirakenduse arendust (see kĂ€ivitus 2017. aastal, ja 2018. aastal toimus ).Â
Erinevad sĂŒsteemi osad vajavad erinevaid stabiilsuse nĂ€itajaid., kuid sĂŒsteemi tugeva seotuse tĂ”ttu ei suutnud me seda tagada. Uue funktsiooni vĂ€ljatöötamise viga adminpaneelis vĂ”is tĂ”epoolest mĂ”jutada veebis tellimise protsessi, kuna kood on ĂŒhine ja taaskasutatav, andmebaas ja andmed samuti ĂŒhtsed.
TĂ”enĂ€oliselt oleks sellise monoliitse-modulaarse arhitektuuri raames saanud vĂ€ltida neid vigu ja probleeme: vastutuse jagamine, koodi ja andmebaasi refaktoreerimine, kihtide selge eristamine, kvaliteedi jĂ€lgimine iga pĂ€ev. Kuid valitud arhitektuurilised lahendused ja fookus sĂŒsteemi funktsionaalsuse kiirel laiendamisel viisid probleemideni stabiilsuse osas.
Kuidas blogi Vaimu vÀgi viis kassade tÔusule restoranides
Kui pitsarestoranide (ja koormuse) kasv oleks jĂ€tkunud samas tempos, oleks mĂ”ne aja pĂ€rast langused olnud nii suured, et sĂŒsteem ei tĂ”useks enam. HĂ€sti illustreerib probleeme, millega hakkasime silmitsi seisma 2015. aastal, ĂŒks selline lugu.Â
Blogis ââ oli vidin, mis nĂ€itas kogu ketti aastaseid tulude andmeid. Vidin pöördus avaliku API Dodo poole, mis pakub neid andmeid. Praegu on see statistika saadaval . Vidin kuvati igal lehel ja tegi pĂ€ringuid iga 20 sekundi tagant. PĂ€ring suundus api.dodopizza.ru-le ja kĂŒsis:
pitsarestoranide arvu kettis;
kogu keti tulu aasta algusest;
tulu tÀna.
Tulu statistika pĂ€ring suundus otse andmebaasi ja hakkas kĂŒsima tellimuste andmeid, agregatsioon toimus reaalajas ja esitati summa.Â
Sama tellimuste tabeli lÀbisid ka restoranide kassad, laadides alla tÀna vÔetud tellimuste loendi ja lisades sellesse uusi tellimusi. Kassad tegid pÀringuid iga 5 sekundi tagant vÔi siis, kui lehte uuendati.
Skeem nÀgi vÀlja selline:

Ăks sĂŒgis, Fedor OvÄinnikov kirjutas oma blogis pika ja populaarse artikli. Blogisse tuli vĂ€ga palju inimesi ja nad hakkasid kĂ”ike hoolikalt lugema. Seni, kuni iga kĂŒlastaja luges artiklit, töötas tulu vidin korralikult ja kĂŒsis API-lt iga 20 sekundi jĂ€rel.
API kutsus salvestatud protseduuri, et arvutada kĂ”igi selle aasta tellimuste kogusumma kĂ”igis ketis olevates pitsakodades. Agregeerimine toimus orders tabelis, mis on vĂ€ga populaarne. KĂ”ik avatud restoranide kassad kasutasid seda. Kassad lakkasid töötamast, tellimusi ei vĂ”etud vastu. Samuti ei vĂ”etud tellimusi vastu veebisaidilt, need ei ilmunud jĂ€lgimisĂŒsteemis, vahetuse juht ei saanud neid oma liideses nĂ€ha.Â
See pole ainus lugu. 2015. aasta sĂŒgisel oli igal reedel sĂŒsteemile kriitiline koormus. Korduvalt sulgesime avaliku API, ja korra pidime isegi veebisaidi vĂ€lja lĂŒlitama, kuna ei aidanud enam miski. Oli isegi teenuste nimekiri, millises jĂ€rjekorras teenuseid korraliku koormuse korral vĂ€lja lĂŒlitada.
Sellest ajast algab meie vĂ”itlus koormustega ja sĂŒsteemi stabiliseerimine (2015. aasta sĂŒgisest kuni 2018. aasta sĂŒgiseni). Just siis juhtus "". Edasi juhtus mĂ”nikord vaid ebaĂ”nnestumisi, mĂ”ned olid piisavalt tundlikud, kuid ĂŒldiselt on praegu ebastabiilsuse perioodi vĂ”imalik pidada möödunuks.
Ări kiire kasv
Miks ei saanud "kÔike kohe hÀsti teha"? Piisab, kui vaadata jÀrgmisi graafikuid.

Samuti avati 2014-2015 Rumeenias ja valmistuti avama Ameerikas.
Ketas kasvas vĂ€ga kiiresti, uusi riike avati, uusi pitsakohta vorme ilmus, nĂ€iteks avati pitsakoda toiduturgudel. KĂ”ik see nĂ”udis erilist tĂ€helepanu Dodo IS funktsioonide laiendamisele. Ilma nende funktsioonideta, köögis jĂ€lgimist, toiduainete ja kadude arvestuseta sĂŒsteemis, tellimuste esitamine toiduturu saalis, ei arutaks me praegu âĂ”igeâ arhitektuuri ja âĂ”igeâ lĂ€henemise ĂŒle arenduses.
Samuti oli 2014. aasta kriis takistuseks arhitektuuri Ôigeaegsel lÀbivaatamisel ja tehniliste probleemide tÀhelepanu juhtimisel. Sellised asjad ÔÔnestavad meeskondade kasvuvÔimet, eriti noore Àri, nagu Dodo Pizza.
Kiired lahendused, mis aitasid
Probleemid nĂ”udsid lahendust. Ăldiselt vĂ”ib lahendused jagada kahte rĂŒhma:
Kiired, mis kustutavad tule ja annavad natuke turvavarustust ning kasu meie ajale muudatuste tegemiseks.
SĂŒsteemsed ja seetĂ”ttu pikad. Mitmete moodulite ĂŒmberkujundamine, monoliitsete arhitektuuride jagamine eraldi teenusteks (enamik neist on pigem makroteenused kui mikroteenused ja sellest on juba ).Â
Kiirete muudatuste kuiv loend on jÀrgmine:
Mastaabi suurendamise meistribaas
Muidugi on esimene samm koormuste vastu vÔitlemisel serveri vÔimsuse suurendamine. Seda tehti meistribaasi ja veebiserverite jaoks. Kahjuks on see vÔimalik ainult teatud piirini, pÀrast mida muutub see liiga kulukaks.
Alates 2014. aastast kolisime Azure'i, sellest rÀÀkisime ka siis artiklis ââ. Kuid pĂ€rast serverite suurendamise seeriat jĂ”esĂŒsteemi puhul jĂ”udsime kuludesse.Â
Lugemise replikad
Replikad loodi kahte tĂŒĂŒpi:
ReadReplica pÀringute jaoks teabelehtedele. See on mÔeldud lugemiseks, mis puudutab teabeallikaid, nagu linnad, tÀnavad, pitsakohad, tooted (aeglaselt muutuva domeeniga), ning nendes liidestes, kus on lubatud vÀike viivitus. Neid replikasid oli 2 ja me tagasime nende kÀttesaadavuse samamoodi nagu meistrit.
ReadReplica raportite pĂ€ringute jaoks. Sellel andmebaasil oli madalam kĂ€ttesaadavus, kuid see sisaldas kĂ”iki aruandeid. Olgu, neil on rasked pĂ€ringud tohutute andmete ĂŒlekalkuluste jaoks, kuid need ei mĂ”juta pĂ”hivaramu ja operatiivseid liideseid.Â
Kaasid koodis
Koodis ei olnud kuhugi kaasu (ĂŒldse). See pĂ”hjustas tĂ€iendavaid, mitte alati vajalikke pĂ€ringuid koormatud andmebaasi. KĂ€esolevalt olid kaasu nii mĂ€lus kui ka vĂ€likausiteenuses, see oli Redis. KĂ”ik aegunud seadmed olid ajaliselt, seaded mÀÀrati koodis.
Mitu serverit tahkete sĂŒsteemide jaoks
Rakenduse tahke sĂŒsteemi lĂ€ks ka mastaapimiseks, et taluda suurenenud koormusi. Ăks IIS-server tuli muutuda klastriks. Me viisime mĂ€lust ĂŒle RedisCache'i, mis vĂ”imaldas luua mitu serverit, mis seisavad tavalise koormuse tasakaalustaja taga, kasutades round robin'i. Alguses kasutati sama Redis, mis oli kaausideks, hiljem jagati see mitmeks.Â
KokkuvĂ”ttes muutus arhitektuur keerulisemaksâŠ

âŠkuid osa pingest Ă”nnestus leevendada.
Ja siis tuli ĂŒle vaadata koormatud komponente, millega me ka tegelesime. Sellest rÀÀgime jĂ€rgmises osas.
Allikas: habr.com
