Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

Jew kull kumpanija mhux kuntenta b'monolith mhix kuntenta bil-mod tagħha.

L-iżvilupp tas-sistema Dodo IS beda immedjatament, bħan-negozju Dodo Pizza, fl-2011. Kien ibbażat fuq l-idea ta 'diġitizzazzjoni sħiħa u totali tal-proċessi tan-negozju, u weħidhom, li anke dakinhar fl-2011 ikkawża ħafna mistoqsijiet u xettiċiżmu. Iżda għal 9 snin issa ilna nsegwu din it-triq - bl-iżvilupp tagħna stess, li beda b'monolith.

Dan l-artikolu huwa "tweġiba" għall-mistoqsijiet "Għaliex tikteb mill-ġdid l-arkitettura u tagħmel tali bidliet fuq skala kbira u fit-tul?" lura għall-artiklu preċedenti "L-Istorja tal-Arkitettura Dodo IS: Il-Mixja tal-Back Office". Nibda b'kif beda l-iżvilupp ta' Dodo IS, kif dehret l-arkitettura oriġinali, kif dehru moduli ġodda, u minħabba liema problemi kellhom isiru bidliet fuq skala kbira.

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

Serje ta' artikli "X'inhu Dodo IS?" tgħid dwar:

  1. Monolitu bikri f'Dodo IS (2011-2015). (Int qiegħed hawn)

  2. Il-Passaġġ tal-Back Office: Bażijiet Separati u Xarabank.

  3. Il-mogħdija tal-ġenb tal-klijent: faċċata fuq il-bażi (2016-2017). (Fil-progress...)

  4. L-istorja tal-mikroservizzi veri. (2018-2019). (Fil-progress...)

  5. Serrar lest tal-monolith u stabbilizzazzjoni tal-arkitettura. (Fil-progress...)

Arkitettura inizjali

Fl-2011, l-arkitettura Dodo IS dehret hekk:

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

L-ewwel modulu fl-arkitettura huwa l-aċċettazzjoni tal-ordni. Il-proċess tan-negozju kien:

  • il-klijent isejjaħ il-pizzeria;

  • il-maniġer jiġbor it-telefon;

  • jaċċetta ordni bit-telefon;

  • jimlaha b'mod parallel fl-interface tal-aċċettazzjoni tal-ordni: jitqiesu l-informazzjoni dwar il-klijent, id-dejta dwar id-dettalji tal-ordni, l-indirizz tal-kunsinna. 

L-interface tas-sistema tal-informazzjoni dehret xi ħaġa bħal din...

L-ewwel verżjoni minn Ottubru 2011:

Ftit imtejba f'Jannar 2012

Dodo Pizza Information System Kunsinna Pizza Restaurant

Ir-riżorsi għall-iżvilupp tal-modulu tat-teħid tal-ewwel ordni kienu limitati. Kellna nagħmlu ħafna, malajr u b’tim żgħir. Tim żgħir huwa 2 żviluppaturi li poġġew il-pedament għas-sistema futura kollha.

L-ewwel deċiżjoni tagħhom iddeterminat id-destin tal-munzell tat-teknoloġija:

  • Backend fuq ASP.NET MVC, lingwa C#. L-iżviluppaturi kienu dotnetchiki, dan il-munzell kien familjari u pjaċevoli għalihom.

  • Frontend fuq Bootstrap u JQuery: interfaces tal-utent fuq stili u skripts miktuba minnha stess. 

  • Database MySQL: l-ebda spejjeż ta 'liċenzja, faċli biex tużah.

  • Servers fuq Windows Server, għaliex .NET allura jista 'jkun biss taħt Windows (mhux se niddiskutu Mono).

Fiżikament, dan kollu kien espress fid- "dedic at the hoster". 

Arkitettura ta' Applikazzjoni tad-Dħul ta' Ordni

Imbagħad kulħadd kien diġà jitkellem dwar il-mikroservizzi, u s-SOA intużat fi proġetti kbar għal 5 snin, pereżempju, WCF ġiet rilaxxata fl-2006. Iżda mbagħad għażlu soluzzjoni affidabbli u ppruvata.

Hawn hi.

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

Asp.Net MVC huwa Razor, li, fuq talba minn formola jew minn klijent, jirrendi paġna HTML b'rendering tas-server. Fuq il-klijent, l-iskripts CSS u JS diġà juru informazzjoni u, jekk meħtieġ, iwettqu talbiet AJAX permezz ta 'JQuery.

It-talbiet fuq is-server jispiċċaw fil-*Klassijiet tal-Kontrollur, fejn l-ipproċessar u l-ġenerazzjoni tal-paġna HTML finali jseħħ fil-metodu. Il-kontrolluri jagħmlu talbiet lil saff ta' loġika msejjaħ *Servizzi. Kull wieħed mis-servizzi kien jikkorrispondi għal xi aspett tan-negozju:

  • Per eżempju, DepartmentStructureService ta informazzjoni dwar pizzerias, dwar dipartimenti. Dipartiment huwa grupp ta’ pizzerijas immexxi minn franchisee wieħed.

  • ReceivingOrdersService aċċettat u kkalkulat il-kompożizzjoni tal-ordni.

  • U l-SmsService bagħat SMS billi ċempel is-servizzi tal-API biex jibgħat SMS.

Servizzi pproċessati data mid-database, maħżuna loġika tan-negozju. Kull servizz kellu *Repożitorju wieħed jew aktar bl-isem xieraq. Diġà kien fihom mistoqsijiet għal proċeduri maħżuna fid-database u saff ta 'mappers. Kien hemm loġika tan-negozju fil-ħażniet, speċjalment ħafna f'dawk li ħarġu data ta 'rappurtar. ORM ma ntużax, kulħadd bbaża ruħu fuq sql miktub bl-idejn. 

Kien hemm ukoll saff tal-mudell tad-dominju u klassijiet ta 'helper komuni, pereżempju, il-klassi tal-Ordni li ħażnet l-ordni. Fl-istess post, fis-saff, kien hemm helper għall-konverżjoni tat-test tal-wiri skond il-munita magħżula.

Dan kollu jista 'jiġi rappreżentat minn mudell bħal dan:

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

Ordni Mod

Ikkunsidra mod inizjali simplifikat biex toħloq ordni bħal din.

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

Inizjalment, is-sit kien statiku. Kellha prezzijiet fuqha, u fuq nett - numru tat-telefon u l-iskrizzjoni "Jekk trid pizza - ċempel in-numru u ordna." Biex tordna, għandna bżonn nimplimentaw fluss sempliċi: 

  • Il-klijent iżur sit statiku bi prezzijiet, jagħżel prodotti u jsejjaħ in-numru elenkat fuq is-sit.

  • Il-klijent isemmi l-prodotti li jridu jżidu mal-ordni.

  • Jagħti l-indirizz u ismu.

  • L-operatur jaċċetta l-ordni.

  • L-ordni tidher fl-interface tal-ordnijiet aċċettati.

Kollox jibda bil-wiri tal-menu. Operatur-utent li jkun illoggjat jaċċetta ordni waħda biss kull darba. Għalhekk, il-karrettun tal-abbozz jista 'jinħażen fis-sessjoni tiegħu (is-sessjoni tal-utent hija maħżuna fil-memorja). Hemm oġġett Cart li fih prodotti u informazzjoni tal-klijent.

Il-klijent isemmi l-prodott, l-operatur jikklikkja fuq + ħdejn il-prodott, u tintbagħat talba lis-server. L-informazzjoni dwar il-prodott tinġibed mid-database u l-informazzjoni dwar il-prodott tiżdied mal-karrettun.

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

Innota. Iva, hawn ma tistax tiġbed il-prodott mid-database, iżda ttrasferih mill-frontend. Iżda għaċ-ċarezza, wrejt eżattament it-triq mid-database. 

Sussegwentement, daħħal l-indirizz u l-isem tal-klijent. 

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

Meta tikklikkja "Oħloq Ordni":

  • It-talba tintbagħat lil OrderController.SaveOrder().

  • Aħna nġibu Cart mis-sessjoni, hemm prodotti fil-kwantità li għandna bżonn.

  • Aħna nissupplimentaw il-Cart b'informazzjoni dwar il-klijent u ngħadduha lill-metodu AddOrder tal-klassi ReceivingOrderService, fejn tiġi ffrankata fid-database. 

  • Id-database għandha tabelli bl-ordni, il-kompożizzjoni tal-ordni, il-klijent, u huma kollha konnessi.

  • L-interface tal-wiri tal-ordni jmur u jiġbed l-aħħar ordnijiet u jurihom.

Moduli ġodda

It-teħid tal-ordni kien importanti u meħtieġ. Ma tistax tagħmel negozju tal-pizza jekk ma jkollokx ordni biex tbigħ. Għalhekk, is-sistema bdiet takkwista funzjonalità - bejn wieħed u ieħor mill-2012 sal-2015. Matul dan iż-żmien, dehru ħafna blokki differenti tas-sistema, li se nsejjaħ moduli, għall-kuntrarju tal-kunċett ta 'servizz jew prodott. 

Modulu huwa sett ta 'funzjonijiet li huma magħquda minn xi għan kummerċjali komuni. Fl-istess ħin, huma fiżikament fl-istess applikazzjoni.

Il-moduli jistgħu jissejħu blokki tas-sistema. Pereżempju, dan huwa modulu ta' rappurtar, interfaces ta' amministrazzjoni, tracker tal-ikel fil-kċina, awtorizzazzjoni. Dawn huma kollha interfaces tal-utent differenti, xi wħud saħansitra għandhom stili viżwali differenti. Fl-istess ħin, kollox huwa fi ħdan il-qafas ta 'applikazzjoni waħda, proċess wieħed li jaħdem. 

Teknikament, il-moduli kienu ddisinjati bħala Żona (idea bħal din saħansitra baqgħet fiha asp.net qalba). Kien hemm fajls separati għall-frontend, mudelli, kif ukoll il-klassijiet tal-kontrolluri tagħhom stess. Bħala riżultat, is-sistema ġiet trasformata minn din...

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

...f'dan:

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

Xi moduli huma implimentati minn siti separati (proġett eżekubbli), minħabba funzjonalità kompletament separata u parzjalment minħabba żvilupp kemmxejn separat u aktar iffukat. Dan:

  • Sit - l-ewwel verżjoni sit dodopizza.ru.

  • Esportazzjoni: ittella’ rapporti minn Dodo IS għal 1C. 

  • Personali - kont personali tal-impjegat. Ġie żviluppat separatament u għandu l-punt tad-dħul tiegħu stess u disinn separat.

  • fs — proġett għall-ospitar tal-istatika. Aktar tard tbiegħdu minnha, ċċaqilqu l-istatika kollha lejn is-CDN ta 'Akamai. 

Il-bqija tal-blokki kienu fl-applikazzjoni BackOffice. 

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

Spjegazzjoni tal-isem:

  • Kaxxier - Kaxxier tar-ristoranti.

  • ShiftManager - interfaces għar-rwol "Shift Manager": statistika operattiva dwar il-bejgħ tal-pizzeria, il-ħila li tpoġġi prodotti fuq il-lista ta 'waqfien, tibdel l-ordni.

  • OfficeManager - interfaces għar-rwoli "Pizzeria Manager" u "Franchisee". Hawnhekk huma miġbura funzjonijiet għat-twaqqif ta 'pizzeria, promozzjonijiet bonus tagħha, li tirċievi u taħdem ma' impjegati, rapporti.

  • PublicScreens - interfaces għal televiżjonijiet u tablets mdendlin fil-pizzerijas. It-televiżjonijiet juru menus, informazzjoni tar-reklamar, status tal-ordni mal-kunsinna. 

Huma użaw saff ta 'servizz komuni, blokk komuni tal-klassi tad-dominju Dodo.Core, u bażi komuni. Xi drabi xorta jistgħu jwasslu tul it-tranżizzjonijiet lejn xulxin. Inklużi siti individwali, bħal dodopizza.ru jew personal.dodopizza.ru, marru għas-servizzi ġenerali.

Meta dehru moduli ġodda, ippruvajna nerġgħu nużaw il-kodiċi ta 'servizzi diġà maħluqa, proċeduri maħżuna u tabelli fid-database għall-massimu. 

Għal fehim aħjar tal-iskala tal-moduli magħmula fis-sistema, hawn dijagramma mill-2012 bi pjanijiet ta’ żvilupp:

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

Sal-2015, kollox kien fuq il-mappa u saħansitra aktar kien fil-produzzjoni.

  • L-aċċettazzjoni tal-ordni kibret fi blokk separat taċ-Ċentru ta’ Kuntatt, fejn l-ordni tiġi aċċettata mill-operatur.

  • Kien hemm paraventi pubbliċi b’menus u informazzjoni mdendlin fil-pizzeriji.

  • Il-kċina għandha modulu li awtomatikament idoqq il-messaġġ bil-vuċi "New Pizza" meta tasal ordni ġdida, u jistampa wkoll fattura għall-kurrier. Dan jissimplifika bil-kbir il-proċessi fil-kċina, jippermetti lill-impjegati li ma jiġux distratti minn numru kbir ta 'operazzjonijiet sempliċi.

  • L-unità tal-kunsinna saret Delivery Checkout separata, fejn l-ordni nħarġet lill-kurrier li qabel kien ħa x-xift. Il-ħin tax-xogħol tiegħu ġie kkunsidrat għall-kalkolu tal-pagi. 

B'mod parallel, mill-2012 sal-2015, dehru aktar minn 10 żviluppaturi, fetħu 35 pizzerija, skjerati s-sistema fir-Rumanija u ppreparaw għall-ftuħ ta 'ħwienet fl-Istati Uniti. L-iżviluppaturi m'għadhomx jittrattaw il-kompiti kollha, iżda kienu maqsuma f'timijiet. kull wieħed speċjalizzat fil-parti tiegħu tas-sistema. 

Problemi

Inkluż minħabba l-arkitettura (iżda mhux biss).

Kaos fil-bażi

Bażi waħda hija konvenjenti. Il-konsistenza tista 'tinkiseb fiha, u għad-detriment ta' għodod mibnija f'databases relazzjonali. Li taħdem magħha hija familjari u konvenjenti, speċjalment jekk hemm ftit tabelli u ftit dejta.

Iżda fuq 4 snin ta 'żvilupp, id-database rriżulta li kellha madwar 600 tabella, 1500 proċedura maħżuna, li ħafna minnhom kellhom ukoll loġika. Alas, il-proċeduri maħżuna ma jġibux ħafna vantaġġ meta taħdem ma 'MySQL. Mhumiex cached mill-bażi, u l-ħażna tal-loġika fihom tikkomplika l-iżvilupp u d-debugging. L-użu mill-ġdid tal-kodiċi huwa diffiċli wkoll.

Ħafna tabelli ma kellhomx indiċi xierqa, x'imkien, għall-kuntrarju, kien hemm ħafna indiċi, li għamluha diffiċli biex jiddaħħlu. Kien meħtieġ li jiġu mmodifikati madwar 20 tabella - it-tranżazzjoni biex tinħoloq ordni tista 'tieħu madwar 3-5 sekondi. 

Id-dejta fit-tabelli mhux dejjem kienet fl-aktar forma xierqa. X'imkien kien meħtieġ li ssir denormalizzazzjoni. Parti mid-dejta li waslet regolarment kienet f'kolonna fil-forma ta 'struttura XML, dan żied il-ħin ta' eżekuzzjoni, tawwal il-mistoqsijiet u kkumplika l-iżvilupp.

Għall-istess tabelli ġew prodotti ħafna talbiet eteroġenji. Imwejjed popolari sofrew speċjalment, bħat-tabella msemmija hawn fuq. ordnijiet jew imwejjed Ħanut tal-pizza. Intużaw biex juru interfaces operattivi fil-kċina, analytics. Sit ieħor ikkuntattjahom (dodopizza.ru), fejn f'kull ħin jistgħu jiġu f'daqqa ħafna talbiet. 

Id-dejta ma kinitx aggregata u ħafna kalkoli saru fuq il-fly bl-użu tal-bażi. Dan ħoloq kalkoli bla bżonn u tagħbija addizzjonali. 

Ħafna drabi l-kodiċi mar għad-database meta ma setax jagħmel dan. X'imkien ma kienx hemm biżżejjed operazzjonijiet bl-ingrossa, x'imkien ikun meħtieġ li tinfirex talba waħda f'diversi permezz tal-kodiċi sabiex titħaffef u tiżdied l-affidabbiltà. 

Koeżjoni u offuskazzjoni fil-kodiċi

Moduli li suppost kellhom ikunu responsabbli għall-parti tagħhom tan-negozju ma għamlux b'mod onest. Xi wħud minnhom kellhom duplikazzjoni tal-funzjonijiet għar-rwoli. Pereżempju, negozjant lokali li huwa responsabbli għall-attività ta' kummerċjalizzazzjoni tan-netwerk fil-belt tiegħu kellu juża kemm l-interface "Admin" (biex toħloq promozzjonijiet) kif ukoll l-interface "Office Manager" (biex tara l-impatt tal-promozzjonijiet fuq in-negozju). Naturalment, ġewwa ż-żewġ moduli użaw l-istess servizz li ħadem ma 'promozzjonijiet bonus.

Is-servizzi (klassijiet fi ħdan proġett kbir monolitiku wieħed) jistgħu jsejħu lil xulxin biex jarrikkixxu d-dejta tagħhom.

Bil-klassijiet tal-mudell infushom li jaħżnu d-dejta, ix-xogħol fil-kodiċi sar b'mod differenti. X'imkien kien hemm kostrutturi li permezz tagħhom kien possibbli li jiġu speċifikati oqsma meħtieġa. X'imkien dan sar permezz ta' proprjetajiet pubbliċi. Naturalment, il-kisba u t-trasformazzjoni tad-data mid-database kienet varjata. 

Il-loġika kienet jew fil-kontrolluri jew fil-klassijiet tas-servizz. 

Dawn jidhru li huma kwistjonijiet minuri, iżda naqqsu ħafna l-iżvilupp u naqqsu l-kwalità, u wasslu għal instabbiltà u bugs. 

Il-kumplessità ta 'żvilupp kbir

Inqalgħu diffikultajiet fl-iżvilupp innifsu. Kien meħtieġ li jsiru blokki differenti tas-sistema, u b'mod parallel. It-twaħħil tal-ħtiġijiet ta 'kull komponent f'kodiċi wieħed sar dejjem aktar diffiċli. Ma kienx faċli li taqbel u jekk jogħġbok il-komponenti kollha fl-istess ħin. Ma' dan kien hemm limitazzjonijiet fit-teknoloġija, speċjalment fir-rigward tal-bażi u l-frontend. Kien meħtieġ li jQuery jiġi abbandunat lejn oqfsa ta 'livell għoli, speċjalment f'termini ta' servizzi tal-klijenti (websajt).

F'xi partijiet tas-sistema, databases aktar adattati għal dan jistgħu jintużaw.. Per eżempju, aktar tard kellna l-każ ta 'użu li nimxu minn Redis għal CosmosDB biex naħżnu basket ta' ordnijiet. 

Timijiet u żviluppaturi involuti fil-qasam tagħhom riedu b'mod ċar aktar awtonomija għas-servizzi tagħhom, kemm f'termini ta 'żvilupp u t-tnedija. Jingħaqdu kunflitti, rilaxx kwistjonijiet. Jekk għall-iżviluppaturi 5 din il-problema hija insinifikanti, allura b'10, u aktar u aktar bit-tkabbir ippjanat, kollox isir aktar serju. U 'l quddiem kellu jkun l-iżvilupp ta' applikazzjoni mobbli (bdiet fl-2017, u fl-2018 kienet waqgħa kbira). 

Partijiet differenti tas-sistema kienu jeħtieġu livelli differenti ta’ stabbiltà, iżda minħabba l-konnettività qawwija tas-sistema, ma stajniex nipprovdu dan. Żball fl-iżvilupp ta 'funzjoni ġdida fil-pannell tal-amministrazzjoni seta' seħħ fl-aċċettazzjoni ta 'ordni fuq is-sit, minħabba li l-kodiċi huwa komuni u jista' jerġa 'jintuża, id-database u d-data huma wkoll l-istess.

Probabbilment ikun possibbli li jiġu evitati dawn l-iżbalji u problemi fi ħdan il-qafas ta 'arkitettura monolitika-modulari bħal din: agħmel diviżjoni tar-responsabbiltà, tiffattura kemm il-kodiċi kif ukoll id-database, tissepara b'mod ċar is-saffi minn xulxin, tissorvelja l-kwalità kuljum. Iżda s-soluzzjonijiet arkitettoniċi magħżula u l-fokus fuq l-espansjoni rapida tal-funzjonalità tas-sistema wasslu għal problemi f'termini ta 'stabbiltà.

Kif il-blog Power of the Mind poġġa l-cash registers fir-ristoranti

Jekk it-tkabbir tan-netwerk tal-pizzerija (u t-tagħbija) kompla bl-istess pass, imbagħad wara ftit il-waqgħat ikunu tali li s-sistema ma titlax. Juri sew il-problemi li bdejna niffaċċjaw sal-2015, hawn storja bħal din. 

Fil-blog "Qawwa tal-moħħ” kien widget li wera data dwar id-dħul għas-sena tan-netwerk kollu. Il-widget aċċessa l-API pubblika Dodo, li tipprovdi din id-dejta. Din l-istatistika bħalissa hija disponibbli fuq http://dodopizzastory.com/. Il-widget intwera fuq kull paġna u għamel talbiet fuq tajmer kull 20 sekonda. It-talba marret fuq api.dodopizza.ru u talbet:

  • in-numru ta' pizzerijas fin-netwerk;

  • dħul totali tan-netwerk mill-bidu tas-sena;

  • dħul għal-lum.

It-talba għal statistika dwar id-dħul marret dritt għad-database u bdiet titlob data dwar ordnijiet, aggregat data fuq il-fly u tagħti l-ammont. 

Cash desks fir-ristoranti marru għall-istess tabella ta 'ordnijiet, ħatt lista ta' ordnijiet riċevuti għal-lum, u ordnijiet ġodda żdiedu magħha. Il-cash registers għamlu t-talbiet tagħhom kull 5 sekondi jew fuq l-aġġornament tal-paġna.

Id-dijagramma dehret hekk:

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

Waqgħa waħda, Fyodor Ovchinnikov kiteb artiklu twil u popolari fuq il-blog tiegħu. Ħafna nies ġew fil-blog u bdew jaqraw kollox bir-reqqa. Filwaqt li kull wieħed min-nies li ġew kien qed jaqra l-artiklu, il-widget tad-dħul ħadem sew u talab l-API kull 20 sekonda.

L-API sejjaħ proċedura maħżuna biex tikkalkula s-somma tal-ordnijiet kollha mill-bidu tas-sena għall-pizzerijas kollha fin-netwerk. L-aggregazzjoni kienet ibbażata fuq it-tabella tal-ordnijiet, li hija popolari ħafna. Il-cash desks kollha tar-ristoranti miftuħa kollha f'dak il-ħin imorru fih. Il-cash desks ma baqgħux jirrispondu, l-ordnijiet ma ġewx aċċettati. Ma ġewx aċċettati wkoll mis-sit, ma dehrux fuq it-tracker, il-maniġer tax-xift ma setax jarahom fl-interface tiegħu. 

Din mhix l-unika storja. Sal-ħarifa tal-2015, kull nhar ta 'Ġimgħa t-tagħbija fuq is-sistema kienet kritika. Diversi drabi tfejna l-API pubblika, u darba, saħansitra kellna nitfi s-sit, għax xejn ma għen. Kien hemm anke lista ta 'servizzi b'ordni ta' għeluq taħt tagħbijiet tqal.

Minn issa 'l quddiem, tibda l-ġlieda tagħna mat-tagħbijiet u għall-istabbilizzazzjoni tas-sistema (mill-ħarifa 2015 sal-ħarifa 2018). Hekk ġara”waqgħa kbira". Barra minn hekk, xi drabi seħħew ukoll fallimenti, xi wħud kienu sensittivi ħafna, iżda l-perjodu ġenerali ta 'instabilità issa jista' jitqies li għadda.

Tkabbir rapidu tan-negozju

Għaliex ma setax isir mill-ewwel? Ħares lejn it-tabelli li ġejjin.

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

Fl-2014-2015 ukoll kien hemm ftuħ fir-Rumanija u kien qed jitħejja ftuħ fl-Istati Uniti.

In-netwerk kiber malajr ħafna, infetħu pajjiżi ġodda, dehru formati ġodda ta 'pizzerias, pereżempju, infetħet pizzeria fil-food court. Dan kollu kien jeħtieġ attenzjoni sinifikanti speċifikament għall-espansjoni tal-funzjonijiet Dodo IS. Mingħajr dawn il-funzjonijiet kollha, mingħajr traċċar fil-kċina, kont ta 'prodotti u telf fis-sistema, li juri l-ħruġ ta' ordni fis-sala tal-qorti tal-ikel, bilkemm inkunu nitkellmu dwar l-arkitettura "korretta" u l-approċċ "korrett" biex żvilupp issa.

Ostaklu ieħor għar-reviżjoni f'waqtha tal-arkitettura u ġeneralment l-attenzjoni għall-problemi tekniċi kienet il-kriżi tal-2014. Affarijiet bħal dawn laqtu ħafna opportunitajiet biex it-timijiet jikbru, speċjalment għal negozju żagħżugħ bħal Dodo Pizza.

Soluzzjonijiet Mgħaġġla Li Għenu

Problemi meħtieġa soluzzjonijiet. Konvenzjonalment, is-soluzzjonijiet jistgħu jinqasmu f'2 gruppi:

  • Dawk veloċi li jitfu n-nar u jagħtu marġni żgħir ta 'sigurtà u jixtrulna ħin biex nibdlu.

  • Sistemiku u, għalhekk, twil. Inġinerija mill-ġdid ta 'numru ta' moduli, diviżjoni ta 'arkitettura monolitika f'servizzi separati (ħafna minnhom m'huma xejn mikro, iżda pjuttost servizzi makro, u hemm xi ħaġa dwarha Ir-rapport ta' Andrey Morevskiy). 

Il-lista niexfa ta 'bidliet malajr hija kif ġej:

Skala l-kaptan tal-bażi

Naturalment, l-ewwel ħaġa li ssir biex tittratta t-tagħbijiet hija li tiżdied il-kapaċità tas-server. Dan sar għad-database prinċipali u għas-servers tal-web. Alas, dan huwa possibbli biss sa ċertu limitu, allura jsir għali wisq.

Mill-2014, morna f'Azure, ktibna wkoll dwar dan is-suġġett dak iż-żmien fl-artiklu "Kif Dodo Pizza Iwassal Pizza billi tuża l-Microsoft Azure Cloud". Iżda wara serje ta 'żidiet fis-server għall-bażi, ħarġu kontra l-ispiża. 

Repliki bażi għall-qari

Saru żewġ repliki għall-bażi:

ReadReplica għal talbiet ta’ referenza. Jintuża biex taqra direttorji, tip, belt, triq, pizzeria, prodotti (dominju mibdul bil-mod), u f'dawk l-interfaces fejn dewmien żgħir huwa aċċettabbli. Kien hemm 2 minn dawn ir-repliki, żgurajna d-disponibbiltà tagħhom bl-istess mod bħall-masters.

ReadReplica għal Talbiet tar-Rapport. Din id-database kellha disponibbiltà aktar baxxa, iżda r-rapporti kollha marru għaliha. Ħallihom ikollhom talbiet kbar għal kalkolu mill-ġdid tad-dejta enormi, iżda ma jaffettwawx id-database prinċipali u l-interfaces operattivi. 

Caches fil-kodiċi

Ma kien hemm l-ebda caches imkien fil-kodiċi (fil-livelli kollha). Dan wassal għal talbiet addizzjonali, mhux dejjem meħtieġa, għad-database mgħobbija. Il-caches kienu l-ewwel kemm fil-memorja kif ukoll fuq servizz ta 'cache estern, jiġifieri Redis. Kollox kien invalidat mill-ħin, is-settings kienu speċifikati fil-kodiċi.

Servers backend multipli

Il-backend tal-applikazzjoni kien jeħtieġ ukoll li jiġi skalat biex jimmaniġġa l-piżijiet tax-xogħol miżjuda. Kien meħtieġ li jsir cluster minn iis-server wieħed. Aħna skedajna mill-ġdid sessjoni ta’ applikazzjoni mill-memorja għal RedisCache, li għamilha possibbli li jsiru diversi servers wara sempliċi load balancer b'round robin. Għall-ewwel, intuża l-istess Redis bħal għall-caches, imbagħad inqasam f'diversi. 

Bħala riżultat, l-arkitettura saret aktar ikkumplikata ...

Storja ta 'l-Arkitettura Dodo IS: Monolith Bikri

… iżda ftit mit-tensjoni tneħħiet.

U mbagħad kien meħtieġ li jerġa 'jagħmel il-komponenti mgħobbija, li aħna wettaqna. Se nitkellmu dwar dan fil-parti li jmiss.

Sors: www.habr.com

Żid kumment