Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Gibag-o ni Habr ang kalibutan. Kapin na sa usa ka tuig ang among pag-blog. Mga unom ka bulan ang milabay, nakadawat kami usa ka hingpit nga lohikal nga feedback gikan sa mga Khabrovites: "Dodo, giingon nimo bisan diin nga adunay ka kaugalingon nga sistema. Ug unsa kini nga sistema? Ug nganong gikinahanglan man kini sa kadena sa pizza?

Naglingkod kami, naghunahuna ug nakaamgo nga husto ka. Gisulayan namon nga ipasabut ang tanan sa among mga tudlo, apan kini migawas nga gisi ug wala’y kompleto nga paghulagway sa sistema. Sa ingon nagsugod ang usa ka taas nga panaw sa pagkolekta sa kasayuran, pagpangita sa mga tagsulat ug pagsulat sa usa ka serye sa mga artikulo bahin sa Dodo IS. Adto na ta!

Mga Pagpasalamat: Salamat sa pagpaambit sa imong feedback kanamo. Salamat kaniya, sa katapusan among gihulagway ang sistema, nag-compile sa usa ka teknikal nga radar ug sa dili madugay mopagawas sa usa ka dako nga paghulagway sa among mga proseso. Kung wala ka, 5 years pa unta mi naglingkod didto.

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Serye sa mga artikulo nga "Unsa ang Dodo IS?" nagsulti mahitungod sa:

  1. Sayo nga monolith sa Dodo IS (2011-2015). (Sa pag-uswag...)
  2. Ang agianan sa likod nga opisina: lahi nga mga base ug bus. (naa ka diri)
  3. Ang agianan sa kilid sa kliyente: facade sa ibabaw sa base (2016-2017). (Sa pag-uswag...)
  4. Ang kasaysayan sa tinuod nga microservices. (2018-2019). (Sa pag-uswag...)
  5. Natapos ang paggabas sa monolith ug pagpalig-on sa arkitektura. (Sa pag-uswag...)

Kung interesado ka nga mahibal-an ang uban pa - isulat sa mga komento.

Opinyon sa kronolohikal nga paghulagway gikan sa tagsulat
Kanunay kong maghimo usa ka miting alang sa mga bag-ong empleyado sa hilisgutan nga "System Architecture". Gitawag namo kini nga "Intro sa Dodo IS Architecture" ug kini kabahin sa proseso sa onboarding alang sa mga bag-ong developers. Nagsulti sa usa ka porma o lain bahin sa among arkitektura, bahin sa mga bahin niini, natawo ako usa ka piho nga pamaagi sa kasaysayan sa paghulagway.

Sa naandan, atong gitan-aw ang sistema isip usa ka hugpong sa mga sangkap (teknikal o mas taas nga lebel), mga module sa negosyo nga nakig-interact sa usag usa aron makab-ot ang pipila ka tumong. Ug kung ang ingon nga pagtan-aw gipakamatarung alang sa disenyo, nan kini dili angay alang sa paghulagway ug pagsabut. Adunay daghang mga hinungdan dinhi:

  • Ang reyalidad lahi sa naa sa papel. Dili tanan molihok sumala sa katuyoan. Ug kami interesado kung giunsa kini nahimo ug molihok.
  • Ang makanunayon nga presentasyon sa impormasyon. Sa tinuud, mahimo kang moadto sa kronolohikal gikan sa sinugdanan hangtod sa karon nga kahimtang.
  • Gikan sa yano hangtod sa komplikado. Dili sa kinatibuk-an, apan sa atong kaso mao kini. Ang arkitektura mibalhin gikan sa mas simple nga mga pamaagi ngadto sa mas komplikado. Kasagaran pinaagi sa komplikasyon, ang mga problema sa katulin ug kalig-on sa pagpatuman nasulbad, ingon man usab sa dosena nga uban pang mga kabtangan gikan sa lista sa mga dili kinahanglanon nga kinahanglanon (dinhi maayo nga gisulti bahin sa pagtandi sa pagkakomplikado sa ubang mga kinahanglanon).

Sa 2011, ang Dodo IS nga arkitektura ingon niini:

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Sa 2020, kini nahimong mas komplikado ug nahimong sama niini:

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Sa unsang paagi nahitabo kini nga ebolusyon? Ngano nga gikinahanglan ang lainlaing mga bahin sa sistema? Unsang mga desisyon sa arkitektura ang gihimo ug ngano? Atong masayran niining serye sa mga artikulo.

Ang unang mga problema sa 2016: nganong ang mga serbisyo mobiya sa monolith

Ang una nga mga artikulo gikan sa siklo mao ang bahin sa mga serbisyo nga una nga nagbulag gikan sa monolith. Aron mabutang ka sa konteksto, isulti ko kanimo kung unsang mga problema ang among naa sa sistema sa pagsugod sa 2016, nga kinahanglan namon atubangon ang pagbulag sa mga serbisyo.

Usa ka database sa MySql, diin ang tanan nga mga aplikasyon nga naglungtad nianang panahona sa Dodo IS nagsulat sa ilang mga rekord. Ang mga sangputanan mao ang:

  • Bug-at nga load (nga adunay 85% sa mga hangyo alang sa pagbasa).
  • Ang base mitubo. Tungod niini, ang gasto ug suporta niini nahimong problema.
  • Usa ka punto sa kapakyasan. Kung ang usa ka aplikasyon nga nagsulat sa database kalit nga nagsugod sa pagbuhat niini nga mas aktibo, nan ang ubang mga aplikasyon mibati niini sa ilang kaugalingon.
  • Inefficiency sa pagtipig ug mga pangutana. Kasagaran ang datos gitipigan sa pipila ka istruktura nga kombenyente alang sa pipila nga mga senaryo apan dili angay alang sa uban. Ang mga indeks makapadali sa pipila ka mga operasyon, apan makapahinay sa uban.
  • Ang pipila sa mga problema gikuha pinaagi sa dali nga gihimo nga mga cache ug mga replika sa pagbasa sa mga base (kini mahimong usa ka bulag nga artikulo), apan gitugotan lang nila sila nga makakuha og oras ug wala masulbad ang problema.

Ang problema mao ang presensya sa monolith mismo. Ang mga sangputanan mao ang:

  • Single ug talagsaon nga pagpagawas.
  • Ang kalisud sa hiniusang pag-uswag sa daghang mga tawo.
  • Kawalay katakus sa pagdala sa mga bag-ong teknolohiya, bag-ong mga balangkas ug mga librarya.

Ang mga problema sa base ug monolith gihulagway sa daghang mga higayon, pananglitan, sa konteksto sa mga pag-crash sa sayong bahin sa 2018 (Mahimong sama sa Munch, o pipila ka mga pulong bahin sa teknikal nga utang, Ang adlaw nga si Dodo IS mihunong. Asynchronous nga Script ΠΈ Ang istorya sa langgam nga Dodo gikan sa pamilyang Phoenix. Ang Dakong Pagkapukan ni Dodo IS), mao nga dili na ko magdugay. Isulti lang nako nga gusto namon nga hatagan ang labi nga pagka-flexible sa pagpauswag sa mga serbisyo. Una sa tanan, nabalaka kini sa mga labing puno ug gamut sa tibuuk nga sistema - Auth ug Tracker.

Ang Dalan sa Balik Opisina: Managbulag nga mga Base ug Bus

Pag-navigate sa kapitulo

  1. Monolith scheme 2016
  2. Pagsugod sa Pagdiskarga sa Monolith: Pagbulag ug Pagbulag sa Tracker
  3. Unsa ang gibuhat ni Auth?
  4. Diin gikan ang mga load?
  5. Pagdiskarga sa Auth
  6. Unsa ang gibuhat sa Tracker?
  7. Diin gikan ang mga load?
  8. Pagdiskarga sa Tracker

Monolith scheme 2016

Ania ang mga nag-unang bloke sa Dodo IS 2016 monolith, ug sa ubos mao ang usa ka transcript sa ilang mga nag-unang buluhaton.
Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina
Paghatud sa Cashier. Pag-account alang sa mga courier, pag-isyu sa mga order sa mga courier.
Contact center. Pagdawat sa mga order pinaagi sa operator.
site. Ang among mga website (dodopizza.ru, dodopizza.co.uk, dodopizza.by, ug uban pa).
Mama. Serbisyo sa awtorisasyon ug panghimatuod alang sa back office.
Tracker. Order tracker sa kusina. Serbisyo alang sa pagmarka sa mga kahimtang sa pagkaandam kung nag-andam usa ka order.
Cash desk sa Restaurant. Pagkuha og mga order sa usa ka restawran, mga interface sa cashier.
export. Pag-upload sa mga taho sa 1C alang sa accounting.
Mga pahibalo ug mga invoice. Mga voice command sa kusina (pananglitan, "Niabot ang bag-ong pizza") + pag-imprenta sa invoice para sa mga courier.
Shift Manager. Mga interface alang sa trabaho sa shift manager: listahan sa mga order, performance graphs, pagbalhin sa mga empleyado ngadto sa shift.
Tagdumala sa Opisina. Mga interface alang sa trabaho sa franchisee ug manager: pagdawat sa mga empleyado, mga taho sa trabaho sa pizzeria.
Scoreboard sa restawran. Ipakita ang menu sa mga TV sa mga pizzeria.
admin. Mga setting sa usa ka piho nga pizzeria: menu, presyo, accounting, promo code, promosyon, banner sa website, ug uban pa.
Personal nga Account sa Empleyado. Mga iskedyul sa trabaho sa mga empleyado, kasayuran bahin sa mga empleyado.
Lupon sa Pagdasig sa Kusina. Usa ka bulag nga screen nga nagbitay sa kusina ug nagpakita sa katulin sa mga naghimo sa pizza.
komunikasyon. Pagpadala sa sms ug email.
FileStorage. Kaugalingong serbisyo alang sa pagdawat ug pag-isyu sa mga static nga file.

Ang unang mga pagsulay sa pagsulbad sa mga problema nakatabang kanamo, apan kini temporaryo lamang nga pahulay. Wala sila nahimong mga solusyon sa sistema, mao nga klaro nga adunay kinahanglan buhaton sa mga base. Pananglitan, aron mabahin ang kinatibuk-ang database ngadto sa daghang mga espesyal nga mga.

Pagsugod sa Pagdiskarga sa Monolith: Pagbulag ug Pagbulag sa Tracker

Ang mga nag-unang serbisyo nga nagrekord ug nagbasa gikan sa database labaw pa sa uban:

  1. Awth. Serbisyo sa awtorisasyon ug panghimatuod alang sa back office.
  2. Tracker. Order tracker sa kusina. Serbisyo alang sa pagmarka sa mga kahimtang sa pagkaandam kung nag-andam usa ka order.

Unsa ang gibuhat ni Auth?

Ang Auth usa ka serbisyo diin ang mga tiggamit maka-log in sa likod nga opisina (adunay lahi nga independente nga agianan sa kilid sa kliyente). Gitawag usab kini sa hangyo aron masiguro nga ang gikinahanglan nga mga katungod sa pag-access anaa ug nga kini nga mga katungod wala mausab sukad sa katapusang pag-login. Pinaagi niini, ang mga himan mosulod sa pizzeria.

Pananglitan, gusto namon nga magbukas sa usa ka display nga adunay mga status sa nahuman nga mga order sa TV nga nagbitay sa hawanan. Dayon among ablihan ang auth.dodopizza.ru, pilia ang "Login as a device", makita ang usa ka code nga mahimong masulod sa usa ka espesyal nga panid sa kompyuter sa shift manager, nga nagpakita sa matang sa device (device). Ang TV mismo mobalhin sa gusto nga interface sa pizzeria niini ug magsugod sa pagpakita sa mga ngalan sa mga kustomer kansang mga order andam na didto.

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Diin gikan ang mga load?

Ang matag naka-log in nga user sa back office moadto sa database, ngadto sa user table alang sa matag hangyo, mobira sa user pinaagi sa sql query ug magsusi kon aduna ba siyay gikinahanglang access ug katungod niini nga page.

Ang matag usa sa mga aparato parehas ra sa lamesa sa aparato, gisusi ang papel niini ug ang pag-access niini. Ang usa ka dako nga gidaghanon sa mga hangyo sa master database modala ngadto sa iyang loading ug pag-usik sa mga kapanguhaan sa komon nga database alang niini nga mga operasyon.

Pagdiskarga sa Auth

Ang Auth adunay usa ka nahilit nga domain, nga mao, ang datos bahin sa mga tiggamit, pag-login o mga aparato mosulod sa serbisyo (sa pagkakaron) ug nagpabilin didto. Kung adunay usa nga nanginahanglan kanila, nan siya moadto sa kini nga serbisyo alang sa datos.

ANG. Ang orihinal nga laraw sa trabaho mao ang mosunod:

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Gusto nakong ipasabut og gamay kung giunsa kini nagtrabaho:

  1. Ang usa ka hangyo gikan sa gawas moabut sa backend (adunay Asp.Net MVC), nagdala niini usa ka cookie sa sesyon, nga gigamit aron makuha ang datos sa sesyon gikan sa Redis (1). Naglangkob kini sa kasayuran bahin sa mga pag-access, ug dayon ang pag-access sa controller bukas (3,4), o dili.
  2. Kung walay access, kinahanglan nimo nga moagi sa pamaagi sa pagtugot. Dinhi, alang sa kayano, kini gipakita isip bahin sa dalan sa samang hiyas, bisan tuod kini usa ka transisyon ngadto sa login page. Sa kaso sa usa ka positibo nga senaryo, makakuha kami usa ka husto nga nahuman nga sesyon ug moadto sa Backoffice Controller.
  3. Kung adunay datos, nan kinahanglan nimo nga susihon kini alang sa kalabutan sa base sa gumagamit. Nabag-o na ba ang iyang papel, dili na ba siya tugotan sa panid karon? Sa kini nga kaso, pagkahuman madawat ang sesyon (1), kinahanglan nimo nga diretso nga moadto sa database ug susihon ang pag-access sa gumagamit gamit ang layer sa lohika sa panghimatuud (2). Sunod, bisan sa login page, o adto sa controller. Ang ingon usa ka yano nga sistema, apan dili kaayo sukaranan.
  4. Kung ang tanan nga mga pamaagi gipasa, nan atong laktawan ang dugang sa lohika sa mga controller ug mga pamaagi.

Ang datos sa tiggamit nahimulag gikan sa tanan nga uban nga datos, kini gitipigan sa usa ka bulag nga lamesa sa membership, ang mga gimbuhaton gikan sa AuthService logic layer mahimo nga maayo nga mga pamaagi sa api. Ang mga utlanan sa domain klaro nga gihubit: ang mga tiggamit, ilang mga tahas, pag-access sa datos, paghatag ug pagbawi sa pag-access. Ang tanan tan-awon aron kini makuha sa usa ka lahi nga serbisyo.

MAHIMO. Busa ilang gibuhat:

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Kini nga pamaagi adunay daghang mga problema. Pananglitan, ang pagtawag sa usa ka pamaagi sa sulod sa usa ka proseso dili parehas sa pagtawag sa usa ka eksternal nga serbisyo pinaagi sa http. Latency, kasaligan, maintainability, transparency sa operasyon mao ang bug-os nga lain-laing mga. Si Andrey Morevskiy naghisgot sa mas detalyado mahitungod sa maong mga problema sa iyang taho. "50 ka Shades sa Microservices".

Ang serbisyo sa pag-authenticate ug, uban niini, ang serbisyo sa aparato gigamit alang sa back office, nga mao, alang sa mga serbisyo ug mga interface nga gigamit sa produksiyon. Ang pag-authenticate alang sa mga serbisyo sa kliyente (sama sa usa ka website o usa ka mobile application) mahitabo nga gilain nga wala gigamit ang Auth. Ang panagbulag milungtad mga usa ka tuig, ug karon nag-atubang na usab kami niini nga hilisgutan, gibalhin ang sistema sa mga bag-ong serbisyo sa pag-authentication (nga adunay mga sumbanan nga protocol).

Nganong dugay man ang panagbulag?
Adunay daghang mga problema sa dalan nga nagpahinay kanamo:

  1. Gusto namong ibalhin ang data sa user, device, ug authentication gikan sa mga database nga espesipiko sa nasud ngadto sa usa. Aron mahimo kini, kinahanglan namon nga hubaron ang tanan nga mga lamesa ug paggamit gikan sa int identifier hangtod sa global nga UUId identifier (bag-o lang gibag-o kini nga code Roman Bukin "Uuid - usa ka dako nga istorya sa usa ka gamay nga istruktura" ug open source nga proyekto Primitibo). Ang pagtipig sa datos sa tiggamit (tungod kay kini personal nga impormasyon) adunay mga limitasyon ug alang sa pipila ka mga nasud gikinahanglan nga tipigan kini nga gilain. Apan kinahanglan nga ang global id sa tiggamit.
  2. Daghang mga lamesa sa database adunay kasayuran sa pag-audit bahin sa tiggamit nga naghimo sa operasyon. Nagkinahanglan kini og dugang nga mekanismo alang sa pagkamakanunayon.
  3. Pagkahuman sa paghimo sa mga serbisyo sa api, adunay usa ka taas ug hinay-hinay nga panahon sa pagbalhin sa lain nga sistema. Ang pagbalhin kinahanglan nga hapsay alang sa mga tiggamit ug kinahanglan nga manual nga trabaho.

Skema sa pagrehistro sa aparato sa usa ka pizzeria:

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Kinatibuk-ang arkitektura human sa pagkuha sa serbisyo sa Auth ug Devices:

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Alang sa 2020, nagtrabaho kami sa usa ka bag-ong bersyon sa Auth, nga gibase sa sumbanan sa pagtugot sa OAuth 2.0. Kini nga sumbanan medyo komplikado, apan kini mapuslanon alang sa pagpalambo sa usa ka pass-through authentication nga serbisyo. Sa artikulo nga "Mga subtlety sa pagtugot: usa ka kinatibuk-ang ideya sa teknolohiya sa OAuth 2.0Β» Kami Alexey Chernyaev misulay sa pagsulti bahin sa sumbanan sa yano ug tin-aw kutob sa mahimo aron makadaginot ka sa oras sa pagtuon niini.

Unsa ang gibuhat sa Tracker?

Karon mahitungod sa ikaduha sa loaded nga mga serbisyo. Ang tracker adunay doble nga papel:

  • Sa usa ka bahin, ang tahas niini mao ang pagpakita sa mga empleyado sa kusina kung unsang mga order ang naa karon sa trabaho, kung unsang mga produkto ang kinahanglan lutoon karon.
  • Sa laing bahin, aron ma-digitize ang tanan nga mga proseso sa kusina.

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Kung ang usa ka bag-ong produkto makita sa usa ka order (pananglitan, pizza), kini moadto sa Rolling out tracker station. Sa kini nga estasyon, adunay usa ka tighimo sa pizza nga nagkuha usa ka tinapay sa gikinahanglan nga gidak-on ug giligid kini, pagkahuman iyang namatikdan sa tracker tablet nga nahuman na niya ang iyang buluhaton ug gibalhin ang linukot nga dough base sa sunod nga istasyon - "Initiation" .

Didto, ang sunod nga tighimo sa pizza nagpuno sa pizza, dayon nagtimaan sa tablet nga nahuman na niya ang iyang buluhaton ug gibutang ang pizza sa oven (kini usab usa ka lahi nga istasyon nga kinahanglan isulat sa tablet). Ang ingon nga sistema gikan pa sa sinugdanan sa Dodo ug gikan sa sinugdanan sa paglungtad sa Dodo IS. Gitugotan ka niini nga hingpit nga masubay ug ma-digitize ang tanan nga mga transaksyon. Dugang pa, ang tracker nagsugyot kon unsaon pagluto sa usa ka partikular nga produkto, paggiya sa matag matang sa produkto sumala sa mga laraw sa paghimo niini, pagtipig sa labing maayo nga oras sa pagluto alang sa produkto, ug pagsubay sa tanang operasyon sa produkto.

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga OpisinaIngon niini ang hitsura sa screen sa tablet sa istasyon sa tracker nga "Raskatka"

Diin gikan ang mga load?

Ang matag usa sa mga pizzeria adunay mga lima ka papan nga adunay usa ka tracker. Sa 2016, kami adunay labaw pa sa 100 ka pizzeria (ug karon labaw pa sa 600). Ang matag usa sa mga papan naghangyo sa backend kausa sa matag 10 segundos ug nag-scrape sa datos gikan sa lamesa sa order (koneksyon sa kliyente ug adres), komposisyon sa order (koneksyon sa produkto ug timailhan sa gidaghanon), ang lamesa sa accounting sa panukmod (ang ang oras sa pagpamugos gisubay niini). Kung ang usa ka magbubuhat sa pizza nag-klik sa usa ka produkto sa tracker, ang mga entry sa tanan niini nga mga lamesa gi-update. Ang lamesa sa pag-order kasagaran, kini usab adunay mga pagsal-ot kung nagdawat usa ka order, mga update gikan sa ubang mga bahin sa sistema ug daghang mga pagbasa, pananglitan, sa usa ka TV nga nagbitay sa usa ka pizzeria ug gipakita ang nahuman nga mga order sa mga kustomer.

Sa panahon sa pakigbisog sa mga karga, kung ang tanan ug ang tanan na-cache ug gibalhin sa asynchronous nga kopya sa base, kini nga mga operasyon kauban ang tracker nagpadayon sa pag-adto sa master base. Kinahanglan nga walay bisan unsa nga lag, ang datos kinahanglan nga up-to-date, wala'y pag-sync dili madawat.

Usab, ang kakulang sa kaugalingong mga lamesa ug mga indeks niini wala magtugot sa pagsulat sa mas espesipikong mga pangutana nga gipahaom alang sa ilang paggamit. Pananglitan, mahimo nga maayo alang sa usa ka tracker nga adunay usa ka indeks alang sa usa ka pizzeria sa usa ka lamesa sa pag-order. Kanunay namong tangtangon ang mga order sa pizzeria gikan sa database sa tracker. Sa parehas nga oras, alang sa pagdawat usa ka order, dili kaayo hinungdanon kung unsang pizzeria ang nahulog, labi ka hinungdanon kung kinsa nga kliyente ang naghimo niini nga order. Ug nagpasabot nga gikinahanglan ang indeks sa kliyente. Dili usab kinahanglan alang sa tracker nga tipigan ang id sa giimprinta nga resibo o mga promosyon sa bonus nga may kalabutan sa order sa lamesa sa order. Kini nga kasayuran dili interesado sa among serbisyo sa tracker. Sa usa ka komon nga monolithic database, ang mga lamesa mahimo lamang nga usa ka pagkompromiso tali sa tanan nga mga tiggamit. Usa kini sa orihinal nga mga problema.

ANG. Ang orihinal nga arkitektura mao ang:

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Bisan kung gibulag sa lainlaing mga proseso, kadaghanan sa base sa code nagpabilin nga komon alang sa lainlaing mga serbisyo. Ang tanan sa ubos sa mga controller single ug nagpuyo sa parehas nga repository. Gigamit namo ang kasagarang mga pamaagi sa mga serbisyo, mga repositoryo, usa ka komon nga base, diin nahimutang ang komon nga mga lamesa.

Pagdiskarga sa Tracker

Ang nag-unang problema sa tracker mao nga ang datos kinahanglan nga i-synchronize tali sa lainlaing mga database. Kini usab ang nag-unang kalainan gikan sa pagbulag sa serbisyo sa Auth, ang order ug ang kahimtang niini mahimong mabag-o ug kinahanglan nga ipakita sa lainlaing mga serbisyo.

Gidawat namon ang usa ka order sa Checkout sa Restaurant (kini usa ka serbisyo), gitipigan kini sa database sa status nga "Gidawat". Human niana, siya kinahanglan nga moadto sa tracker, diin iyang usbon ang iyang kahimtang sa makadaghang higayon: gikan sa "Kusina" ngadto sa "Packed". Sa samang higayon, ang pipila ka mga eksternal nga impluwensya gikan sa Cashier o ang interface sa Shift Manager mahimong mahitabo sa order. Ihatag nako ang mga status sa order uban ang ilang paghulagway sa lamesa:

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina
Ang laraw alang sa pagbag-o sa mga kahimtang sa order ingon niini:

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Ang mga kahimtang nagbag-o tali sa lainlaing mga sistema. Ug dinhi ang tracker dili usa ka katapusan nga sistema diin ang datos sirado. Nakita namon ang daghang posible nga mga pamaagi sa pagbahin sa ingon nga kaso:

  1. Gipunting namon ang tanan nga mga aksyon sa pag-order sa usa ka serbisyo. Sa among kaso, kini nga kapilian nanginahanglan daghang serbisyo aron magamit ang order. Kung mohunong kami niini, makuha namon ang ikaduha nga monolith. Dili namo masulbad ang problema.
  2. Ang usa ka sistema nagtawag sa lain. Ang ikaduha nga kapilian mas makapaikag. Apan uban niini, posible ang mga kadena sa mga tawag (mga kapakyasan sa cascading), ang koneksyon sa mga sangkap mas taas, mas lisud ang pagdumala.
  3. Nag-organisar kami og mga panghitabo, ug ang matag serbisyo nakigsulti sa lain pinaagi niini nga mga panghitabo. Ingon usa ka sangputanan, kini ang ikatulo nga kapilian nga gipili, kung diin ang tanan nga mga serbisyo nagsugod sa pagbinayloay sa mga panghitabo sa usag usa.

Ang kamatuoran nga gipili namon ang ikatulo nga kapilian nagpasabut nga ang tracker adunay kaugalingon nga database, ug alang sa matag pagbag-o sa han-ay, magpadala kini usa ka panghitabo bahin niini, diin ang ubang mga serbisyo nag-subscribe ug nahulog usab sa master database. Aron mahimo kini, nanginahanglan kami usa ka serbisyo nga makasiguro sa paghatud sa mga mensahe taliwala sa mga serbisyo.

Nianang panahona, aduna na kami RabbitMQ sa stack, busa ang katapusang desisyon nga gamiton kini isip usa ka broker sa mensahe. Ang diagram nagpakita sa transisyon sa usa ka order gikan sa Restaurant Cashier pinaagi sa Tracker, diin gibag-o niini ang status niini ug ang pagpakita niini sa interface sa Manager's Orders. MAHIMO:

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Pag-order sa lakang sa lakang
Ang agianan sa order magsugod sa usa sa mga serbisyo sa gigikanan sa order. Ania ang Cashier sa Restaurant:

  1. Sa pag-checkout, ang order hingpit nga andam, ug panahon na nga ipadala kini sa tracker. Ang panghitabo diin ang tracker gi-subscribe ilabay.
  2. Ang tracker, nga nagdawat sa usa ka order alang sa iyang kaugalingon, nagtipig niini sa kaugalingon nga database, nga naghimo sa panghitabo nga "Order Gidawat sa Tracker" ug ipadala kini sa RMQ.
  3. Adunay daghang mga handler nga nag-subscribe sa bus sa kalihokan matag order. Alang kanamo, ang usa nga naghimo sa pag-synchronize sa usa ka monolithic base hinungdanon.
  4. Ang handler nakadawat usa ka panghitabo, nagpili gikan niini nga datos nga hinungdanon alang niini: sa among kaso, kini ang kahimtang sa order nga "Gidawat sa Tracker" ug gi-update ang entidad sa order niini sa panguna nga database.

Kung adunay usa nga nanginahanglan usa ka order gikan sa mga order sa lamesa nga monolithic, nan mahimo usab nimo kini basahon gikan didto. Pananglitan, ang interface sa Orders sa Shift Manager nagkinahanglan niini:

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Ang tanan nga ubang mga serbisyo mahimo usab nga mag-subscribe sa pag-order sa mga panghitabo gikan sa tracker aron magamit kini alang sa ilang kaugalingon.

Kung pagkahuman sa usa ka panahon ang order gikuha sa trabaho, nan ang kahimtang niini una nga nagbag-o sa database niini (Tracker database), ug dayon ang "OrderIn Progress" nga panghitabo dali nga nahimo. Nakasulod usab kini sa RMQ, gikan diin kini gi-synchronize sa usa ka monolithic database ug gihatud sa ubang mga serbisyo. Mahimong adunay lainlaing mga problema sa dalan, daghang mga detalye bahin niini makita sa taho ni Zhenya Peshkov mahitungod sa mga detalye sa pagpatuman sa Katapusan nga Pagkamauyon sa Tracker.

Katapusan nga arkitektura pagkahuman sa mga pagbag-o sa Auth ug Tracker

Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina

Pagsumaryo sa intermediate nga resulta: Sa sinugdan, naa koy ideya nga i-pack ang siyam ka tuig nga kasaysayan sa sistema sa Dodo IS ngadto sa usa ka artikulo. Gusto ko nga dali ug yano nga maghisgot bahin sa mga yugto sa ebolusyon. Bisan pa, sa paglingkod alang sa materyal, akong naamgohan nga ang tanan mas komplikado ug makapaikag kay sa kini.

Sa pagpamalandong sa mga benepisyo (o kakulang niini) sa ingon nga materyal, nakahinapos ako nga ang padayon nga pag-uswag imposible kung wala’y kompleto nga mga talaan sa mga panghitabo, detalyado nga retrospective ug pagtuki sa akong nangaging mga desisyon.

Nanghinaut ko nga kini mapuslanon ug makapaikag alang kanimo nga makat-on bahin sa among agianan. Karon nag-atubang ako sa usa ka pagpili kung unsang bahin sa sistema sa Dodo IS ang ihulagway sa sunod nga artikulo: isulat sa mga komento o pagboto.

Ang mga rehistradong tiggamit lamang ang makaapil sa survey. Sign in, walay sapayan.

Unsang bahina sa Dodo IS ang gusto nimong masayran sa sunod nga artikulo?

  • 24,1%Sayo nga monolith sa Dodo IS (2011-2015)14

  • 24,1%Unang mga problema ug ang ilang mga solusyon (2015-2016)14

  • 20,7%Ang agianan sa kilid sa kliyente: facade over base (2016-2017)12

  • 36,2%Ang kasaysayan sa tinuod nga microservices (2018-2019)21

  • 44,8%Kompleto nga paggabas sa monolith ug pagpalig-on sa arkitektura26

  • 29,3%Mahitungod sa dugang nga mga plano alang sa pagpalambo sa sistema17

  • 19,0%Dili ko gusto nga mahibal-an ang bisan unsa bahin sa Dodo IS11

58 ka tiggamit ang nagboto. 6 ka tiggamit ang nag-abstain.

Source: www.habr.com

Idugang sa usa ka comment