Habr muuda maailma. Oleme juba ĂŒle aasta pidanud oma blogi. Kusagil pool aastat tagasi saime meilt tĂ€iesti loogilise tagasiside Habrilt: "Dodo, te rÀÀgite igal pool, et teil on oma sĂŒsteem. Mis sĂŒsteem see on? Ja miks see on vajalik pitsakettide jaoks?"
Me istusime, mĂ”tlesime ja mĂ”istsime, et teil on Ă”igus. Proovime seletada kĂ”ike lihtsasti, kuid tulemus tuleb katkine ja kusagil pole tĂ€ielikku sĂŒsteemi kirjeldust. Nii algas pikk teekond teabe kogumiseks, autorite leidmiseks ja seeria artiklite kirjutamiseks Dodo IS-ist. Hakkame pihta!
TĂ€nud: aitĂ€h, et jagate meiega oma tagasisidet. TĂ€nu sellele oleme lĂ”puks suutnud sĂŒsteemi kirjeldada, koostada tehnoraadi ja peagi avaldame meie protsesside pĂ”hjaliku kirjelduse. Ilma teieta istuksime veel 5 aastat.

Artiklite sari "Mis on Dodo IS?" rÀÀgib:
- Varajane monoliit Dodo IS-is (2011-2015). (TöösâŠ)
- TagabĂŒroo tee: eraldi andmebaasid ja buss. (Te olete 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...)
Kui soovite teada midagi veel, kirjutage kommentaarides.
Autori arvamus kronoloogilisest kirjeldusest
Koran teeme uute töötajate jaoks kohtumise teemal "SĂŒsteemi arhitektuur". Me nimetame seda "Intro to Dodo IS Architecture" ja see on osa uute arendajate onboardimisprotsessist. RÀÀkides meie arhitektuurist ja selle omadustest, tekkis mul teatud ajalooline lĂ€henemine kirjeldamiseks.
Tavaliselt vaatame sĂŒsteemi kui komponentide (tehniliste vĂ”i kĂ”rgema taseme) kogumit, Ă€rimooduleid, mis suhtlevad omavahel mingi eesmĂ€rgi saavutamiseks. Ja kuigi selline vĂ€henemine on projekteerimiseks Ă”igustatud, ei sobi see kirjeldamiseks ja mĂ”istmiseks. Siin on mitu pĂ”hjust:
- Tegelikkus erineb sellest, mis paberil. Mitte kÔik, mis on mÔeldud, ei toimi. Ja meile on huvitav, kuidas kÔik tegelikult vÀlja nÀeb ja töötab.
- Teabe jÀrjestikune esitamine. Sisuliselt vÔib jÀrgida kronoloogiliselt alates algusest kuni praeguse seisuni.
- Lihtsast keeruliseni. See ei ole universaalne, kuid meie puhul just nii on. Lihtsatest lĂ€henemisviisidest liikus arhitektuur keerulisema poole. Sageli lahendati keerulisuse kaudu rakendamise ja stabiilsuse probleeme ning ka kĂŒmnete teiste omaduste loetelu mittefunktsionaalsetest nĂ”uetest ( on hĂ€sti rÀÀgitud keerukuse vastandamisest teistele nĂ”uetele).
2011. aastal nÀgi Dodo IS arhitektuur vÀlja nii:

2020. aastaks oli see veidi keerulisem ja sai selliseks:

Kuidas see evolutsioon toimus? Miks on sĂŒsteemi erinevad osad vajalikud? Milliseid arhitektuurilisi lahendusi ja miks on valitud? Uurime seda artiklite sarjas.
Esimesed probleemid 2016. aastal: miks peavad teenused monoliidist lahkuma
Esimesed artiklid tsĂŒklist kĂ€sitlevad teenuseid, mis esimesena monoliidist eraldusid. Et viia teid konteksti, rÀÀgin, millised probleemid olid meie sĂŒsteemis 2016. aasta alguses ning millega me pidime tegelema teenuste jagamisel.
Ăks ĂŒhine MySql andmebaas, kuhu kĂ”ik toona Dodo IS-is eksisteerinud rakendused andmeid kirjutasid. TagajĂ€rjed olid jĂ€rgmised:
- Suurem koormus (85% pÀringutest oli lugemiseks).
- Andmebaas kasvas. Selle tÔttu muutusid selle hooldamine ja hind probleemiks.
- Ăksik rikkepunkt. Kui mĂ”ni rakendus, mis andmebaasi andmeid kirjutas, hakkas Ă€kki seda aktiivsemalt tegema, tundsid teised rakendused seda ka.
- Ebaefektiivne andmete sĂ€ilitamine ja pĂ€ringud. Sageli olid andmed salvestatud mingis struktuuris, mis sobis mĂ”nele stsenaariumile, kuid mitte teistele. Indekseerimine kiirendas ĂŒhte tegevust, kuid vĂ”is teised aeglustada.
- MÔned probleemid lahendasid kiirustades tehtud vahemÀlud ja read-replikaandmebaasid (sellest kirjutatakse eraldi artiklis), kuid need lahendasid vaid ajutiselt probleemi ega lahendanud seda pÔhimÔtteliselt.
Probleemiks oli monoliidi olemasolu. TagajÀrjed olid jÀrgmised:
- Ăksikud ja harvad vĂ€ljalasked.
- Paljude inimeste koostöö arendamise keerukus.
- Uute tehnoloogiate, uute raamistikute ja teekide lisamise vÔimatust.
Andmebaasi ja monoliidi probleeme on korduvalt kĂ€sitletud, nĂ€iteks 2018. aasta alguses juhtunud kukkumiste kontekstis (, ja ), nii et ei jÀÀks pikalt peatuma. Ătlen vaid, et soovisime teenuste arendamisel suuremat paindlikkust. EelkĂ”ige kehtis see kĂ”ige koormatumate ja sĂŒsteemi pĂ”hielementide â Auth ja Tracker â kohta.
Back-officeâi tee: eraldi andmebaasid ja buss
Navigatsioon peatĂŒkis
Monoliidi skeem 2016. aastal
Ees on Dodo IS 2016. aasta pÔhiblokid, ja natuke allpool on nende pÔhifunktsioonide seletus.

Kohaletoimetamise kassa. Kullerite registreerimine, tellimuste ĂŒleandmine kulleritele.
Kontaktikeskus. Tellimuste vastuvÔtt operaatori kaudu.
Veebisait. Meie veebisaidid (dodopizza.ru, dodopizza.co.uk, dodopizza.by jne).
Auth. Autoriseerimise ja autentimise teenus back-office jaoks.
Tracker. Tellimuste jÀlgimine köögis. Teenus tellimuste valmiduse staatuste mÀrkimiseks ettevalmistamise ajal.
Restoranikassa. Tellimuste vastuvÔtt restoranis, kassapidaja liidesed.
Export. Aruannete eksport 1C raamatupidamise jaoks.
Teavitused ja saatedokumendid. HÀÀlekĂ€sklused köögis (nĂ€iteks âUus pitsasaatmineâ) + saatedokumentide printimine kulleritele.
Vahetuse juht. Liidesed vahetuse juhi tööks: tellimuste nimekiri, tootlikkuse graafikud, töötajate vÀljakutsumine vahetusse.
Kontori juht. Fransiiside ja juhendajate tööliidesed: töötajate vastuvÔtt, pitsarestorani töö aruanded.
Restorani ekraan. MenĂŒĂŒ kuvamine restoranide televiisorites.
Adminpaneel. Spetsiifilised seaded konkreetsele pitsarestoranile: menĂŒĂŒ, hinnad, arvestus, sooduskoodid, kampaaniad, veebisaidi reklaamid jne.
Töötaja kasutajaruum. Töötajate töö graafikud, töötajate teave.
Köögimotivatsiooni ekraan. Eraldi ekraan, mis ripub köögis ja kuvab pitsameistrite töötamise kiirus.
Suhtlemine. SMS ja emailide saatmine.
FileStorage. Omandatud teenus staatiliste failide vastuvÔtmiseks ja andmiseks.
Esimesed katsed probleemide lahendamiseks aitasid meid, kuid olid vaid ajutine hingetĂ”mme. Need ei kujunenud sĂŒsteemseteks lahendusteks, seetĂ”ttu oli selge, et andmebaasidega tuleb midagi ette vĂ”tta. NĂ€iteks jagada ĂŒldine andmebaas mitmeks spetsialiseeritud.
Alustame monoliidi koormuse vÀhendamist: Auth ja Tracker eraldamine
PÔhiteenused, mis siis enim andmebaasist andmeid lugesid ja kirjutasid:
- Auth. Autoriseerimise ja autentimise teenus back-office jaoks.
- Tracker. Tellimuste jÀlgimine köögis. Teenus tellimuste valmiduse staatuste mÀrkimiseks ettevalmistamise ajal.
Millega tegeleb Auth
Auth on teenus, mille kaudu kasutajad logivad back-office'i (klientide osas eraldi sÔltumatu sisselogimine). Samuti pöördutakse selle poole, et veenduda, et olemas on vajalikud juurdepÀÀsud ja et need Ôigused pole alates viimast sisselogimist muutunud. Just selle kaudu toimub seadmete sisenemine pitsarestoranides.
NĂ€iteks tahame avada elutoa seinal rippuval teleril valmis tellimuste staatuste tabelit. Siis avame auth.dodopizza.ru, valime "Logi sisse seadmena", ilmub kood, mille saab sisestada vahetuse juhataja arvuti spetsiaalsesse lehekĂŒlge, mĂ€rkides seadme tĂŒĂŒbi. Teler suundub ise oma pizzeriasse vajaliku liidese juurde ja hakkab seal kuvama klantide nimesid, kelle tellimused on valmis.

Kust koormus tuleb?
Iga sisse logitud kasutaja tagab iga pĂ€ringu puhul andmebaasi, kasutajate tabelisse, kasutades SQL-pĂ€ringut, ja tĂ”mbab sealt kasutaja, kontrollides, kas tal on vajalikud Ă”igused ja juurdepÀÀs sellele lehekĂŒljele.
Iga seade teeb samu toiminguid ainult seadmete tabeliga, kontrollides oma rolli ja Ă”igusi. Suur hulk pĂ€ringuid meistrandmebaasi pĂ”hjustab selle koormuse ja ressursside kulu ĂŒhises andmebaasis nende operatsioonide tĂ”ttu.
VĂ€hendame Authi koormust
Auth'il on isoleeritud domeen, st kasutajate, sisse logimiste vÔi seadmete andmed lÀhevad teenusesse (praegu veel tulevikus) ja jÀÀvad sinna. Kui kellelgi neid vajatakse, siis lÀheb ta selle teenuse poole andmete saamiseks.
OLI. Tööskeem algselt oli selline:

Tahaksin veidi selgitada, kuidas see töötas:
- PĂ€ring vĂ€ljast tuleb tagasi (seal on Asp.Net MVC), tuues endaga kaasa sessioonikĂŒpsise, mida kasutatakse sessiooniteabe saamiseks Redis'ist (1). Sel on kas Ă”iguste teave ja siis on juurdepÀÀs kontrollerisse avatud (3,4), vĂ”i mitte.
- Kui juurdepÀÀsu pole, tuleb lĂ€bida autentimise protseduur. Siin on lihtsustamiseks see nĂ€idatud sama atribuudina teel, kuigi see on ĂŒleminek sisselogimise lehele. Positiivse stsenaariumi korral saame Ă”igesti tĂ€idetud sessiooni ja liikumme Backoffice Controller'i.
- Kui andmed on olemas, tuleb kontrollida nende ajakohasust kasutajate andmebaasis. Kas tema roll on muutunud, kas teda tuleb nĂŒĂŒd sellele lehele lubamata jĂ€tta. Sel juhul peab sessiooni saamise jĂ€rel (1) minema otse andmebaasi ja kontrollima kasutaja Ă”igusi autentimise loogika kihi (2) abil. Edasi kas sisselogimise lehele vĂ”i liikuda kontrollerisse. Selline lihtne sĂŒsteem, kuid mitte pĂ€ris standardne.
- Kui kÔik protseduurid on lÀbitud, siis laseme edasi kontrollerite ja meetodite loogikas.
Kasutajate andmed on eraldatud kĂ”ikidest teistest andmetest, need hoitakse eraldi membership tabelis, AuthService loogikakihi funktsioonid vĂ”ivad tĂ€iesti vabalt muutuda API meetoditeks. Domeeni piirid on ĂŒsna selgelt mÀÀratletud: kasutajad, nende rollid, juurdepÀÀsuandmed, juurdepÀÀsu vĂ€ljastamine ja tagasivĂ”tmine. KĂ”ik nĂ€eb vĂ€lja nagu vĂ”iksime selle viia eraldi teenusesse.
OLEMAS. Nii ka tehti:

Sellel lĂ€henemisel on mitmeid probleeme. NĂ€iteks, meetodi kutsumine protsessi sees ei ole sama, mis vĂ€list teenust HTTP kaudu kutsuda. Latentsus, usaldusvÀÀrsus, hooldatavus, operatsiooni lĂ€bipaistvus on tĂ€iesti erinevad. Ăksikasjalikult sellistest probleemidest rÀÀkis Andrei Morevski oma ettekandes .
Autentimise teenust ja seonduvat seadmete teenust kasutatakse back-office'is, st teenuste ja liideste jaoks, mida kasutatakse tootmises. Klientide teenuste (nĂ€iteks veebilehe vĂ”i mobiilirakenduse) autentimine toimub eraldi, kasutamata Auth'i. Eraldamine kestis umbes aasta, ja nĂŒĂŒd tegeleme selle teemaga taas, viies sĂŒsteemi ĂŒle uutele autentimise teenustele (tavapĂ€raste protokollidega).
Miks eraldamine kestis nii kaua?
Teel oli palju probleeme, mis aeglustasid:
- Soovisime viia kasutajate, seadmete ja autentimise andmed riikide andmebaasidest ĂŒhte. Selleks tuli liikuda kĂ”igi tabelite ja int tuvastamise kasutamiselt globaalse ID UUId'ni (oleme hiljuti seda koodi ĂŒle töötanud) ja open-source projekt ). Kasutajate andmete sĂ€ilitamisel (arvestades, et tegu on isikuandmetega) on oma piirangud ja teatud riikides tuleb neid hoida eraldi. Kuid kasutaja globaalne identifikaator peab olema.
- Paljud tabelid andmebaasis sisaldavad auditi teavet selle kasutaja kohta, kes tegi operatsiooni. See nÔudis tÀiendavat mehhanismi, et tagada jÀrjepidevus.
- PĂ€rast API teenuste loomist oli pikk ja jĂ€rkjĂ€rguline ĂŒleminekuperiood teisele sĂŒsteemile. Ăleminekud pidid toimuma kasutajatele sujuvalt ja nĂ”udsid kĂ€sitööd.
Seadme registreerimise skeem pizzeria:

Ăldine arhitektuur pĂ€rast Auth ja Devices teenuste eraldamist:

MĂ€rkus. Aastal 2020 töötame uue Auth versiooni kallal, mis pĂ”hineb OAuth 2.0 autoriseerimisstandardil. See standard on ĂŒsna keeruline, kuid on vajalik lĂ”ppautentimisteenuse arendamiseks. Artiklis ââ on Aleksei TĆĄernjaev pĂŒĂŒdnud standardit esitada vĂ”imalikult lihtsalt ja arusaadavalt, et te saaksite aega selle Ă”ppimise pealt kokku hoida.
Millega tegeleb Tracker
NĂŒĂŒd rÀÀgime teisest ĂŒlekoormatud teenusest. JĂ€lgija tĂ€idab kaht erinevat rolli:
- Esiteks, selle ĂŒlesanne on nĂ€idata köögitöötajatele, millised tellimused on praegu töös, milliseid tooteid tuleb praegu valmistada.
- Teiselt poolt - digitaliseerida kÔik köögis toimuvad protsessid.

Kui tellimuses ilmub uus toode (nt pizza), satub see jĂ€lgija jaama âRullimineâ. Selles jaamas on pizzameister, kes vĂ”tab vajamineva suurusega tĂŒkikese ja rullib selle lahti, seejĂ€rel mĂ€rgib ta jĂ€lgija tahvlil, et on oma ĂŒlesande tĂ€itnud, ja edastab rullitud pĂ”hjuse jĂ€rgmisse jaama - âTĂ€iendamineâ.
Seal tĂ€idab jĂ€rgmine pizzameister pitsa, seejĂ€rel mĂ€rgib ta jĂ€lgija tahvlil, et on oma ĂŒlesande tĂ€itnud ja paneb pitsa ahju (see on samuti eraldi jaam, mille tuleb tahvlil mĂ€rkida). Selline sĂŒsteem oli algusest peale Dodo's ja Dodo IS-i esialgsest olemisest peale. See vĂ”imaldab tĂ€ielikult jĂ€lgida ja digitaliseerida kĂ”iki operatsioone. Lisaks annab jĂ€lgija nĂ€punĂ€iteid, kuidas valmistada erinevaid tooteid, viib iga toote oma valmistamisprotseduuride jĂ€rgi, talletab toote optimaalse kĂŒpsetamise aja ja jĂ€lgib kĂ”iki operatsioone toote ĂŒle.
Nii nĂ€eb jĂ€lgija âRullimineâ jaamas tahvli ekraan vĂ€lja
Kust koormus tuleb?
Igas pizzakettis on umbes viis tahvelarvutit, mis on varustatud jĂ€lgijatega. 2016. aastal oli meil ĂŒle 100 pizzeria (ja nĂŒĂŒd ĂŒle 600). Iga tahvelarvuti teeb igal 10 sekundi jĂ€rel pĂ€ringu tagaplaanile ja tĂ”mbab andmeid tellimuste tabelist (seos kliendi ja aadressiga), tellimuse koostisest (seos toote ja koguse nĂ€iduga), motiveerimise arvestuse tabelist (kus jĂ€lgitakse vajutamise aega). Kui pizzameister aktiveerib toote jĂ€lgijal, vĂ€rskendatakse kirjeid kĂ”igis nendes tabelites. Tellimuste tabel on ĂŒhine ja sinna tehakse samal ajal sisestusi tellimuse vastuvĂ”tmisel, sĂŒsteemi teistest osadest uuendusi ja rohkelt lugemisi, nĂ€iteks telekas, mis on pizzarias ja nĂ€itab valmis tellimusi klientidele.
Koormustega vĂ”itlemise ajal, kui kĂ”ik mida ainult sai vahemĂ€lus hoida ja viia asynchronous replika andmebaasi, jĂ€tkasid need toimingud jĂ€lgijaga peandmebaasi suunamist. Siin ei peaks olema mingit viivitust, andmed peavad olema ajakohased, desĂŒnkroniseerimine on lubamatu.
Samuti ei vĂ”imaldanud omade tabelite ja indeksite puudumine kirjutada spetsiifilisemaid pĂ€ringuid, mis oleksid kohandatud meie kasutamiseks. NĂ€iteks peab jĂ€lgijatel olema efektiivne indeks pizzeria tellimuste tabelis. Me tĂ”mbame alati jĂ€lgijast tellimusi pizzeria kaupa. Tellimuse vastuvĂ”tmisel ei ole tĂ€htis, millisesse pizzarisse see langeb, oluline on, milline klient selle tellimuse tegi. Seega peab seal olema indeks kliendi jĂ€rgi. Samuti pole jĂ€lgijale tellimuste tabelis vajalik salvestada printimise tĆĄeki id-d vĂ”i seotud tellimuse boonuspakkumisi. See teave ei huvita meie jĂ€lgimisteenust. Ăhises monoliitses andmebaasis vĂ”isid tabelid olla ainult kĂ”igi kasutajate vahel lepitavate kompromisside variant. See oli ĂŒks algseid probleeme.
OLI. Algne arhitektuur oli selline:

Isegi pĂ€rast eraldamist eraldi protsessidesse jĂ€i enamik koodibaasist erinevate teenuste jaoks ĂŒhine. KĂ”ik, mis oli kontrolleritest madalamal, oli ĂŒhtne ja elas ĂŒhes hoidlas. Kasutati ĂŒhiseid teenuse meetodeid, hoidlaid, ĂŒhist andmebaasi, kus olid ĂŒhised tabelid.
VĂ€hendame Trackeri koormust
Peamine probleem jĂ€lgijas seisneb selles, et andmed peavad olema sĂŒnkroniseeritud erinevate andmebaaside vahel. See on ka peamine erinevus autoriseerimisteenuse jagamisest, kus tellimus ja selle staatus vĂ”ivad muutuda ja peavad olema nĂ€htavad erinevates teenustes.
Me aktsepteerime tellimusi Restorani Kassas (see on teenus), see salvestatakse andmebaasi staatusega âVastu vĂ”etudâ. PĂ€rast seda peab see jĂ”udma jĂ€lgijasse, kus see muudab oma staatust veel mitu korda: alates âKöökâ kuni âPakitudâ. Sel ajal vĂ”ivad tellimusele avaldada mingit vĂ€lismĂ”ju Kassas vĂ”i vahetuse juhtimise liideses. Esitan tellimuse staatuste ja nende kirjelduste tabelis:

Tellimuse staatuste muutmise skeem nÀeb vÀlja jÀrgmine:

Staatused muutuvad erinevate sĂŒsteemide vahel. Ja siin ei ole jĂ€lgija lĂ”pp-sĂŒsteem, kus andmed suletakse. Oleme nĂ€inud mitu vĂ”imalikku lĂ€henemist eraldamiseks sellisel juhul:
- Keskendame kĂ”ik tellimuse toimingud ĂŒhes teenuses. Meie puhul nĂ”uab see variant tellimuse haldamiseks liiga suurt teenust. Kui me oleksime sellega piirdunud, oleksime saanud teise monoliidi. Probleeme me ei lahendanud.
- Ăks sĂŒsteem kutsub teist. Teine variant on juba huvitavam. Kuid selle puhul on vĂ”imalikud kutsumise ahelad (), komponentide seotuse tase on kĂ”rgem, seda on raskem hallata.
- Korraldame sĂŒndmused ja iga teenus vahetab nende sĂŒndmuste kaudu teavet ĂŒksteisega. LĂ”ppkokkuvĂ”ttes valiti tĂ”epoolest kolmas variant, mille kohaselt kĂ”ik teenused hakkavad omavahel sĂŒndmusi vahetama.
See, et valisime kolmanda variandi, tĂ€hendas, et jĂ€lgijal on oma andmebaas ja iga tellimuse muutuse korral saadab ta sellest sĂŒndmuse, millele teised teenused liituvad ja mis jĂ”uab ka pĂ”hivaramusse. Selleks oli meil vaja mingit teenust, mis tagaks sĂ”numite edastamise teenuste vahel.
Sel ajal oli meil stacks juba RabbitMQ, seega otsustasime kasutada seda sÔnumite vahendajana. Skeemil on nÀidatud tellimuse liikumine Restorani Kassast lÀbi JÀlgija, kus see muudab oma staatusi ja kuvatakse juhi Tellimustes. MUUTUS:

Tellimuse teekond samm-sammult
Tellimuse teekond algab ĂŒhes tellimuse allikasĂŒsteemis. Siin on see Restorani Kassas:
- Kassas on tellimus tĂ€ielikult valmis ja on aeg see jĂ€lgimisse saata. Ăritus, millele jĂ€lgija on registreeritud, kĂ€ivitatakse.
- JĂ€lgija, vastu vĂ”ttes tellimust, salvestab selle oma andmebaasi, tehes sellega ĂŒrituse âTellimusVastuvĂ”etudJĂ€lgijaâ ja saates selle RMQ-sse.
- Tellimuse ĂŒritusel on juba mitu töötlejat registreeritud. Meile on oluline see, mis teeb sĂŒnkroonimise monoliitsete andmetega.
- Töötleja vĂ”tab ĂŒrituse vastu, valib sellest endast olulised andmed: meie puhul tellimuse staatus âVastuvĂ”etudJĂ€lgijaâ ja uuendab oma tellimuse entiteeti pĂ”hivaatlemise andmebaasis.
Kui kellelgi on vaja tellimust just monoliitsest orders tabelist, siis saab seda sealt lugeda. NĂ€iteks on see vajalik tellimuste liidese jaoks Vahetuse Halduris:

KĂ”ik teised teenused saavad samuti tellimuse ĂŒritustele jĂ€lgijast registreeruda, et neid enda jaoks kasutada.
Kui tellimus vĂ”etakse mĂ”ne aja pĂ€rast tööle, siis muudab selle staatus esmalt oma andmebaasis (JĂ€lgija andmebaasis) ja siis genereeritakse kohe ĂŒritus âTellimusTöösâ. See jĂ”uab samuti RMQ-sse, kust sĂŒnkroonitakse monoliitsesse andmebaasi ja edastatakse teistele teenustele. Sellel teel vĂ”ivad esineda erinevad probleemid, millega saab tutvuda Ćœenja PeĆĄkovi ettekandes. .
LÔplik arhitektuur pÀrast muudatusi Authis ja JÀlgijas

KokkuvĂ”tlikult: alguses soovisin kokku panna ĂŒhe artikli Dodo IS sĂŒsteemi ĂŒheksa-aastasest ajaloost. Olin taheline kiiresti ja lihtsalt rÀÀkida evolutsiooni etappidest. Kuid materjali kirjutades mĂ”istsin, et kĂ”ik on palju keerulisem ja huvitavam, kui tundub.
MĂ”eldes selle materjali kasule (vĂ”i puudumisele), jĂ”udsin jĂ€reldusele, et pidev areng ei ole vĂ”imalik ilma pĂ”hjalike sĂŒndmuste kroonikuteta, ulatuslike retrospektiivide ja oma varasemate otsuste analĂŒĂŒsita.
Loodan, et teile oli kasulik ja huvitav tutvuda meie teekonnaga. Praegu olen silmitsi valikuga, millise osa Dodo IS-st jÀrgmises artiklis kirja panna: kirjutage kommentaarides vÔi hÀÀletage.
Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. , palun.
Millest Dodo IS-st sooviksite jÀrgmises artiklis rohkem teada saada?
24,1%Varajane monoliit Dodo IS-s (2011-2015)14
24,1%Esimesed probleemid ja nende lahendused (2015-2016)14
20,7%Kliendi osa tee: fassaad andmebaasi kohal (2016-2017)12
36,2%TÔeliste mikroteenuste ajalugu (2018-2019)21
44,8%Monoliidi lÔplik lÔhkumine ja arhitektuuri stabiliseerimine26
29,3%Edasised plaanid sĂŒsteemi arendamiseks17
19,0%Ma ei taha Dodo IS-ist midagi teada11
58 kasutajat hÀÀletasid. 6 kasutajat jÀid erapooletuks.
Allikas: habr.com
