Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

Los yog txhua lub tuam txhab tsis zoo siab nrog lub monolith tsis zoo siab rau nws tus kheej.

Kev txhim kho ntawm Dodo IS system pib tam sim ntawd, zoo li Dodo Pizza lag luam, hauv 2011. Nws tau ua raws li lub tswv yim ntawm kev ua tiav thiab tag nrho digitization ntawm cov txheej txheem kev lag luam, thiab ntawm lawv tus kheej, uas txawm tias thaum xyoo 2011 ua rau muaj lus nug ntau thiab tsis ntseeg. Tab sis rau 9 xyoo tam sim no peb tau ua raws li txoj kev no - nrog peb tus kheej txoj kev loj hlob, uas pib nrog ib tug monolith.

Kab lus no yog "cov lus teb" rau cov lus nug "Vim li cas rov sau cov qauv thiab ua qhov loj thiab hloov mus ntev?" rov qab mus rau kab lus dhau los "Keeb kwm ntawm Dodo yog Architecture: Txoj Kev ntawm Lub Chaw Haujlwm Rov Qab". Kuv mam li pib nrog yuav ua li cas txoj kev loj hlob ntawm Dodo IS pib, yuav ua li cas tus thawj architecture zoo li, yuav ua li cas tshiab modules tshwm sim, thiab vim li cas cov teeb meem loj-scale hloov yuav tsum tau ua.

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

Cov kab lus "Dodo yog dab tsi?" qhia txog:

  1. Thaum ntxov monolith hauv Dodo IS (2011-2015). (koj nyob ntawm no)

  2. Txoj Kev Back Office: Separate Bases and Bus.

  3. Cov neeg sab nrauv txoj kev: facade hla lub hauv paus (2016-2017). (Nyob rau hauv kev kawm ...)

  4. Keeb kwm ntawm microservices tiag. (2018-2019). (Nyob rau hauv kev kawm ...)

  5. Ua tiav sawing ntawm monolith thiab stabilization ntawm architecture. (Nyob rau hauv kev kawm ...)

Keeb kwm architecture

Xyoo 2011, Dodo IS architecture zoo li no:

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

Thawj module hauv architecture yog kev txiav txim txais. Cov txheej txheem ua lag luam yog:

  • tus neeg thov hu rau lub pizzeria;

  • tus thawj tswj tuav lub xov tooj;

  • lees txais kev txiav txim hauv xov tooj;

  • sau nws nyob rau hauv parallel nyob rau hauv qhov kev txiav txim txais interface: cov ntaub ntawv hais txog tus neeg siv, cov ntaub ntawv ntawm kev txiav txim cov ntsiab lus, tus me nyuam chaw nyob yog muab rau hauv tus account. 

Lub interface ntawm cov ntaub ntawv system zoo li no ...

Thawj version ntawm Lub Kaum Hli 2011:

Kev txhim kho me ntsis thaum Lub Ib Hlis 2012

Dodo Pizza Information System Delivery Pizza Restaurant

Cov peev txheej rau kev txhim kho thawj qhov kev txiav txim coj module raug txwv. Peb yuav tsum tau ua ntau, sai thiab nrog ib pab neeg me. Ib pab pawg me yog 2 tus tsim tawm uas tau tsim lub hauv paus rau tag nrho cov kab ke yav tom ntej.

Lawv thawj qhov kev txiav txim siab txiav txim siab txoj hmoo ntawm pawg thev naus laus zis:

  • Backend ntawm ASP.NET MVC, C# lus. Cov neeg tsim tawm tau dotnetchiki, pawg no tau paub thiab zoo siab rau lawv.

  • Frontend ntawm Bootstrap thiab JQuery: cov neeg siv cuam tshuam ntawm tus kheej sau cov qauv thiab cov ntawv sau. 

  • MySQL database: tsis muaj daim ntawv tso cai nqi, siv tau yooj yim.

  • Servers ntawm Windows Server, vim .NET ces tsuas yog nyob rau hauv Windows (peb yuav tsis tham txog Mono).

Lub cev, tag nrho cov no tau qhia hauv "dedic ntawm tus tswv tsev". 

Order Intake Application Architecture

Tom qab ntawd txhua tus twb tau tham txog microservices, thiab SOA tau siv rau hauv cov haujlwm loj rau 5 xyoos, piv txwv li, WCF tau tso tawm xyoo 2006. Tab sis tom qab ntawd lawv tau xaiv ib qho kev txhim khu kev qha thiab pov thawj.

Ntawm no nws yog.

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

Asp.Net MVC yog Razor, uas, ntawm kev thov los ntawm ib daim ntawv lossis los ntawm tus neeg siv khoom, ua rau nplooj ntawv HTML nrog rau cov neeg rau zaub mov rendering. Ntawm tus neeg siv khoom, CSS thiab JS tsab ntawv twb tso tawm cov ntaub ntawv thiab, yog tias tsim nyog, ua AJAX thov los ntawm JQuery.

Kev thov ntawm tus neeg rau zaub mov xaus rau hauv cov chav kawm *Controller, qhov chaw ua haujlwm thiab tsim cov nplooj ntawv HTML kawg tshwm sim hauv txoj kev. Cov tswj tau thov rau txheej txheej logic hu ua * Kev Pabcuam. Txhua qhov kev pabcuam cuam tshuam rau qee yam ntawm kev lag luam:

  • Piv txwv li, DepartmentStructureService tau muab cov ntaub ntawv qhia txog pizzerias, ntawm chav haujlwm. Ib chav haujlwm yog ib pawg ntawm pizzerias khiav los ntawm ib tus neeg ua lag luam.

  • ReceivingOrdersService tau txais thiab xam qhov muaj pes tsawg leeg ntawm qhov kev txiav txim.

  • Thiab SmsService xa SMS los ntawm kev hu rau API cov kev pabcuam xa SMS.

Cov kev pabcuam ua tiav cov ntaub ntawv los ntawm cov ntaub ntawv, khaws cia kev lag luam logic. Txhua qhov kev pabcuam muaj ib lossis ntau dua * Repositories nrog lub npe tsim nyog. Lawv twb muaj cov lus nug rau cov txheej txheem khaws cia hauv cov ntaub ntawv thiab ib txheej ntawm cov duab kos. Muaj kev lag luam logic hauv kev khaws cia, tshwj xeeb tshaj yog ntau ntawm cov uas tau tshaj tawm cov ntaub ntawv. ORM tsis tau siv, txhua leej txhua tus cia siab rau ntawm tes sau sql. 

Kuj tseem muaj txheej txheej ntawm cov qauv sau npe thiab cov chav pab cuam sib xws, piv txwv li, Chav Kawm Order uas khaws qhov kev txiav txim. Nyob rau hauv tib qhov chaw, nyob rau hauv lub txheej, muaj ib tug pab rau converting cov zaub cov ntawv nyeem raws li cov xaiv txiaj.

Tag nrho cov no tuaj yeem sawv cev los ntawm cov qauv zoo li no:

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

Order Txoj Kev

Xav txog ib txoj hauv kev yooj yim pib los tsim ib qho kev txiav txim.

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

Thaum xub thawj, lub xaib tau zoo li qub. Nws muaj tus nqi ntawm nws, thiab nyob rau sab saum toj - tus lej xov tooj thiab cov ntawv sau "Yog tias koj xav tau pizza - hu rau tus lej thiab xaj." Yuav kom txiav txim, peb yuav tsum tau siv ib tug yooj yim khiav: 

  • Tus neeg siv khoom mus xyuas qhov chaw zoo li qub nrog tus nqi, xaiv cov khoom lag luam thiab hu rau tus lej teev npe ntawm lub xaib.

  • Cov neeg siv khoom npe cov khoom lawv xav ntxiv rau qhov kev txiav txim.

  • Muab nws qhov chaw nyob thiab lub npe.

  • Tus neeg teb xov tooj lees txais qhov kev txiav txim.

  • Qhov kev txiav txim yog tso tawm nyob rau hauv lub txais kev txiav txim interface.

Nws tag nrho pib nrog displaying cov zaub mov. Tus neeg siv nkag-hauv-tus neeg siv khoom lees txais tsuas yog ib qho kev txiav txim ntawm ib lub sijhawm. Yog li ntawd, lub laub cua ntsawj ntshab tuaj yeem khaws cia hauv nws qhov kev sib kho (tus neeg siv qhov kev sib kho yog khaws cia hauv nco). Muaj ib lub tawb nqa khoom uas muaj cov khoom thiab cov ntaub ntawv cov neeg siv khoom.

Tus neeg siv khoom npe cov khoom, tus neeg teb xov tooj nyem rau + ib sab ntawm cov khoom, thiab kev thov raug xa mus rau lub server. Cov ntaub ntawv hais txog cov khoom raug rub tawm los ntawm cov ntaub ntawv thiab cov ntaub ntawv hais txog cov khoom raug ntxiv rau lub laub.

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Yog lawm, ntawm no koj tsis tuaj yeem rub cov khoom los ntawm cov ntaub ntawv, tab sis hloov nws los ntawm frontend. Tab sis kom pom tseeb, kuv tau qhia raws nraim txoj hauv kev los ntawm cov ntaub ntawv. 

Tom ntej no, sau qhov chaw nyob thiab lub npe ntawm tus neeg siv khoom. 

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

Thaum koj nias "Create Order":

  • Qhov kev thov raug xa mus rau OrderController.SaveOrder().

  • Peb tau txais Cart los ntawm kev sib kho, muaj cov khoom hauv qhov peb xav tau.

  • Peb ntxiv lub laub nrog cov ntaub ntawv hais txog tus neeg siv khoom thiab dhau mus rau AddOrder txoj kev ntawm chav kawm txais txais kev txiav txim, qhov twg nws tau khaws cia rau hauv cov ntaub ntawv. 

  • Cov ntaub ntawv muaj cov ntxhuav nrog kev txiav txim, muaj pes tsawg leeg ntawm kev txiav txim, tus neeg siv khoom, thiab lawv txhua tus txuas nrog.

  • Qhov kev txiav txim tso saib interface mus thiab rub tawm qhov kev txiav txim zaum kawg thiab qhia lawv.

Tshiab modules

Kev txiav txim yog qhov tseem ceeb thiab tsim nyog. Koj tsis tuaj yeem ua lag luam pizza yog tias koj tsis muaj daim ntawv xaj muag. Yog li ntawd, lub kaw lus pib tau txais kev ua haujlwm - kwv yees li ntawm 2012 txog 2015. Lub sijhawm no, ntau qhov sib txawv ntawm qhov system tshwm sim, uas kuv yuav hu modules, as opposed to the concept of service or product. 

Ib qho module yog ib txheej ntawm kev ua haujlwm uas koom ua ke los ntawm qee lub hom phiaj kev lag luam. Tib lub sijhawm, lawv lub cev nyob hauv tib daim ntawv thov.

Modules tuaj yeem hu ua system blocks. Piv txwv li, qhov no yog kev qhia module, admin interfaces, zaub mov tracker hauv chav ua noj, kev tso cai. Cov no yog txhua tus neeg siv sib txawv, qee qhov txawm tias muaj qhov sib txawv ntawm qhov pom. Nyob rau tib lub sijhawm, txhua yam yog nyob rau hauv lub moj khaum ntawm ib daim ntawv thov, ib qho kev khiav haujlwm. 

Technically, cov modules tau tsim raws li Cheeb Tsam (xws li ib lub tswv yim txawm tseem nyob hauv asp.net tub ntxhais). Muaj cov ntaub ntawv cais rau frontend, qauv, nrog rau lawv tus kheej cov chav kawm tswj. Raws li qhov tshwm sim, qhov system tau hloov pauv los ntawm qhov no ...

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

... nyob rau hauv no:

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

Qee qhov modules tau siv los ntawm cov chaw sib cais (kev ua haujlwm tau ua tiav), vim muaj kev ua haujlwm sib cais tag nrho thiab ib feem yog vim muaj kev sib cais me ntsis, kev txhim kho ntau dua. Qhov no:

  • site - thawj version lub vev xaib dodopizza.ru.

  • export: uploading cov ntaub ntawv los ntawm Dodo IS rau 1C. 

  • Tej - tus kheej account ntawm tus neeg ua haujlwm. Nws tau tsim nyias thiab muaj nws tus kheej nkag nkag thiab cais tsim.

  • fs - ib qhov project rau hosting statics. Tom qab ntawd peb tsiv tawm ntawm nws, txav tag nrho cov statics mus rau Akamai CDN. 

Lwm cov blocks yog nyob rau hauv daim ntawv thov BackOffice. 

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

Lub npe piav qhia:

  • Cashier - Tsev noj mov tus neeg txais nyiaj.

  • ShiftManager - cuam tshuam rau lub luag haujlwm "Shift Manager": kev txheeb xyuas kev ua haujlwm ntawm kev muag pizzeria, muaj peev xwm muab cov khoom tso rau hauv cov npe nres, hloov qhov kev txiav txim.

  • OfficeManager - interfaces rau "Pizzeria Manager" thiab "Franchisee" lub luag haujlwm. Ntawm no yog sau ua haujlwm rau kev teeb tsa lub pizzeria, nws cov nyiaj txhawb nqa, tau txais thiab ua haujlwm nrog cov neeg ua haujlwm, ceeb toom.

  • PublicScreens - interfaces rau TVs thiab ntsiav tshuaj dai hauv pizzerias. TVs tso saib cov ntawv qhia zaub mov, cov ntaub ntawv tshaj tawm, kev txiav txim raws li txoj cai thaum xa khoom. 

Lawv siv cov txheej txheem kev pabcuam, ib qho Dodo.Core domain class block, thiab ib qho hauv paus. Qee lub sij hawm lawv tseem tuaj yeem ua raws li kev hloov pauv mus rau ib leeg. Xws li cov chaw ib leeg, xws li dodopizza.ru lossis personal.dodopizza.ru, mus rau cov kev pabcuam dav dav.

Thaum cov qauv tshiab tshwm sim, peb sim rov siv dua cov cai uas twb tau tsim lawm ntawm cov kev pabcuam, khaws cov txheej txheem thiab cov ntxhuav hauv cov ntaub ntawv kom siab tshaj plaws. 

Txhawm rau kom nkag siab zoo dua ntawm qhov ntsuas ntawm cov qauv tsim hauv qhov system, ntawm no yog daim duab qhia los ntawm 2012 nrog cov phiaj xwm kev loj hlob:

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

Los ntawm 2015, txhua yam nyob rau hauv daim ntawv qhia thiab txawm ntau yog nyob rau hauv ntau lawm.

  • Kev lees txais kev txiav txim tau loj hlob mus rau hauv ib qho kev sib cais ntawm Lub Chaw Tiv Thaiv, qhov kev txiav txim tau txais los ntawm tus neeg teb xov tooj.

  • Muaj cov ntxaij vab tshaus pej xeem nrog cov ntawv qhia zaub mov thiab cov ntaub ntawv dai hauv pizzerias.

  • Lub chav ua noj muaj ib lub module uas cia li ua si lub suab lus "New Pizza" thaum ib qho kev txiav txim tshiab tuaj txog, thiab tseem luam tawm ib daim ntawv them nqi xa mus. Qhov no ua kom yooj yim rau cov txheej txheem hauv chav ua noj, tso cai rau cov neeg ua haujlwm tsis txhob cuam tshuam los ntawm ntau cov haujlwm yooj yim.

  • Lub tsev xa khoom tau dhau los ua qhov Kev Xa Khoom Sib cais, qhov twg qhov kev txiav txim tau raug xa mus rau tus xa khoom uas tau ua haujlwm dhau los. Nws lub sijhawm ua haujlwm tau raug coj mus rau hauv tus account rau kev suav nyiaj hli. 

Nyob rau tib lub sijhawm, los ntawm 2012 txog 2015, ntau tshaj 10 tus tsim tawm tau tshwm sim, 35 pizzerias qhib, xa cov kab ke mus rau Romania thiab npaj rau kev qhib cov khw muag khoom hauv Tebchaws Meskas. Cov neeg tsim khoom tsis ua haujlwm nrog txhua txoj haujlwm, tab sis tau muab faib ua pab pawg. txhua tus tshwj xeeb hauv nws tus kheej ib feem ntawm qhov system. 

Teeb meem

Xws li vim yog architecture (tab sis tsis yog xwb).

Chaos nyob rau hauv lub hauv paus

Ib lub hauv paus yog yooj yim. Kev sib raug zoo tuaj yeem ua tiav hauv nws, thiab ntawm kev siv cov cuab yeej ua rau hauv cov ntaub ntawv sib raug zoo. Ua haujlwm nrog nws yog qhov paub thiab yooj yim, tshwj xeeb tshaj yog tias muaj ob peb lub rooj thiab cov ntaub ntawv me me.

Tab sis dhau 4 xyoo ntawm txoj kev loj hlob, cov ntaub ntawv tau tawm mus txog 600 lub rooj, 1500 cov txheej txheem khaws cia, ntau yam kuj muaj logic. Alas, cov txheej txheem khaws cia tsis coj kom zoo dua thaum ua haujlwm nrog MySQL. Lawv tsis cached los ntawm lub hauv paus, thiab khaws cov logic nyob rau hauv lawv complicates txoj kev loj hlob thiab debugging. Code rov siv dua kuj nyuaj.

Ntau lub rooj tsis muaj qhov ntsuas tsim nyog, qhov chaw, ntawm qhov tsis sib xws, muaj ntau qhov ntsuas, uas ua rau nws nyuaj rau ntxig. Nws yog ib qho tsim nyog los hloov kho txog 20 lub rooj - kev lag luam los tsim kev txiav txim tuaj yeem siv li 3-5 vib nas this. 

Cov ntaub ntawv hauv cov ntxhuav tsis yog nyob rau hauv daim ntawv tsim nyog tshaj plaws. Ib qho yuav tsum tau ua denormalization. Ib feem ntawm cov ntaub ntawv tau txais tsis tu ncua yog nyob rau hauv ib kem nyob rau hauv daim ntawv ntawm ib tug XML qauv, qhov no nce lub sij hawm ua tiav, lengthened cov lus nug thiab complex txoj kev loj hlob.

Rau tib lub rooj raug tsim heev heterogeneous thov. Cov rooj nrov nrov raug kev txom nyem tshwj xeeb, zoo li cov lus hais saum toj no. kev txiav txim los yog rooj pizzeria. Lawv tau siv los tso saib kev ua haujlwm cuam tshuam hauv chav ua noj, tshuaj xyuas. Lwm qhov chaw hu rau lawv (dodopizza.ru kev), qhov twg thaum twg los tau ntau qhov kev thov tuaj yeem tuaj sai sai. 

Cov ntaub ntawv tsis tau muab sau ua ke thiab ntau qhov kev suav tau tshwm sim ntawm ya siv lub hauv paus. Qhov no tsim cov kev suav tsis tsim nyog thiab kev thauj khoom ntxiv. 

Feem ntau cov cai mus rau lub database thaum nws ua tsis tau. Ib qho twg tsis muaj kev ua haujlwm txaus, ib qhov twg yuav tsum tau kis ib qho kev thov mus rau ob peb los ntawm cov cai kom ceev thiab nce kev cia siab. 

Cohesion thiab obfuscation nyob rau hauv code

Modules uas yuav tsum tau ua lub luag haujlwm rau lawv feem ntawm kev lag luam tsis ua ncaj ncees. Ib txhia ntawm lawv muaj duplication ntawm kev ua haujlwm rau lub luag haujlwm. Piv txwv li, ib tus neeg lag luam hauv zos uas yog lub luag haujlwm rau lub network kev lag luam hauv nws lub nroog yuav tsum siv ob qho tib si "Admin" interface (los tsim kev tshaj tawm) thiab "Office Manager" interface (saib qhov cuam tshuam ntawm kev tshaj tawm ntawm kev lag luam). Tau kawg, hauv ob lub modules siv tib qhov kev pabcuam uas ua haujlwm nrog kev txhawb nqa nyiaj ntxiv.

Cov kev pabcuam (cov chav kawm hauv ib txoj haujlwm loj monolithic) tuaj yeem hu rau ib leeg los txhawb lawv cov ntaub ntawv.

Nrog cov qauv chav kawm lawv tus kheej uas khaws cov ntaub ntawv, kev ua haujlwm hauv cov cai tau ua txawv. Qee qhov chaw muaj cov kws tsim kho los ntawm qhov uas nws muaj peev xwm hais meej cov teb xav tau. Qhov chaw no tau ua los ntawm pej xeem cov khoom. Tau kawg, tau txais thiab hloov cov ntaub ntawv los ntawm cov ntaub ntawv muaj ntau yam. 

Lub logic yog nyob rau hauv cov tswj los yog nyob rau hauv cov kev pab cuam chav kawm. 

Cov no zoo li yog cov teeb meem me me, tab sis lawv ua rau kev loj hlob qeeb thiab txo qis, ua rau muaj kev tsis ruaj khov thiab kab mob. 

Lub complexity ntawm ib tug loj txoj kev loj hlob

Cov teeb meem tshwm sim hauv kev txhim kho nws tus kheej. Nws yog tsim nyog los ua kom sib txawv blocks ntawm lub system, thiab nyob rau hauv parallel. Ua kom haum cov kev xav tau ntawm txhua qhov sib xyaw ua ke ua ib qho nyuaj zuj zus. Nws tsis yooj yim rau kev pom zoo thiab thov tag nrho cov khoom nyob rau tib lub sijhawm. Ntxiv rau qhov no yog cov kev txwv hauv technology, tshwj xeeb tshaj yog hais txog lub hauv paus thiab frontend. Nws yog ib qho tsim nyog yuav tsum tso tseg jQuery mus rau theem siab ua haujlwm, tshwj xeeb tshaj yog nyob rau hauv cov nqe lus ntawm cov neeg siv khoom (lub vev xaib).

Hauv qee qhov ntawm qhov system, cov ntaub ntawv tsim nyog rau qhov no tuaj yeem siv tau.. Piv txwv li, tom qab ntawd peb muaj cov ntaub ntawv siv los ntawm Redis mus rau CosmosDB los khaws cov pob tawb xaj. 

Cov pab pawg thiab cov neeg tsim khoom koom nrog hauv lawv txoj haujlwm kom meej meej xav tau kev ywj pheej ntxiv rau lawv cov kev pabcuam, ob qho tib si ntawm kev txhim kho thiab kev nthuav tawm. Ua ke tsis sib haum xeeb, tso cov teeb meem. Yog tias rau 5 tus tsim tawm qhov teeb meem no tsis tseem ceeb, tom qab ntawd nrog 10, thiab ntau dua li nrog kev npaj loj hlob, txhua yam yuav loj dua. Thiab ua ntej yuav yog kev txhim kho ntawm daim ntawv thov mobile (nws pib hauv 2017, thiab hauv 2018 nws yog loj poob). 

Qhov sib txawv ntawm qhov system xav tau ntau theem ntawm kev ruaj ntseg, tab sis vim muaj kev sib txuas ntawm lub cev muaj zog, peb tsis tuaj yeem muab qhov no. Ib qho kev ua yuam kev hauv kev txhim kho kev ua haujlwm tshiab hauv lub vaj huam sib luag admin tuaj yeem ua tau zoo nyob rau hauv qhov kev lees txais ntawm qhov kev txiav txim ntawm lub xaib, vim tias cov cai yog ib txwm siv thiab rov siv tau, cov ntaub ntawv thiab cov ntaub ntawv kuj zoo ib yam.

Tej zaum nws yuav ua tau kom zam tau cov kev ua yuam kev no thiab teeb meem nyob rau hauv lub moj khaum ntawm xws li ib tug monolithic-modular architecture: ua ib tug faib lub luag hauj lwm, refactor ob lub chaws thiab cov ntaub ntawv, kom meej meej cais cov khaubncaws sab nraud povtseg ntawm ib leeg, saib xyuas qhov zoo txhua hnub. Tab sis cov kev xaiv architectural kev daws teeb meem thiab kev tsom mus rau kev nthuav dav sai ntawm lub zog ua haujlwm tau ua rau muaj teeb meem ntawm kev ruaj ntseg.

Yuav ua li cas Lub Hwj Chim ntawm Lub Siab blog muab cov ntawv sau nyiaj ntsuab hauv khw

Yog tias qhov kev loj hlob ntawm lub pizzeria network (thiab thauj khoom) txuas ntxiv mus rau tib lub sijhawm, tom qab ntawd tom qab lub caij nplooj zeeg yuav zoo li qhov system yuav tsis sawv. Zoo piav qhia txog cov teeb meem uas peb tau pib ntsib los ntawm 2015, ntawm no yog ib zaj dab neeg zoo li no. 

Hauv blog "Lub siab lub zog” yog ib lub widget uas qhia cov ntaub ntawv ntawm cov nyiaj tau los rau lub xyoo ntawm tag nrho lub network. Lub widget nkag mus rau Dodo pej xeem API, uas muab cov ntaub ntawv no. Cov txheeb cais tam sim no muaj nyob ntawm http://dodopizzastory.com/. Cov widget tau tshwm sim nyob rau txhua nplooj ntawv thiab tau thov ntawm lub sijhawm teem sijhawm txhua 20 vib nas this. Qhov kev thov mus rau api.dodopizza.ru thiab thov:

  • tus naj npawb ntawm pizzerias hauv lub network;

  • tag nrho cov nyiaj tau los ntawm lub network txij thaum pib ntawm lub xyoo;

  • nyiaj tau los rau hnub no.

Qhov kev thov rau kev txheeb cais ntawm cov nyiaj tau los ncaj qha mus rau hauv cov ntaub ntawv thiab pib thov cov ntaub ntawv ntawm kev txiav txim, sau cov ntaub ntawv ntawm ya thiab muab tus nqi. 

Cov rooj nyiaj ntsuab hauv cov khw noj mov mus rau tib lub rooj ntawm kev txiav txim, tshem tawm cov npe ntawm cov xaj tau txais rau hnub no, thiab cov xaj xaj tshiab tau ntxiv rau nws. Cov ntawv sau nyiaj ntsuab tau thov lawv txhua 5 vib nas this lossis ntawm nplooj ntawv tshiab.

Daim duab zoo li no:

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

Ib lub caij nplooj zeeg, Fyodor Ovchinnikov tau sau ib tsab xov xwm ntev thiab nrov ntawm nws qhov blog. Ntau tus neeg tuaj rau blog thiab pib nyeem txhua yam kom zoo. Thaum txhua tus neeg tuaj yeem nyeem cov ntawv, cov nyiaj tau los widget ua haujlwm tau zoo thiab thov API txhua 20 vib nas this.

API hu ua cov txheej txheem khaws cia los suav cov lej ntawm txhua qhov kev txiav txim txij thaum pib ntawm lub xyoo rau tag nrho cov pizzerias hauv lub network. Kev sib sau ua ke tau ua raws li cov lus txiav txim, uas yog nrov heev. Txhua lub rooj nyiaj ntsuab ntawm txhua lub tsev noj mov qhib thaum lub sijhawm ntawd mus rau nws. Cov rooj nyiaj ntsuab nres teb, xaj xaj tsis raug txais. Lawv kuj tsis tau txais los ntawm lub xaib, tsis tshwm sim ntawm tus tracker, tus thawj coj hloov pauv tsis tuaj yeem pom lawv hauv nws lub interface. 

Qhov no tsis yog zaj dab neeg xwb. Thaum lub caij nplooj zeeg xyoo 2015, txhua hnub Friday cov khoom thauj ntawm lub kaw lus tseem ceeb heev. Ob peb zaug peb muab cov API pej xeem, thiab ib zaug, peb txawm yuav tsum tau tua qhov chaw, vim tsis muaj dab tsi pab. Muaj txawm tias ib daim ntawv teev cov kev pabcuam nrog kev txiav txim kaw hauv qab hnyav.

Txij li tam sim no, peb qhov kev tawm tsam nrog kev thauj khoom thiab kev ruaj ntseg ntawm lub kaw lus pib (los ntawm lub caij nplooj zeeg 2015 txog lub caij nplooj zeeg 2018). Thaum ntawd tshwm sim "poob zoo heev". Tsis tas li ntawd, qee zaum kev ua tsis tiav kuj tshwm sim, qee qhov tau hnov ​​​​ntxhiab heev, tab sis tam sim no lub sijhawm tsis ruaj khov tuaj yeem suav tias dhau mus.

Kev lag luam loj hlob sai

Vim li cas tsis tuaj yeem ua tam sim ntawd? Cia li saib cov kab kos hauv qab no.

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

Tsis tas li ntawd nyob rau hauv 2014-2015 tau muaj kev qhib hauv Romania thiab qhib hauv Tebchaws Meskas tau npaj.

Lub network loj hlob sai heev, lub teb chaws tshiab tau qhib, cov qauv tshiab ntawm pizzerias tau tshwm sim, piv txwv li, lub pizzeria tau qhib ntawm lub tsev hais plaub. Tag nrho cov no xav tau kev saib xyuas tshwj xeeb rau kev nthuav dav ntawm Dodo IS lub luag haujlwm. Yog tias tsis muaj tag nrho cov haujlwm no, tsis muaj kev taug qab hauv chav ua noj, suav txog cov khoom lag luam thiab kev poob hauv lub cev, nthuav tawm qhov kev txiav txim hauv lub tsev hais plaub zaub mov, peb yuav tsis tshua tham txog "tsim" architecture thiab "tsim" mus kom ze. kev loj hlob tam sim no.

Lwm qhov teeb meem rau kev hloov kho raws sij hawm ntawm architecture thiab feem ntau saib xyuas cov teeb meem kev lag luam yog qhov teeb meem ntawm 2014. Tej yam zoo li no cuam tshuam rau cov hauv kev rau cov pab pawg kom loj hlob, tshwj xeeb tshaj yog rau cov lag luam hluas xws li Dodo Pizza.

Cov kev daws teeb meem ceev uas pab tau

Cov teeb meem xav tau kev daws teeb meem. Conventionally, kev daws teeb meem tuaj yeem muab faib ua 2 pawg:

  • Cov ceev ceev uas tua hluav taws thiab muab cov npoo me me ntawm kev nyab xeeb thiab yuav peb lub sijhawm hloov.

  • Systemic thiab, yog li ntawd, ntev. Reengineering ntawm ib tug xov tooj ntawm modules, faib ib tug monolithic architecture rau hauv nyias muaj nyias cov kev pab cuam (feem ntau ntawm lawv tsis nyob rau hauv tag nrho cov micro, tab sis theej macro kev pab cuam, thiab muaj ib yam dab tsi txog nws. Andrey Morevskiy tsab ntawv ceeb toom). 

Cov npe qhuav ntawm kev hloov ceev yog raws li hauv qab no:

Scale up base master

Tau kawg, thawj qhov uas tau ua los cuam tshuam nrog kev thauj khoom yog ua kom lub peev xwm ntawm cov neeg rau zaub mov. Qhov no tau ua tiav rau tus tswv database thiab rau web servers. Alas, qhov no tsuas yog ua tau mus txog ib qho kev txwv, ces nws yuav kim heev.

Txij li thaum xyoo 2014, peb tau tsiv mus rau Azure, peb kuj tau sau txog lub ntsiab lus ntawm lub sijhawm ntawd hauv tsab xov xwm "Yuav ua li cas Dodo Pizza xa pizza siv Microsoft Azure huab". Tab sis tom qab ib tug series ntawm nce nyob rau hauv lub server rau lub hauv paus, lawv tuaj tawm tsam tus nqi. 

Base replicas rau kev nyeem ntawv

Ob tug replicas tau ua rau lub hauv paus:

NyeemReplica rau kev thov. Nws yog siv los nyeem cov npe, hom, nroog, txoj kev, pizzeria, cov khoom lag luam (muab hloov maj mam), thiab hauv cov kev sib tshuam uas qhov kev ncua me me tau txais. Muaj 2 ntawm cov qauv no, peb ua kom lawv muaj nyob rau hauv tib txoj kev raws li tus tswv.

ReadReplica rau Daim Ntawv Qhia Thov. Cov ntaub ntawv no muaj tsawg dua, tab sis tag nrho cov ntaub ntawv tau mus rau nws. Cia lawv muaj kev thov hnyav rau cov ntaub ntawv loj, tab sis lawv tsis cuam tshuam rau cov ntaub ntawv tseem ceeb thiab kev ua haujlwm cuam tshuam. 

Caches hauv code

Tsis muaj caches nyob qhov twg hauv cov cai (txhua qhov). Qhov no ua rau ntxiv, tsis yog ib txwm tsim nyog, thov rau cov ntaub ntawv thauj khoom. Caches yog thawj zaug hauv-nco thiab ntawm kev pabcuam cache sab nraud, uas yog Redis. Txhua yam yog invalidated los ntawm lub sij hawm, cov chaw tau teev nyob rau hauv lub code.

Ntau lub backend servers

Lub backend ntawm daim ntawv thov kuj yuav tsum tau scaled los tswj cov hauj lwm ntau zog. Nws yog tsim nyog los ua ib pawg los ntawm ib tug iis-server. Peb tau teem dua daim ntawv thov kev sib tham los ntawm kev nco rau RedisCache, uas ua rau nws muaj peev xwm ua tau ntau lub servers tom qab ib qho yooj yim load balancer nrog round robin. Thaum xub thawj, tib Redis tau siv los ua caches, ces nws tau muab faib ua ob peb. 

Yog li ntawd, lub architecture tau dhau los ua qhov nyuaj ...

Keeb Kwm ntawm Dodo IS Architecture: Ib Tug Monolith Thaum Ntxov

… tab sis qee qhov kev ntxhov siab raug tshem tawm.

Thiab tom qab ntawd nws yog qhov yuav tsum tau rov ua dua cov khoom thauj khoom, uas peb tau ua tiav. Peb yuav tham txog qhov no hauv ntu tom ntej.

Tau qhov twg los: www.hab.com

Ntxiv ib saib