Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

O ang matag dili malipayon nga kompanya nga adunay monolith dili malipayon sa kaugalingon nga paagi.

Ang pag-uswag sa sistema sa Dodo IS nagsugod dayon, sama sa negosyo sa Dodo Pizza, kaniadtong 2011. Gibase kini sa ideya sa kompleto ug total nga pag-digitize sa mga proseso sa negosyo, ug sa ilang kaugalingon, nga bisan pa sa 2011 hinungdan sa daghang mga pangutana ug pagduhaduha. Apan sulod sa 9 ka tuig namong gisubay kini nga dalan - uban sa among kaugalingong kalamboan, nga nagsugod sa usa ka monolith.

Kini nga artikulo usa ka "tubag" sa mga pangutana nga "Ngano nga isulat pag-usab ang arkitektura ug maghimo sa ingon kadako ug dugay nga mga pagbag-o?" balik sa miaging artikulo "Kasaysayan sa Dodo IS Architecture: Ang Dalan sa Balik nga Opisina". Magsugod ko kung giunsa pagsugod ang pag-uswag sa Dodo IS, kung giunsa ang hitsura sa orihinal nga arkitektura, kung giunsa ang mga bag-ong module nga nagpakita, ug tungod sa kung unsang mga problema ang kinahanglan himuon nga dagkong mga pagbag-o.

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

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

  1. Sayo nga monolith sa Dodo IS (2011-2015). (naa ka diri)

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

  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...)

Inisyal nga arkitektura

Sa 2011, ang Dodo IS nga arkitektura ingon niini:

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

Ang una nga module sa arkitektura mao ang pagdawat sa order. Ang proseso sa negosyo mao ang:

  • ang kliyente nagtawag sa pizzeria;

  • gikuha sa manedyer ang telepono;

  • modawat ug order pinaagi sa telepono;

  • gipuno kini sa parallel sa order acceptance interface: kini nagkinahanglan sa asoy sa impormasyon mahitungod sa kliyente, data sa order detalye, delivery address. 

Ang interface sa sistema sa impormasyon ingon niini ...

Unang bersyon gikan sa Oktubre 2011:

Giayo gamay sa Enero 2012

Sistema sa Impormasyon sa Dodo Pizza Paghatud sa Pizza Restaurant

Ang mga kapanguhaan alang sa pagpalambo sa unang order sa pagkuha nga module limitado. Kinahanglan namon nga buhaton ang daghan, dali ug uban ang gamay nga team. Ang usa ka gamay nga team mao ang 2 nga mga developer nga nagbutang sa pundasyon alang sa tibuuk nga sistema sa umaabot.

Ang ilang una nga desisyon nagtino sa kapalaran sa stack sa teknolohiya:

  • Backend sa ASP.NET MVC, C# nga pinulongan. Ang mga nag-develop kay dotnetchiki, kini nga stack pamilyar ug makapahimuot kanila.

  • Frontend sa Bootstrap ug JQuery: mga interface sa gumagamit sa mga istilo ug mga script nga gisulat sa kaugalingon. 

  • MySQL database: walay gasto sa lisensya, sayon ​​gamiton.

  • Mga server sa Windows Server, tungod kay ang .NET mahimo ra sa ilawom sa Windows (dili namon hisgutan ang Mono).

Sa pisikal, kining tanan gipahayag sa "dedic at the hoster". 

Arkitektura sa Application Intake sa Order

Dayon ang tanan naghisgot na mahitungod sa mga microservice, ug ang SOA gigamit sa dagkong mga proyekto sulod sa 5 ka tuig, pananglitan, ang WCF gipagawas sa 2006. Apan gipili nila ang usa ka kasaligan ug napamatud-an nga solusyon.

Ania kini.

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

Ang Asp.Net MVC mao ang Razor, nga, kung gihangyo gikan sa usa ka porma o gikan sa usa ka kliyente, naghatag usa ka panid sa HTML nga adunay rendering sa server. Sa kliyente, ang CSS ug JS nga mga script nagpakita na og impormasyon ug, kung gikinahanglan, paghimo sa AJAX nga mga hangyo pinaagi sa JQuery.

Ang mga hangyo sa server matapos sa *Controller nga mga klase, diin ang pagproseso ug pagmugna sa katapusang HTML nga panid mahitabo sa pamaagi. Naghangyo ang mga controller sa usa ka layer sa logic nga gitawag og *Services. Ang matag usa sa mga serbisyo katumbas sa pipila ka aspeto sa negosyo:

  • Pananglitan, ang DepartmentStructureService naghatag ug impormasyon sa mga pizzeria, sa mga departamento. Ang departamento usa ka grupo sa mga pizzeria nga gipadagan sa usa ka franchisee.

  • Gidawat ug gikalkulo sa ReceivingOrdersService ang komposisyon sa order.

  • Ug ang SmsService nagpadala og SMS pinaagi sa pagtawag sa mga serbisyo sa API aron magpadala og SMS.

Ang mga serbisyo nagproseso sa datos gikan sa database, gitipigan nga lohika sa negosyo. Ang matag serbisyo adunay usa o daghan pa nga *Repositories nga adunay angay nga ngalan. Naglangkob na sila og mga pangutana sa gitipigan nga mga pamaagi sa database ug usa ka layer sa mga mappers. Adunay lohika sa negosyo sa mga tipiganan, labi na daghan sa mga nag-isyu sa datos sa pagreport. Wala gigamit ang ORM, ang tanan nagsalig sa sinulat sa kamot nga sql. 

Adunay usab usa ka layer sa modelo sa domain ug sagad nga mga klase sa katabang, pananglitan, ang klase sa Order nga nagtipig sa order. Sa samang dapit, sa layer, adunay usa ka katabang alang sa pag-convert sa display nga teksto sumala sa pinili nga currency.

Kining tanan mahimong irepresentar sa ingon nga modelo:

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

Paagi sa Pag-order

Hunahunaa ang usa ka gipasimple nga pasiuna nga paagi sa paghimo sa ingon nga usa ka order.

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

Sa sinugdan, static ang site. Kini adunay mga presyo niini, ug sa ibabaw - usa ka numero sa telepono ug ang inskripsiyon nga "Kung gusto nimo ang pizza - tawagan ang numero ug pag-order." Aron mag-order, kinahanglan namon nga ipatuman ang usa ka yano nga dagan: 

  • Ang kliyente mobisita sa usa ka static nga site nga adunay mga presyo, mopili sa mga produkto ug motawag sa numero nga nalista sa site.

  • Ang kustomer nagngalan sa mga produkto nga gusto nilang idugang sa order.

  • Naghatag sa iyang adres ug ngalan.

  • Gidawat sa operator ang order.

  • Ang order gipakita sa gidawat nga mga order interface.

Nagsugod ang tanan sa pagpakita sa menu. Ang usa ka naka-log-in nga user-operator modawat lamang sa usa ka order sa usa ka higayon. Busa, ang draft cart mahimong tipigan sa iyang sesyon (ang sesyon sa user gitipigan sa memorya). Adunay usa ka butang nga Cart nga adunay sulud nga mga produkto ug kasayuran sa kustomer.

Ang kustomer nagngalan sa produkto, ang operator nag-klik sa + sunod sa produkto, ug ang usa ka hangyo ipadala sa server. Ang impormasyon bahin sa produkto gikuha gikan sa database ug ang impormasyon bahin sa produkto gidugang sa kariton.

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Oo, dinhi dili nimo makuha ang produkto gikan sa database, apan ibalhin kini gikan sa frontend. Apan alang sa katin-awan, akong gipakita ang eksakto nga agianan gikan sa database. 

Sunod, isulod ang adres ug ngalan sa kliyente. 

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

Kung imong i-klik ang "Paghimo og Order":

  • Ang hangyo gipadala sa OrderController.SaveOrder().

  • Nakuha namo ang Cart gikan sa sesyon, adunay mga produkto sa gidaghanon nga among gikinahanglan.

  • Gidugangan namo ang Cart nga adunay impormasyon mahitungod sa kliyente ug ipasa kini sa AddOrder nga pamaagi sa ReceivingOrderService nga klase, diin kini gitipigan sa database. 

  • Ang database adunay mga lamesa nga adunay order, komposisyon sa order, kliyente, ug silang tanan konektado.

  • Ang order display interface moadto ug mobira sa pinakabag-o nga mga order ug ipakita kini.

Bag-ong mga module

Ang pagkuha sa order importante ug gikinahanglan. Dili ka makahimo og negosyo sa pizza kung wala kay order nga ibaligya. Busa, ang sistema nagsugod sa pag-angkon sa pag-andar - gibana-bana gikan sa 2012 ngadto sa 2015. Niini nga panahon, daghang lainlaing mga bloke sa sistema ang nagpakita, nga akong tawgon mga modulo, sukwahi sa konsepto sa serbisyo o produkto. 

Ang usa ka module usa ka hugpong sa mga gimbuhaton nga gihiusa sa pipila ka sagad nga katuyoan sa negosyo. Sa parehas nga oras, sila sa pisikal sa parehas nga aplikasyon.

Ang mga module mahimong tawgon nga mga bloke sa sistema. Pananglitan, kini usa ka module sa pagreport, mga interface sa admin, tracker sa pagkaon sa kusina, pagtugot. Kini tanan lainlain nga mga interface sa gumagamit, ang uban adunay lainlain nga istilo sa biswal. Sa parehas nga oras, ang tanan naa sa sulud sa usa ka aplikasyon, usa ka proseso nga nagdagan. 

Sa teknikal nga paagi, ang mga module gidisenyo isip Area (ang ingon nga ideya nagpabilin pa sa asp.net nga kinauyokan). Adunay lahi nga mga file alang sa frontend, mga modelo, ingon man sa ilang kaugalingon nga mga klase sa controller. Ingon usa ka sangputanan, ang sistema nabag-o gikan niini ...

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

... ngadto niini:

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

Ang ubang mga modulo gipatuman sa bulag nga mga site (mahimo nga proyekto), tungod sa usa ka hingpit nga bulag nga pagpaandar ug usa ka bahin tungod sa usa ka gamay nga bulag, mas nakapunting nga pag-uswag. Kini:

  • site - unang bersyon site dodopizza.ru.

  • export: pag-upload sa mga taho gikan sa Dodo IS para sa 1C. 

  • Personal nga - personal nga asoy sa empleyado. Gibuhat kini nga gilain ug adunay kaugalingon nga entry point ug lahi nga disenyo.

  • fs - usa ka proyekto alang sa pag-host sa statics. Sa ulahi mipahilayo kami niini, gibalhin ang tanang estatika sa Akamai CDN. 

Ang nahabilin nga mga bloke naa sa aplikasyon sa BackOffice. 

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

Katin-awan sa Ngalan:

  • Kahera - Kahera sa restawran.

  • ShiftManager - mga interface alang sa papel nga "Shift Manager": mga istatistika sa operasyon sa pagbaligya sa pizzeria, ang abilidad sa pagbutang sa mga produkto sa lista sa paghunong, pagbag-o sa order.

  • OfficeManager - mga interface alang sa "Pizzeria Manager" ug "Franchisee" nga mga tahas. Ania ang nakolekta nga mga gimbuhaton alang sa pag-set up sa usa ka pizzeria, ang mga promosyon sa bonus, pagdawat ug pagtrabaho kauban ang mga empleyado, mga taho.

  • PublicScreens - mga interface alang sa mga TV ug tablet nga nagbitay sa mga pizzeria. Gipakita sa mga TV ang menu, impormasyon sa advertising, status sa order sa paghatud. 

Gigamit nila ang usa ka komon nga layer sa serbisyo, usa ka komon nga Dodo.Core domain class block, ug usa ka komon nga base. Usahay mahimo gihapon silang manguna sa mga pagbalhin sa usag usa. Lakip ang indibidwal nga mga site, sama sa dodopizza.ru o personal.dodopizza.ru, miadto sa kinatibuk-ang serbisyo.

Sa diha nga ang bag-ong mga modules nagpakita, kami misulay sa paggamit pag-usab sa nahimo na nga code sa mga serbisyo, gitipigan nga mga pamaagi ug mga lamesa sa database ngadto sa maximum. 

Alang sa mas maayong pagsabot sa sukod sa mga module nga gihimo sa sistema, ania ang usa ka diagram gikan sa 2012 nga adunay mga plano sa kalamboan:

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

Sa 2015, ang tanan naa sa mapa ug labi pa sa produksiyon.

  • Ang pagdawat sa order mitubo ngadto sa usa ka bulag nga bloke sa Contact Center, diin ang order gidawat sa operator.

  • Adunay mga publikong screen nga adunay mga menu ug impormasyon nga nagbitay sa mga pizzeria.

  • Ang kusina adunay usa ka module nga awtomatiko nga nagpatugtog sa mensahe sa tingog nga "Bag-ong Pizza" kung moabut ang usa ka bag-ong order, ug nag-imprinta usab usa ka invoice alang sa courier. Gipasimple kaayo niini ang mga proseso sa kusina, gitugotan ang mga empleyado nga dili mabalda sa daghang mga yano nga operasyon.

  • Ang delivery unit nahimong separado nga Delivery Checkout, diin ang order gihatag ngadto sa courier nga kaniadto mikuha sa shift. Ang iyang oras sa pagtrabaho gikonsiderar alang sa pagkalkula sa sweldo. 

Sa susama, gikan sa 2012 ngadto sa 2015, labaw pa sa 10 ka mga developers ang mitungha, 35 ka mga pizzeria ang giablihan, gi-deploy ang sistema sa Romania ug nangandam alang sa pag-abli sa mga outlets sa Estados Unidos. Ang mga developers wala na mag-atubang sa tanan nga mga buluhaton, apan gibahin ngadto sa mga team. ang matag usa espesyalista sa kaugalingon nga bahin sa sistema. 

Mga problema

Naglakip tungod sa arkitektura (apan dili lamang).

Kagubot sa base

Ang usa ka base kombenyente. Ang pagkamakanunayon mahimong makab-ot niini, ug sa gasto sa mga himan nga gitukod sa relational database. Ang pagtrabaho uban niini pamilyar ug kombenyente, labi na kung adunay pipila ka mga lamesa ug gamay nga datos.

Apan kapin sa 4 ka tuig nga pag-uswag, ang database nahimo nga adunay mga 600 ka lamesa, 1500 nga gitipigan nga mga pamaagi, kadaghanan niini adunay lohika usab. Alangan, ang gitipigan nga mga pamaagi dili makahatag daghang kaayohan kung nagtrabaho kauban ang MySQL. Wala sila gi-cache sa base, ug ang pagtipig sa lohika sa kanila nagpakomplikado sa pag-uswag ug pag-debug. Lisod usab ang paggamit sa code.

Daghang mga lamesa ang walay angay nga mga indeks, sa usa ka dapit, sa sukwahi, adunay daghang mga indeks, nga nakapalisud sa pagsal-ot. Kinahanglan nga usbon ang mga 20 ka mga lamesa - ang transaksyon sa paghimo og usa ka order mahimong molungtad mga 3-5 ka segundo. 

Ang datos sa mga lamesa dili kanunay sa labing angay nga porma. Sa usa ka dapit kinahanglan nga buhaton ang denormalization. Ang bahin sa kanunay nga nadawat nga datos naa sa usa ka kolum sa porma sa usa ka istruktura sa XML, kini nagdugang sa oras sa pagpatuman, gipalugway ang mga pangutana ug gikomplikado ang pag-uswag.

Ngadto sa sama nga mga lamesa gihimo kaayo heterogeneous nga mga hangyo. Ang mga sikat nga lamesa nag-antus labi na, sama sa lamesa nga gihisgutan sa ibabaw. sugo o mga lamesa Pizza shop. Gigamit sila aron ipakita ang mga interface sa operasyon sa kusina, analytics. Ang laing site mikontak kanila (dodopizza.ru), diin sa bisan unsang panahon daghang mga hangyo ang mahimong kalit nga moabut. 

Ang datos wala giipon ug daghang mga kalkulasyon ang nahitabo sa langaw gamit ang base. Naghimo kini og wala kinahanglana nga mga kalkulasyon ug dugang nga load. 

Kasagaran ang code moadto sa database kung dili kini mahimo. Sa usa ka dapit nga walay igong bulto nga operasyon, sa usa ka dapit kinahanglan nga ipakaylap ang usa ka hangyo ngadto sa pipila pinaagi sa code aron mapadali ug madugangan ang kasaligan. 

Kohesyon ug obfuscation sa code

Ang mga modulo nga responsable unta sa ilang bahin sa negosyo wala magbuhat niini nga matinud-anon. Ang uban kanila adunay pagdoble sa mga gimbuhaton alang sa mga tahas. Pananglitan, ang usa ka lokal nga tigpamaligya nga responsable sa kalihokan sa pagpamaligya sa network sa iyang lungsod kinahanglan nga mogamit sa parehas nga "Admin" interface (sa paghimo og mga promosyon) ug ang interface sa "Office Manager" (aron makita ang epekto sa mga promosyon sa negosyo). Siyempre, sa sulod sa duha ka mga module gigamit ang parehas nga serbisyo nga nagtrabaho sa mga promosyon sa bonus.

Ang mga serbisyo (mga klase sa sulod sa usa ka monolitikong dako nga proyekto) mahimong magtawag sa usag usa aron mapauswag ang ilang datos.

Uban sa mga klase sa modelo mismo nga nagtipig sa datos, Ang pagtrabaho sa code gihimo sa lahi nga paagi. Sa usa ka dapit adunay mga konstruktor diin posible nga ipiho ang gikinahanglan nga mga natad. Sa usa ka dapit kini gihimo pinaagi sa publiko nga mga kabtangan. Siyempre, ang pagkuha ug pagbag-o sa datos gikan sa database lainlain. 

Ang lohika anaa sa mga controller o sa mga klase sa serbisyo. 

Kini daw mga ginagmay nga mga isyu, apan sila sa hilabihan gayud nagpahinay sa pag-uswag ug pagkunhod sa kalidad, nga mosangpot sa pagkawalay kalig-on ug mga bug. 

Ang pagkakomplikado sa usa ka dako nga kalamboan

Ang mga kalisdanan mitungha sa pag-uswag mismo. Gikinahanglan ang paghimo sa lainlaing mga bloke sa sistema, ug parehas. Ang pagpahaom sa mga panginahanglan sa matag component ngadto sa usa ka code nahimong mas lisud. Dili sayon ​​ang pag-uyon ug pagpahimuot sa tanang sangkap sa samang higayon. Gidugang niini ang mga limitasyon sa teknolohiya, labi na bahin sa base ug frontend. Kinahanglan nga biyaan ang jQuery padulong sa taas nga lebel nga mga balangkas, labi na sa mga termino sa serbisyo sa kliyente (website).

Sa pipila ka bahin sa sistema, ang mga database nga mas angay alang niini mahimong magamit.. Pananglitan, sa ulahi kami adunay kaso sa paggamit sa pagbalhin gikan sa Redis hangtod sa CosmosDB aron magtipig usa ka basket nga order. 

Ang mga koponan ug mga developer nga nalambigit sa ilang natad klaro nga gusto og dugang nga awtonomiya alang sa ilang mga serbisyo, sa mga termino sa pag-uswag ug paglansad. Paghiusa sa mga panagbangi, pagpagawas sa mga isyu. Kung alang sa 5 nga mga developer kini nga problema dili hinungdanon, unya sa 10, ug labi pa sa giplano nga pagtubo, ang tanan mahimong labi ka seryoso. Ug sa unahan mao ang pagpalambo sa usa ka mobile application (kini nagsugod sa 2017, ug sa 2018 kini dako nga pagkahulog). 

Ang lainlaing mga bahin sa sistema nanginahanglan lainlaing lebel sa kalig-on, apan tungod sa lig-on nga koneksyon sa sistema, dili kami makahatag niini. Ang usa ka sayup sa pag-uswag sa usa ka bag-ong function sa admin panel mahimo nga mahitabo sa pagdawat sa usa ka order sa site, tungod kay ang code sagad ug magamit pag-usab, ang database ug data parehas usab.

Mahimong posible nga malikayan kini nga mga sayup ug mga problema sa sulod sa balangkas sa ingon nga monolithic-modular nga arkitektura: paghimo usa ka dibisyon sa responsibilidad, pag-refactor sa code ug database, tin-aw nga gibulag ang mga layer gikan sa usag usa, pag-monitor sa kalidad matag adlaw. Apan ang gipili nga mga solusyon sa arkitektura ug ang pagtutok sa paspas nga pagpalapad sa pagpaandar sa sistema misangpot sa mga problema sa termino sa kalig-on.

Giunsa gibutang sa blog sa Power of the Mind ang mga cash register sa mga restawran

Kung ang pagtubo sa network sa pizzeria (ug pagkarga) nagpadayon sa parehas nga tulin, unya pagkahuman sa usa ka panahon ang pagkahulog mahimong ingon nga ang sistema dili mobangon. Maayo nga naghulagway sa mga problema nga atong gisugdan sa pag-atubang sa 2015, ania ang ingon nga istorya. 

Sa blog"Gahum sa hunahuna” maoy usa ka widget nga nagpakita sa datos sa kita alang sa tuig sa tibuok network. Gi-access sa widget ang Dodo public API, nga naghatag niini nga datos. Kini nga estadistika anaa karon sa http://dodopizzastory.com/. Gipakita ang widget sa matag panid ug naghangyo sa usa ka timer matag 20 segundos. Ang hangyo miadto sa api.dodopizza.ru ug mihangyo:

  • ang gidaghanon sa mga pizzeria sa network;

  • kinatibuk-ang kita sa network sukad sa sinugdanan sa tuig;

  • kita alang karon.

Ang hangyo alang sa mga estadistika sa kita diretso sa database ug nagsugod sa paghangyo sa datos sa mga order, pagtipon sa datos sa langaw ug paghatag sa kantidad. 

Ang mga cash desk sa mga restawran miadto sa parehas nga lamesa sa mga order, nagdiskarga sa usa ka lista sa mga order nga nadawat alang karon, ug ang mga bag-ong order gidugang niini. Ang mga cash register naghimo sa ilang mga hangyo matag 5 segundos o sa pag-refresh sa panid.

Ang diagram ingon niini:

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

Usa ka tinghunlak, si Fyodor Ovchinnikov misulat ug taas ug popular nga artikulo sa iyang blog. Daghang mga tawo ang mianhi sa blog ug nagsugod sa pagbasa sa tanan nga maayo. Samtang ang matag usa sa mga tawo nga mianhi nagbasa sa artikulo, ang widget sa kita nagtrabaho sa husto ug nangayo sa API matag 20 segundos.

Gitawag sa API ang gitipigan nga pamaagi aron makalkulo ang sumada sa tanan nga mga order sukad sa pagsugod sa tuig alang sa tanan nga mga pizzeria sa network. Ang aggregation gibase sa mga order table, nga popular kaayo. Ang tanan nga mga cash desk sa tanan nga bukas nga mga restawran nianang panahona moadto niini. Ang mga cash desk mihunong sa pagtubag, ang mga order wala gidawat. Wala usab sila gidawat gikan sa site, wala makita sa tracker, ang manager sa pagbalhin dili makakita kanila sa iyang interface. 

Dili lang kini ang istorya. Sa pagkahulog sa 2015, matag Biyernes ang pagkarga sa sistema kritikal. Daghang mga higayon nga among gipalong ang publiko nga API, ug kausa, kinahanglan pa namon nga i-off ang site, tungod kay wala’y nakatabang. Adunay bisan usa ka lista sa mga serbisyo nga adunay order sa pagsira sa ilawom sa bug-at nga mga karga.

Sukad karon, ang among pakigbisog sa mga karga ug alang sa pagpalig-on sa sistema nagsugod (gikan sa tingdagdag 2015 hangtod sa tingdagdag 2018). Mao to nahitabo"dako nga pagkapukan". Dugang pa, ang mga kapakyasan usab usahay mahitabo, ang uban sensitibo kaayo, apan ang kinatibuk-ang panahon sa pagkawalay kalig-on mahimo na nga ikonsiderar nga milabay.

Kusog nga pagtubo sa negosyo

Nganong dili man kini mahimo dayon? Tan-awa lang ang mosunod nga mga tsart.

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

Usab sa 2014-2015 adunay usa ka pag-abli sa Romania ug usa ka pag-abli sa USA giandam.

Ang network dali nga mitubo, bag-ong mga nasud ang giablihan, ang mga bag-ong format sa mga pizzeria nagpakita, pananglitan, usa ka pizzeria ang giablihan sa food court. Kining tanan nanginahanglan ug dakong pagtagad ilabina sa pagpalapad sa mga gimbuhaton sa Dodo IS. Kung wala ang tanan nga kini nga mga gimbuhaton, nga wala’y pagsubay sa kusina, pag-asoy sa mga produkto ug pagkawala sa sistema, pagpakita sa pag-isyu sa usa ka order sa hawanan sa korte sa pagkaon, halos dili kami maghisgot bahin sa "husto" nga arkitektura ug ang "husto" nga pamaagi sa kalamboan karon.

Ang laing babag sa tukma sa panahon nga rebisyon sa arkitektura ug sa kasagaran pagtagad sa teknikal nga mga problema mao ang krisis sa 2014. Ang mga butang nga sama niini naigo pag-ayo sa mga oportunidad alang sa mga koponan nga motubo, labi na sa usa ka batan-ong negosyo sama sa Dodo Pizza.

Dali nga mga Solusyon nga Nakatabang

Ang mga problema nagkinahanglan og mga solusyon. Sa naandan, ang mga solusyon mahimong bahinon sa 2 nga mga grupo:

  • Ang mga paspas nga nagpalong sa kalayo ug naghatag gamay nga margin sa kaluwasan ug nagpalit kanamo ug oras sa pagbag-o.

  • Systemic ug, busa, dugay. Reengineering sa usa ka gidaghanon sa mga modules, pagbahin sa usa ka monolithic nga arkitektura ngadto sa lain nga mga serbisyo (kadaghanan kanila dili sa tanan micro, apan hinoon macro nga mga serbisyo, ug adunay usa ka butang mahitungod niini. Ang taho ni Andrey Morevskiy). 

Ang uga nga lista sa dali nga pagbag-o mao ang mosunod:

I-scale up ang base master

Siyempre, ang unang butang nga gihimo sa pag-atubang sa mga load mao ang pagdugang sa kapasidad sa server. Gihimo kini alang sa master database ug alang sa mga web server. Alaut, kini posible lamang sa usa ka piho nga limitasyon, unya kini mahimong mahal kaayo.

Sukad sa 2014, mibalhin kami sa Azure, nagsulat usab kami bahin sa kini nga hilisgutan nianang panahona sa artikulo nga "Giunsa paghatud sa Dodo Pizza ang pizza gamit ang Microsoft Azure cloud". Apan human sa sunod-sunod nga mga pagtaas sa server alang sa base, sila miabut batok sa gasto. 

Base replika para sa pagbasa

Duha ka replika ang gihimo alang sa base:

ReadReplica alang sa mga hangyo sa pakisayran. Gigamit kini sa pagbasa sa mga direktoryo, tipo, siyudad, dalan, pizzeria, mga produkto (hinay nga giusab nga domain), ug sa mga interface diin ang gamay nga paglangan madawat. Adunay 2 niini nga mga replika, among gisiguro ang ilang pagkaanaa sa parehas nga paagi sama sa mga agalon.

Basaha angReplica alang sa Mga Panghangyo sa Pagreport. Kini nga database adunay gamay nga magamit, apan ang tanan nga mga taho miadto niini. Pasagdi sila nga adunay bug-at nga mga hangyo alang sa daghang mga pagkalkula sa datos, apan dili kini makaapekto sa panguna nga database ug mga interface sa operasyon. 

Mga cache sa code

Walay mga cache bisan asa sa code (sa tanan). Kini misangpot sa dugang, dili kanunay gikinahanglan, mga hangyo sa loaded database. Ang mga cache una nga anaa sa memorya ug sa usa ka eksternal nga serbisyo sa cache, nga mao ang Redis. Ang tanan nabalido sa oras, ang mga setting gitakda sa code.

Daghang backend server

Ang backend sa aplikasyon kinahanglan usab nga ma-scale aron madumala ang dugang nga mga karga sa trabaho. Kinahanglan nga maghimo usa ka kumpol gikan sa usa ka iis-server. Nag-reschedule mi sesyon sa aplikasyon gikan sa memorya ngadto sa RedisCache, nga nagpaposible sa paghimo sa daghang mga server luyo sa usa ka yano nga load balancer nga adunay round robin. Sa sinugdan, ang parehas nga Redis gigamit alang sa mga cache, unya gibahin kini sa daghang. 

Ingon usa ka sangputanan, ang arkitektura nahimong labi ka komplikado ...

Kasaysayan sa Dodo IS Architecture: Usa ka Sayong Monolith

… apan ang pipila sa tensyon gikuha.

Ug unya kinahanglan nga usbon ang gikarga nga mga sangkap, nga among gihimo. Atong hisgotan kini sa sunod nga bahin.

Source: www.habr.com

Idugang sa usa ka comment