Iga ebaÔnnelik ettevÔte on ebaÔnnelik omal moel.
Dodo IS sĂŒsteemi arendamine algas kohe, kui Dodo Pizza Ă€ri â 2011. aastal. Aluseks oli idee tĂ€iesti ja absoluutselt digitaliseerida Ă€riprotsessid, , mis tekitas juba 2011. aastal palju kĂŒsimusi ja skeptitsismi. Kuid nĂŒĂŒdseks, 9 aastat hiljem, jĂ€rgime seda teed â oma arendusega, mis algas monoliidist.
See artikkel on "vastus" kĂŒsimusele "Miks kirjutada arhitektuur ĂŒmber ja teha nii suured ja pikaajalised muudatused?" eelmisele artiklile Alustan sellega, kuidas Dodo IS arendus algas, milline oli algne arhitektuur, kuidas ilmusid uued moodulid ja milliste probleemide tĂ”ttu tuli teha ulatuslikke muudatusi.

Artiklite seeria âMis on Dodo IS?â rÀÀgib:
Varane monoliit Dodo IS-is (2011-2015). (Oled siin)
.
Kliendiosakonna tee: fassaad andmebaasi kohal (2016-2017). (TöösâŠ)
TĂ”eliste mikroteenuste ajalugu. (2018-2019). (TöösâŠ)
Monoliidi lĂ”plik jagamine ja arhitektuuri stabiliseerimine. (TöösâŠ)
Algne arhitektuur
2011. aastal nÀgi Dodo IS arhitektuur vÀlja selline:

Esimene moodul arhitektuuris â tellimuse vastuvĂ”tt. Ări protsess oli jĂ€rgmine:
klient helistab pitsarestorani;
toru vÔtab vastu juht;
vÔtab telefoni teel tellimuse;
samal ajal sisestatakse see tellimuste vastuvĂ”tu liideses: arvesse vĂ”etakse kliendi teavet, tellimuse ĂŒksikasju ja kohaletoimetamise aadressi.Â
Infotehnoloogia sĂŒsteem nĂ€gi vĂ€lja umbes niiâŠ
Esimene versioon oktoobrist 2011:
Esimese tellimuste vastuvĂ”tu mooduli arendamiseks olid ressursid piiratud. Pidi kiiresti palju tegema ja vĂ€ikese meeskonnaga. VĂ€ike meeskond â 2 arendajat, kes asetasid kogu tulevase sĂŒsteemi aluse.
Nende esimene lahendus mÀÀras tehnoloogia virna edasise saatuse:
Backend ASP.NET MVC-s, keel C#. Arendajad olid .NET-i spetsialistid, see virn oli neile tuttav ja meeldiv.
Frontend Bootstrap'i ja JQuery peal: kasutajaliidesed omatehtud stiilide ja skriptidega.Â
Andmebaas MySQL: ilma litsentsikuludeta, lihtne kasutada.
Serverid Windows Serveril, kuna .NET-i sai tol ajal kasutada ainult Windowsi all (Mono arutelu jÀtame vÀlja).
FĂŒĂŒsiliselt vĂ€ljendus see "dedikeeritud serveris hostimisettevĂ”ttes".Â
Tellimuste vastuvÔtu rakenduse arhitektuur
Siis rÀÀgiti juba mikroteenustest, samas kui SOA-d on suurtel projektidel kasutatud umbes 5 aastat, nÀiteks WCF tuli vÀlja 2006. aastal. Kuid siis valiti usaldusvÀÀrne ja tÔestatud lahendus.
Siin see on.

Asp.Net MVC on Razor, mis genereerib serveri poolt vÀrske HTML-lehe pÀringu alusel forma vÔi kliendi poolelt. Kliendis kasutavad juba CSS ja JS-skriptid teabe kuvamiseks ning vajadusel teevad nad AJAX-pÀringuid lÀbi JQuery.
PÀringud jÔuavad serveris klassidesse *Controller, kus meetodis toimub töötlemine ja lÔpp-HTML-lehe genereerimine. Kontrollereid kasutatakse loogikatasemele, mida nimetatakse *Services. Iga teenus vastas mÔnele Àri aspektile:
NĂ€iteks DepartmentStructureService pakkus teavet pitsakodade ja osakondade kohta. Osakond on grupp pitsakodasid, mida juhib ĂŒks frantsiisiomanik.
ReceivingOrdersService vÔttis vastu ja arvestas tellimuste sisu.
SmsService saatis SMS-e, kutsudes sms-saatmise API-teenuseid.
Teenused töötlesid andmeid andmebaasist, hoidsid Ă€riloogikat. Igas teenuses oli ĂŒks vĂ”i mitu *Repository vastava nimega. Neis olid juba pĂ€ringud salvestatud protseduuridele andmebaasis ja maappeeringu kiht. Salvestatud protseduurides oli Ă€riloogika, eriti palju neist, mis vĂ€ljastasid aruandeandmeid. ORM-i ei kasutatud, kĂ”ik usaldasid kĂ€sitsi kirjutatud SQL-i.Â
Veel oli olemas domeenimudeli ja ĂŒldiste abiklasside kiht, nĂ€iteks klass Order, mis hoidis tellimust. Samuti, selles kihis, oli abi teksti kuvamise muutmiseks valitud valuuta jĂ€rgi.
Kogu seda saab esitada sellise mudelina:

Tellimuse tee
Vaatame lihtsustatud algset teed sellise tellimuse loomiseks.

Alguses oli sait staatiline. Seal olid hinnad, ĂŒleval oli telefoninumber ja ĂŒleskutse âSoovid pitsat â helista numbrile ja telliâ. Tellimuse jaoks peame rakendama lihtsa voolu:Â
Klient siseneb staatilisele veebisaidile hindadega, valib tooted ja helistab numbrile, mis on saidil mÀrgitud.
Klient nimetab tooted, mida ta soovib tellimusele lisada.
Nimetab oma aadressi ja nime.
Operaator vÔtab tellimuse vastu.
Tellimus kuvatakse vastuvÔetud tellimuste liideses.
KĂ”ik algab menĂŒĂŒ kuvamisest. Sisselogitud operaator aktsepteerib samal ajal vaid ĂŒhte tellimust. SeetĂ”ttu vĂ”ib eelnĂ”ukorv olla tema sessioonis (kasutaja seanss salvestatakse mĂ€llu). Seal on objekt Cart, mis sisaldab tooteid ja klientide teavet.
Klient nimetab tootega, operaator klÔpsab + toote kÔrval, ja serverile saadetakse pÀring. Toote kohta tÔmmatakse andmed andmebaasist ja lisatakse tooteinfo korvi.

MĂ€rkus. Jah, siit ei ole tingimata vajalik toodet andmebaasist vĂ€lja tĂ”mmata, vaid seda vĂ”ib edastada frontendist. Kuid selguse huvides nĂ€itasin just andmebaasist saadud teed.Â
SeejĂ€rel sisestame kliendi aadressi ja nime.Â

Nupu âLoo tellimusâ vajutamisel:
Saadame pÀringu OrderController.SaveOrder().
Saame Cart sessioonist, seal on tooted soovitud koguses.
TĂ€iendame Cart'i kliendiinfoga ja edastame ReceiveOrderService klassi AddOrder meetodisse, kus see salvestatakse andmebaasi.Â
Andmebaasis on tabelid tellimuse, tellimuse koostisosade ja kliendi kohta ning need kÔik on omavahel seotud.
Tellimuse kuvamise liides kÀib ja tÔmbab viimased tellimused vÀlja ning kuvab need.
Uued moodulid
Tellimuste vastuvĂ”tt oli oluline ja vajalik. Pizza mĂŒĂŒgiĂ€ri ei saa toimida, kui tellimuste vastuvĂ”ttu pole. SeetĂ”ttu hakkas sĂŒsteem funktsioone koguma â umbes aastatel 2012 kuni 2015. Selles ajavahemikus tekkis palju erinevaid sĂŒsteemi blokke, mida ma hakkan nimetama mooduliteks, vastandina teenuse vĂ”i toote mĂ”istele.Â
Moodul on funktsioonide kogum, mis on ĂŒhendatud mingi ĂŒhise Ă€rieesmĂ€rgiga. Samal ajal asuvad nad fĂŒĂŒsiliselt ĂŒhes ja samas rakenduses.
Mooduleid vĂ”ib nimetada sĂŒsteemi blokiks. NĂ€iteks on olemas aruande moodul, haldustĂ€idise liidese , autoriseerimine. Need kĂ”ik on erinevad kasutajaliidesed, mĂ”nedel on isegi erinevad visuaalsed stiilid. Samas on need kĂ”ik ĂŒhe rakenduse ja ĂŒhe tööprotsessi raames.Â
Tehniliselt kujundati moodulid kui Area (selline idee on isegi sĂ€ilinud ). Seal olid eraldi failid frontend'i, mudelite ja ka oma kontrollklassi jaoks. Tulemuseks oli sĂŒsteemi muutumine sellisestâŠ

âŠselliseks:

MÔned moodulid on ellu viidud eraldi saitidega (executable project), kuna need tÀidavad vÀga erilisi funktsioone ja osaliselt seetÔttu, et nende arendamine oli paar korda eraldi, enamasti fookustatud. Need on:
Veebileht. â dodobizza.ru saidist.
Export: raportite eksportimine Dodo IS-st 1C-le.Â
Isiklik â töötaja isiklik konto. See on arendatud eraldi ning omab oma sisenemispunkti ja eraldi disaini.
fs â projekt staatika hostimiseks. Hiljem loobusime sellest, viies kogu staatika CDN Akamai-le.Â
ĂlejÀÀnud plokid olid rakenduses BackOffice.Â

Selgitus nimede kohta:
Cashier â restorani kassasĂŒsteem.
ShiftManager â liideseid rollile "Vahtkonnamanager": operatiivne statistika pitsarestorani mĂŒĂŒkidest, vĂ”imalus tooteid musta nimekirja lisada, tellimuse muutmine.
OfficeManager â liideseid rollile "Pitsarestorani juht" ja "Frantsiisi valdaja". Siin on koondatud funktsioonid pitsarestorani seadistamiseks, selle lojaalsusprogrammide korraldamiseks, töötajate vastuvĂ”tmiseks ja nendega töötamiseks, aruannete haldamiseks.
PublicScreens â liideseid televiisoritele ja tahvelarvutitele, mis on paigaldatud pitsarestoranides. Televisioonidel kuvatakse menĂŒĂŒ, reklaamteave ja tellimuse staatus vĂ€ljastamisel.Â
Nad kasutasid ĂŒhist teenuste kihti, ĂŒhte domeenide klasside plokki Dodo.Core ning ka ĂŒhist andmebaasi. MĂ”nikord vĂ”isid nad vahetada teavet ĂŒksteisega, sealhulgas kasutasid eraldi saidid, nagu dodopizza.ru vĂ”i personal.dodopizza.ru, ka ĂŒhiseid teenuseid.
Uute moodulite ilmumise korral pĂŒĂŒdsime maksimaalselt taaskasutada juba loodud teenuste koodi, salvestatud protseduure ja andmebaasi tabeleid.Â
Moodulite ulatuse paremaks mÔistmiseks on siin 2012. aasta plaanide arenguskeem:

Aastaks 2015 oli kÔik skeemil ja isegi rohkem tootmises.
Tellimise vastuvÔtt on kasvanud eraldi Kontaktikeskuse plokiks, kus tellimust vÔtab vastu operaator.
Ilmusid avalikud ekraanid menĂŒĂŒ ja teabega, mis ripuvad pitsakohvikutes.
Köögis on moodul, mis automaatselt edastab hÀÀlsÔnumi 'Uus pitsa', kui uus tellimus saabub, ning printib saatjale saatekirja. See lihtsustab oluliselt köögi protsesse, vÔimaldades töötajatel mitte hÀirida end lihtsate toimingutega.
Transportiblokk muutus eraldi transportkassaks, kus tellimus ĂŒle anti kullerile, kes eelnevalt vahetusse asus. Tema tööaeg arvestati palga mÀÀramiseks.Â
Ajavahemikul 2012â2015 tuli juurde ĂŒle 10 arendaja, avati 35 pitsakohvikut, sĂŒsteem laiendati Rumeeniasse ja valmistati ette avamiseks USA-s. Arendajad ei tegelenud enam kĂ”igi ĂŒlesannetega, vaid jagunesid meeskondadesse, kus igaĂŒks spetsialiseerus oma sĂŒsteemi osale.Â
Probleemid
Sealhulgas arhitektuuri tÔttu (aga mitte ainult).
Kaos andmebaasis
Ăks andmebaas on mugav. Seal saab saavutada ĂŒhtsust, kasutades relatsiooniliste andmebaaside sisse ehitatud vahendeid. Töö sellega on tuttav ja mugav, eriti kui andmebaasis on vĂ€he tabeleid ja andmeid.
Kuid 4 aastaga arendamisel oli andmebaasis umbes 600 tabelit, 1500 salvestatud protseduuri, milles paljudel oli ka loogika. Kahjuks ei paku salvestatud protseduurid MySQL-iga töötamisel erilisi eeliseid. Need ei salvestu andmebaasi vahemÀllu ja loogika hoidmine neis keerustab arendust ja tÔrkeotsingut. Koodi taaskasutamine on samuti keeruline.
Paljudes tabelites ei olnud sobivaid indekseid., kus oli liiga palju indekseid, mis raskendas lisamist. Oli vaja modifitseerida umbes 20 tabelit â tellimuse loomise tehing vĂ”is kesta umbes 3-5 sekundit.Â
Andmed tabelites ei olnud alati kÔige sobivamas vormis.. Kusagil oli vaja teha denormaliseerimist. Osa regulaarselt saadud andmeid oli veergudes XML-struktuurina, mis pikendas tÀitmise aega, pidas pikemaid pÀringuid ja raskendas arendust.
Ăksikutele tabelitele tehti vĂ€ga ebahomoogeenseid pĂ€ringuid.. Eriti kannatasid populaarsed tabelid, nagu eelmainitud tabel orders vĂ”i tabel pizzeria. Neid kasutati köögis operatiivsete liideste vĂ€ljundiks, analĂŒĂŒtikaks. Veel pöördus nende poole veebisait (), kuhu vĂ”is igal ajal peale tulla ootamatult palju pĂ€ringuid.Â
Andmed ei olnud aggregeeritud ja palju arvutusi toimus lennu peal andmebaasi vahenditega. See tekitas liigseid arvutusi ja lisakoormust.Â
Kood kĂ€is tihti andmebaasis siis, kui tal ei oleks olnud seda teha. Kusagil puudusid bulk-operatsioonid, kusagil tuli ĂŒks pĂ€ring jagada mitmeks, et kiirus ja usaldusvÀÀrsus tĂ”useksid.Â
Seotust ja segadust koodis
Modulid, mis pidanuks vastutama oma Ă€riosa eest, ei tĂ€itnud oma ĂŒlesandeid Ă”igesti. MĂ”ned neist dubleerivad funktsioone rollide osas. NĂ€iteks kohalik turundaja, kes vastutab oma linna vĂ”rgustiku turundustegevuse eest, pidi kasutama nii "Admini" liidest (kampaaniate seadistamiseks) kui ka "Kontori Juhi" liidest (kampaaniate mĂ”ju jĂ€lgimiseks Ă€ri jaoks). Loomulikult kasutasid mĂ”lemad moodulid seesama teenus, mis töötas boonuste kampaaniatega.
Teenused (klassid ĂŒhe monoliitse suurprojekti raames) vĂ”isid ĂŒksteist kutsuda, et rikastada oma andmeid.
Klassidega mudelid, mis andmeid salvestavad, koodis töötamine kĂ€is erinevalt. Kusagil olid konstruktorid, mille kaudu sai mÀÀrata nĂ”utavad vĂ€ljad. MĂ”nes kohas tehti seda avalike omaduste kaudu. Loomulikult oli andmete saamine ja töötlemine andmebaasist mitmekesine.Â
Loogika oli kas kontrollerites vĂ”i teenuseklassides.Â
Need vĂ”ivad tunduda ebaolulised probleemid, kuid need takistasid arendust oluliselt ja halvasid kvaliteeti, mis tĂ”i kaasa ebastabiilsuse ja vead.Â
Suurte arenduste keerukus
Raskused tekkisid ka arenduse enda juures. Oli vaja luua erinevaid sĂŒsteemiblokke ja veel parelleelselt. Iga komponendi vajaduste mahutamine ĂŒhte koodi muutus ĂŒha keerulisemaks. Ei olnud lihtsalt kokku leppida ja kĂ”igile komponentidele ĂŒheaegselt meeldida. Sellele lisandusid tehnoloogilised piirangud, eriti andmebaasi ja frontendi osas. Oli vaja loobuda JQuery'st kĂ”rgematasemelistest raamistikest, eriti kliendiserviidest (veebileht).
MĂ”nes sĂŒsteemi osas oleks pidanud kasutama andmebaase, mis sobivad sellele paremini. NĂ€iteks hiljem oli meil pretsedent, kus ĂŒleminekul Rediselt CosmosDB'le tellimuse korvi hoidmiseks.Â
Arendajad ja arendajad, kes töötavad oma valdkonnas, soovisid selgelt suuremat iseseisvust oma teenuste osas, nii arendamise kui ka vĂ€ljalaskmise osas. Ăhendamise konfliktid, probleemid vĂ€ljalaskmise ajal. Kui 5 arendaja jaoks ei ole see probleem oluline, siis 10 puhul, rÀÀkimata plaanitud kasvust, muutub kĂ”ik tĂ”sisemaks. Ja ees ootas mobiilirakenduse arendamine (see algas 2017. aastal ja 2018. aastal oli ).Â
SĂŒsteemi erinevad osad nĂ”udsid erinevaid stabiilsuse nĂ€itajaid, kuid sĂŒsteemi tugeva seotuse tĂ”ttu ei suutnud me seda tagada. Uue funktsiooni arendamise viga administraatori paneelis vĂ”is tĂ€iesti halba mĂ”ju avaldada veebisaidi tellimuste vastuvĂ”tmisel, kuna kood on ĂŒhine ja taaskasutatav, andmebaas ja andmed on samuti ĂŒhtsed.
TĂ”enĂ€oliselt oleks ka sellise monoliitne-moodulaarse arhitektuuri raames neid vigu ja probleeme vĂ€ltida: vastutuse jagamine, nii koodi kui ka andmebaasi refaktooring, kihtide selge eraldamine, iga pĂ€ev kvaliteedi jĂ€lgimine. Kuid valitud arhitektuuriotsused ja keskendumine sĂŒsteemi funktsionaalsuse kiirele laienemisele viisid stabiilsuse probleemideni.
Kuidas blogi Silla jÔud pani restoranidesse kassad
Kui pitsakett (ja koormus) oleks kasvanud sama tempoga, siis mĂ”ne aja pĂ€rast oleks kukkumised olnud sellised, et sĂŒsteem ei tĂ”usenud enam ĂŒles. Hea illustratsioon problematikast, millega me 2015. aastal alguse saime, on selline lugu.Â
Blogis ââ oli vidin, mis nĂ€itas kogu vĂ”rgu aastakĂ€ibe andmeid. Vidin pöördus avaliku API poole, mille Dodo need andmed pakub. NĂŒĂŒd on see statistika saadaval . Vidin kuvati igal lehel ja tegi taotlusi igal 20 sekundi jĂ€rel. Taotlus lĂ€ks aadressile api.dodopizza.ru ja kĂŒsis:
pitsakettide arv vÔrkus;
kogu vÔrgu kÀive alates aastast;
kÀive tÀna.
Tuludestatistikate pĂ€ring lĂ€ks otse andmebaasi, alustades tellimuste andmete kogumist reaalajas ja arvutades kokku.Â
Sama tellimuste tabelisse said ka restoranide kassad, mis laadisid ĂŒles tĂ€naseks pĂ€evaks vastu vĂ”etud tellimuste loendi ning sinna lisandusid uued tellimused. Kassad tegid pĂ€ringuid iga 5 sekundi tagant vĂ”i lehe vĂ€rskendamisel.
Schema nÀgi vÀlja selline:

Ăks sĂŒgis, FĂ«dor OvÄinnikov kirjutas oma blogisse pika ja populaarse artikli. Blogisse tuli palju inimesi, kes hakkasid seda tĂ€helepanelikult lugema. Kui iga kĂŒlaline artiklit luges, töötas tulude vidin korralikult ja kĂŒsis API-d iga 20 sekundi tagant.
API kutsus vĂ€lja salvestatud protseduuri, et arvutada vĂ€lja kĂ”ikide tellimuste summa aasta algusest kĂ”igis ketipitsakohvikutes. Agregatsioon toimus tellimuste tabelis, mis oli vĂ€ga populaarne. Sellesse laadisid kĂ”ik avatud restoranide kassad selle aja jooksul. Kassad lakkasid vastamast, tellimusi ei vĂ”etud vastu. Samuti ei vĂ”etud tellimusi vastu veebilehelt, need ei ilmunud jĂ€lgijasse, vahetuse juhataja ei nĂ€inud neid oma liideses.Â
See ei ole ainus lugu. 2015. aasta sĂŒgiseks oli iga reede sĂŒsteemile kriitiline koormus. Mitmel korral pidime avaliku API vĂ€lja lĂŒlitama, ja korra pidime isegi saidi vĂ€lja lĂŒlitama, sest mitte miski ei aidanud. Oli isegi teenuste nimekiri, kus oli kirjas vĂ€ljalĂŒlitamise kord tĂ”siste koormuste korral.
Sellest ajast alates algas meie vĂ”itlus koormustega ja sĂŒsteemi stabiliseerimise nimel (2015. aasta sĂŒgisest kuni 2018. aasta sĂŒgiseni). Just siis juhtus "". Edasi liikudes toimusid mĂ”nikord veel tĂ”rked, mĂ”ned olid ĂŒsna tunded, kuid ĂŒldiselt saab nĂŒĂŒd seda ebastabiilsuse perioodi pidada möödundiks.
Ărimahtude tormiline kasv
Miks ei saanud "kÔike kohe hÀsti teha"? Piisab, kui vaadata jÀrgmisi graafikuid.

Samuti avati 2014-2015 Rumeenias ning valmistuti avamiseks Ameerika Ăhendriikides.
VĂ”rk kasvas vĂ€ga kiiresti, avanesid uued riigid, ilmusid uued pitsarestoranide vormid, nĂ€iteks avati pitsarestoran toidutĂ€naval. KĂ”ik see nĂ”udis Dodo IS funktsionaalsuse laienemisele mĂ€rkimisvÀÀrset tĂ€helepanu. Ilma nende funktsioonideta, ilma köögis jĂ€lgimiseta, toidu ja kahjude arvestamiseta sĂŒsteemis, tellimuse esituse kuvamiseta toidutĂ€naviga, ei arutaks me nĂŒĂŒd "Ă”ige" arhitektuuri ja "Ă”ige" lĂ€henemise ĂŒle arendusele.
Teiseks takistuseks arhitektuuri Ă”igeaegsele ĂŒlevaatamisele ja tehnilistele probleemidele oli 2014. aasta kriis. Sellised asjad mĂ”jutavad valusalt tiimide kasvuvĂ”imalusi, eriti noore Ă€ri puhul, nagu Dodo Pizza.
Kiired lahendused, mis aitasid
Probleemid nĂ”udsid lahendust. Ăldiselt vĂ”ib lahendused jagada kaheks grupiks:
Kiired, mis kustutavad tule ja annavad meile vÀikese vastupidavuse ning vÔidavad aega muudatuste tegemiseks.
SĂŒsteemsed ja seetĂ”ttu pikaajalised. Mitmete moodulite ĂŒmberkujundamine, monoliitse arhitektuuri jagamine eraldi teenusteks (enamiku neist ei ole mikro, vaid pigem makroteenused ja selle kohta on ).Â
Kiirete muudatuste kuiv nimekiri on jÀrgmine:
Mastaabi suurendamine meistribaasi jaoks
Muidugi, esimesena suurendatakse serveri vÔimsust, et vÔidelda koormustega. Seda tehti meistribaasi ja veebiserverite jaoks. Kahjuks on see vÔimalik ainult teatud piirini, edasi muutub see liiga kulukaks.
Alates 2014. aastast oleme lĂ€inud Azure'i, sellest kirjutasime ka toona artiklis ââ. Aga pĂ€rast serveri vĂ”imsuse jĂ€rkjĂ€rgulist suurendamist lĂ”ppesime kuludega.Â
Lugemiseks mÔeldud andmebaasi koopiad
Andmebaasist tehti kaks koopiat:
ReadReplica andmebaasi pÀringute jaoks. Seda kasutatakse nÀiteks linnade, tÀnavate, pitsade ja toidu (aeglaselt muudetud domeen) loetelude lugemiseks, ning seal, kus on lubatud vÀike viivitus. Neid koopiaid oli kaks ja tagasime nende kÀttesaadavuse sama hÀsti kui meistribaasi.
ReadReplica aruannete pĂ€ringute jaoks. Sellel andmebaasil oli madalam kĂ€ttesaadavus, kuid sinna said kĂ”ik aruanded. Olgu, et neil on rasked pĂ€ringud suurte andmete ĂŒmberarvutamiseks, kuid need ei mĂ”juta peamist andmebaasi ja operatiivliideseid.Â
Kohandatud vahemÀlud koodis
Koodis ei olnud kuhugi vahemĂ€lusid (ĂŒldse). See tĂ”i kaasa tĂ€iendavad, mitte alati vajalikud, pĂ€ringud koormatud andmebaasi. VahemĂ€lud olid alguses nii mĂ€lus kui ka vĂ€lises vahemĂ€les, milleks oli Redis. KĂ”ik kehtivuse aegunud ajaga, seaded mÀÀrati koodis.
MÔned serverid tagaplaaniks
Ka rakenduse tagaplaan tuli suurendada, et taluda suurenenud koormust. Ăhe iis-serveri pĂ”hjal tuli luua klaster. Ămber kolisime RedisCache'i, mis vĂ”imaldas luua mitu serverit, mis seisavad lihtsa koormuse tasakaalustaja taga round robin sĂŒsteemis. Alguses kasutati sama Redis'i, mis vahemĂ€lude jaoks, hiljem jagati see mitme peale.Â
LÔpptulemusena arhitektuur komplikeerus...

âŠaga osa pinget Ă”nnestus leevendada.
JĂ€rgmine samm oli koormatud komponente ĂŒmber teha, millega me ka tegeleme. Sellest rÀÀgime jĂ€rgmises osas.
Allikas: habr.com
