Таърихи меъмории Додо IS: Монолити барвақт

Ё ҳар як ширкати бадбахт бо монолит ба таври худ бадбахт аст.

Рушди системаи Dodo IS фавран оғоз ёфт, ба монанди тиҷорати Dodo Pizza - дар соли 2011. Он ба идеяи рақамикунонии пурра ва пурраи равандҳои бизнес асос ёфтааст ва худ аз худ, ки ҳатто дар соли 2011 саволҳо ва шубҳаҳои зиёдеро ба вуҷуд овард. Аммо 9 сол боз мо бо ин рох — бо тараккиёти худамон, ки аз монолит огоз ёфта буд, пеш меравем.

Ин мақола «ҷавоб» ба саволҳои «Чаро меъмориро аз нав навиштан ва чунин тағйироти калонҳаҷм ва дарозмуддат бояд кард?» аст. ба мақолаи қаблӣ "Таърихи меъмории Додо IS: роҳи пушти офис". Ман аз он оғоз хоҳам кард, ки рушди Dodo IS чӣ гуна оғоз ёфт, меъмории аввалия чӣ гуна буд, модулҳои нав чӣ гуна пайдо шуданд ва аз сабаби кадом мушкилот бояд тағироти васеъмиқёс анҷом дода шаванд.

Таърихи меъмории Додо IS: Монолити барвақт

Силсилаи мақолаҳои "Додо IS чист?" дар бораи:

  1. Монолити аввал дар Додо IS (2011-2015). (Шумо инҷоед)

  2. Роҳи Backoffice: пойгоҳҳои алоҳида ва автобус.

  3. Роҳи қисми муштарӣ: фасад аз болои пойгоҳ (2016-2017). (Дар ҷараён...)

  4. Таърихи микросервисҳои воқеӣ. (2018-2019). (Дар ҷараён...)

  5. Буридани монолит ва муътадил гардондани меъморй ба охир расид. (Дар ҷараён...)

Меъмории ибтидоӣ

Дар соли 2011, меъмории Dodo IS чунин менамуд:

Таърихи меъмории Додо IS: Монолити барвақт

Модули аввал дар меъморӣ қабули фармоиш мебошад. Раванди тиҷорат чунин буд:

  • муштарӣ ба пиццерия занг мезанад;

  • Мудир гушаки телефонро мегирад;

  • ба воситаи телефон заказ кабул мекунад;

  • Ҳамзамон, он онро дар интерфейси қабули фармоиш пур мекунад: маълумот дар бораи муштарӣ, маълумот дар бораи тафсилоти фармоиш ва суроғаи таҳвил ба назар гирифта мешаванд. 

Интерфейси системаи иттилоотӣ чунин менамуд...

Варианти аввал аз октябри соли 2011:

Дар моҳи январи соли 2012 каме беҳтар шуд

Системаи иттилоотии Dodo Pizza Delivery Pizza Тарабхонаи

Захираҳо барои таҳияи модули фармоиши аввал маҳдуд буданд. Бисьёр корхоро зуд ва бо коллективи хурд анчом додан лозим буд. Дастаи хурд аз 2 таҳиягар иборат аст, ки барои тамоми системаи оянда асос гузоштаанд.

Қарори аввалини онҳо сарнавишти ояндаи стек технологиро муайян кард:

  • Бозгашт ба ASP.NET MVC, забони C#. Таҳиягарон нуқтаҳо буданд; ин стек ба онҳо шинос ва гуворо буд.

  • Frontend дар Bootstrap ва JQuery: интерфейсҳои корбар дар асоси услубҳо ва скриптҳои фармоишӣ. 

  • Махзани маълумотҳои MySQL: хароҷоти литсензия нест, истифодаи осон.

  • Серверҳо дар Windows Server, зеро он гоҳ .NET метавонад танҳо дар Windows бошад (мо Mono-ро муҳокима намекунем).

Аз ҷиҳати ҷисмонӣ, ин ҳама дар "мизи мизбон" ифода ёфтааст. 

Архитектураи дархости қабули фармоиш

Он вақт, ҳама аллакай дар бораи хидматрасонии хурд сӯҳбат мекарданд ва SOA тақрибан 5 сол дар лоиҳаҳои калон истифода мешуд, масалан, WCF соли 2006 бароварда шуд. Аммо баъд онҳо роҳи боэътимод ва исботшударо интихоб карданд.

Ин ҷост ин.

Таърихи меъмории Додо IS: Монолити барвақт

Asp.Net MVC Razor аст, ки бо дархости форма ё муштарӣ саҳифаи HTML бо намоиш дар сервер тавлид мекунад. Дар муштарӣ, скриптҳои CSS ва JS аллакай маълумотро намоиш медиҳанд ва дар ҳолати зарурӣ дархостҳои AJAX-ро тавассути JQuery иҷро мекунанд.

Дархостҳо дар сервер ба синфҳои *Controller дохил мешаванд, ки дар он метод саҳифаи ниҳоии HTML-ро коркард ва тавлид мекунад. Назоратчиён ба қабати мантиқӣ бо номи *Хизматҳо дархост мекунанд. Ҳар як хидмат ба як ҷанбаи тиҷорат мувофиқат мекард:

  • Масалан, ДепартаментStructureService маълумотро дар бораи пиццерияҳо ва шӯъбаҳо пешниҳод кард. Шӯъба як гурӯҳи пиццерияҳо мебошад, ки аз ҷониби як франчайзи идора карда мешавад.

  • ReceivingOrdersService мундариҷаи фармоишро қабул кард ва ҳисоб кард.

  • Ва SmsService тавассути занг ба хидматҳои API барои ирсоли SMS SMS фиристод.

Хидматҳо маълумотро аз пойгоҳи додаҳо коркард мекарданд ва мантиқи тиҷоратиро нигоҳ медоштанд. Ҳар як хидмат як ё якчанд *Репозиторий бо номи мувофиқ дошт. Онҳо аллакай дархостҳоро ба расмиёти ҳифзшуда дар пойгоҳи додаҳо ва як қабати харитасозон дар бар мегирифтанд. Анборҳо мантиқи тиҷорӣ доштанд, алахусус бисёре аз онҳо, ки маълумоти ҳисоботӣ медоданд. ORM истифода нашуд, ҳама ба sql-и дастнавис такя мекарданд. 

Инчунин як қабати модели домен ва синфҳои ёрирасони умумӣ вуҷуд дошт, масалан, синфи Тартиб, ки фармоишро нигоҳ медорад. Дар он ҷо, дар қабат ёрирасон барои табдил додани матни намоиш мувофиқи асъори интихобшуда мавҷуд буд.

Ҳамаи инро метавон бо ин модел муаррифӣ кард:

Таърихи меъмории Додо IS: Монолити барвақт

Тартиби фармоиш

Биёед як роҳи соддашудаи ибтидоии эҷоди чунин фармоишро дида бароем.

Таърихи меъмории Додо IS: Монолити барвақт

Дар аввал сайт статикӣ буд. Дар он нархҳо навишта шуда буданд ва дар боло рақами телефон ва навиштаҷоти "Агар пицца хоҳед, ба рақам занг занед ва фармоиш диҳед". Барои фармоиш, мо бояд ҷараёни оддиро амалӣ кунем: 

  • Муштарӣ ба вебсайти статикӣ бо нархҳо меравад, маҳсулотро интихоб мекунад ва ба рақами дар вебсайт нишондодашуда занг мезанад.

  • Мизоҷ маҳсулотеро, ки мехоҳад ба фармоиш илова кунад, ном мебарад.

  • Суроға ва номи худро медиҳад.

  • Оператор фармоишро қабул мекунад.

  • Фармоиш дар интерфейси фармоишҳои қабулшуда нишон дода мешавад.

Ҳамааш аз намоиши меню оғоз мешавад. Корбари оператори воридшуда дар як вақт танҳо як фармоишро қабул мекунад. Аз ин рӯ, лоињаи аробаро дар сеанси худ нигоњ доштан мумкин аст (сеанси корбар дар хотира нигоњ дошта мешавад). Объекти Ароба мавҷуд аст, ки дорои маҳсулот ва маълумоти муштарӣ мебошад.

Мизоҷ маҳсулотро номбар мекунад, оператор клик мекунад + дар паҳлӯи маҳсулот, ва дархост ба сервер фиристода мешавад. Маълумот дар бораи маҳсулот аз базаи маълумот гирифта мешавад ва маълумот дар бораи маҳсулот ба ароба илова карда мешавад.

Таърихи меъмории Додо IS: Монолити барвақт

эрод гирифтан. Бале, дар ин ҷо ба шумо лозим нест, ки маҳсулотро аз пойгоҳи додаҳо кашед, балки онро аз қисми пешина интиқол диҳед. Аммо барои равшанӣ ман аз пойгоҳ маҳз роҳро нишон додам. 

Баъдан, суроға ва номи муштариро ворид кунед. 

Таърихи меъмории Додо IS: Монолити барвақт

Вақте ки шумо "Эҷод кардани фармоиш" -ро пахш мекунед:

  • Мо дархостро ба OrderController.SaveOrder() мефиристем.

  • Мо Аробаро аз сессия мегирем, ба миқдори зарурӣ маҳсулот ҳаст.

  • Мо Аробаро бо маълумот дар бораи муштарӣ пурра мекунем ва онро ба усули AddOrder синфи ReceivingOrderService мерасонем, ки он дар базаи маълумот захира карда мешавад. 

  • Дар базаи маълумот ҷадвалҳо бо фармоиш, мундариҷаи фармоиш, муштарӣ мавҷуданд ва онҳо ҳама пайвастанд.

  • Интерфейси намоиши фармоиш меравад ва фармоишҳои охиринро мебарорад ва онҳоро намоиш медиҳад.

Модулҳои нав

Гирифтани фармон муҳим ва зарурӣ буд. Агар шумо фармоиши фурӯш надошта бошед, шумо тиҷорати пиццаро ​​пеш карда наметавонед. Аз ин рӯ, система ба даст овардани функсияҳо оғоз кард - тақрибан аз соли 2012 то 2015. Дар ин муддат бисёр блокҳои гуногуни система пайдо шуданд, ки ман онҳоро даъват мекунам модулҳо, бар хилофи консепсияи хидмат ё маҳсулот. 

Модул маҷмӯи функсияҳоест, ки бо ягон ҳадафи умумии тиҷорат муттаҳид шудаанд. Ғайр аз он, онҳо аз ҷиҳати ҷисмонӣ дар як барнома ҷойгиранд.

Модулҳоро блокҳои системавӣ номидан мумкин аст. Масалан, ин модули гузоришдиҳӣ, интерфейсҳои маъмурӣ, пайгирии маҳсулоти ошхона, иҷозат. Ин ҳама интерфейсҳои гуногуни корбаранд, баъзеҳо ҳатто услубҳои гуногуни визуалӣ доранд. Гузашта аз ин, ҳама чиз дар як барнома, як раванди иҷрошаванда аст. 

Аз ҷиҳати техникӣ, модулҳо ҳамчун минтақа тарҳрезӣ шудаанд (ин идея ҳатто дар он боқӣ монд асосии asp.net). Барои фронт, моделҳо ва инчунин синфҳои контроллерҳои худ файлҳои алоҳида мавҷуданд. Дар натиҷа, система аз чунин...

Таърихи меъмории Додо IS: Монолити барвақт

...ба ин:

Таърихи меъмории Додо IS: Монолити барвақт

Баъзе модулҳо аз ҷониби сайтҳои алоҳида амалӣ карда мешаванд (лоиҳаи иҷрошаванда), аз сабаби функсияҳои комилан ҷудогона ва қисман аз ҳисоби рушди то андозае алоҳида, бештар нигаронидашуда. Ин:

  • Site - версияи якум Сомонаи dodopizza.ru.

  • содирот: зеркашии гузоришҳо аз Dodo IS барои 1C. 

  • шахсӣ - ҳисоби шахсии корманд. Он дар алоҳидагӣ таҳия шудааст ва нуқтаи вуруд ва тарҳи алоҳидаи худро дорад.

  • fs — лоиҳа барои хостинги статикӣ. Баъдтар мо аз он дур шудем ва тамоми мундариҷаи статикиро ба Akamai CDN интиқол додем. 

Блокҳои боқимонда дар замимаи BackOffice ҷойгир шудаанд. 

Таърихи меъмории Додо IS: Монолити барвақт

Шарҳи номҳо:

  • Кассир - кассаи тарабхона.

  • ShiftManager - интерфейсҳо барои нақши "Менеҷери Shift": омори амалиётӣ дар бораи фурӯши пиццерия, қобилияти гузоштани маҳсулот дар рӯйхати қатъ, тағир додани фармоиш.

  • OfficeManager - интерфейсҳо барои нақшҳои "Менеҷери пиццерия" ва "Франчайзи". Дар ин ҷо шумо метавонед функсияҳои таъсиси пиццерия, таблиғоти бонуси он, қабул ва кор бо кормандон ва ҳисоботҳоро пайдо кунед.

  • PublicScreens - интерфейсҳо барои телевизорҳо ва планшетҳои овезон дар пиццерияҳо. Телевизорҳо ҳангоми таҳвил меню, маълумоти таблиғотӣ ва ҳолати фармоишро намоиш медиҳанд. 

Онҳо як қабати хидматрасонии умумӣ, блоки умумии синфҳои домении Dodo.Core ва пойгоҳи умумиро истифода бурданд. Баъзан онҳо метавонистанд ба воситаи гузаргоҳҳо ба ҳамдигар гузаранд. Илова бар ин, сайтҳои инфиродӣ, аз қабили dodopizza.ru ё personal.dodopizza.ru низ ба хидматҳои умумӣ дастрасӣ пайдо карданд.

Вақте ки модулҳои нав пайдо шуданд, мо кӯшиш кардем, ки коди аллакай сохташудаи хидматҳо, расмиёти ҳифзшуда ва ҷадвалҳоро дар пойгоҳи додаҳо то ҳадди имкон дубора истифода барем. 

Барои беҳтар фаҳмидани миқёси модулҳои дар система сохташуда, дар ин ҷо диаграммаи соли 2012 бо нақшаҳои рушд оварда шудааст:

Таърихи меъмории Додо IS: Монолити барвақт

То соли 2015 ҳама чиз дар роҳ буд ва ҳатто бештар дар истеҳсолот буд.

  • Қабули фармоиш ба блоки алоҳидаи Маркази тамос табдил ёфт, ки дар он фармоиш аз ҷониби оператор қабул карда мешавад.

  • Дар пиццерияҳо экранҳои ҷамъиятӣ бо менюҳо ва маълумот пайдо шуданд.

  • Дар ошхона модул мавҷуд аст, ки ҳангоми омадани фармоиши нав ба таври худкор паёми овозии "Пиццаи нав" -ро пахш мекунад ва инчунин ҳисобнома-фактураро барои хаткашон чоп мекунад. Ин равандҳоро дар ошхона хеле осон мекунад ва ба кормандон имкон медиҳад, ки аз миқдори зиёди амалиёти оддӣ парешон нашаванд.

  • Блоки тахвил ба кассири алохидаи тахвил табдил ёфт, ки дар он фармоиш ба хаткашон, ки пештар сменаи худро гирифта буд, дода мешуд. Дар вакти хисоб кардани музди мехнат вакти кориаш ба хисоб гирифта шуд. 

Дар баробари ин, аз соли 2012 то 2015 зиёда аз 10 таҳиягарон пайдо шуданд, 35 пиццерия кушода шуданд, система дар Руминия ҷойгир карда шуд ва барои кушодани нуқтаҳои дар ИМА омода карда шуд. Таҳиягарон дигар дар ҳама вазифаҳо иштирок намекарданд, балки ба дастаҳо тақсим карда шуданд. ҳар як дар қисми худ дар система тахассус дорад. 

Масъалаҳо

Аз ҷумла аз сабаби меъморӣ (вале на танҳо).

Бетартибӣ дар пойгоҳ

Як пойгоҳ қулай аст. Мутобиқатиро ба даст овардан мумкин аст ва аз ҳисоби асбобҳое, ки дар пойгоҳи додаҳои релятсионӣ сохта шудаанд. Кор бо он шинос ва қулай аст, хусусан агар ҷадвалҳо ва маълумоти кам вуҷуд дошта бошанд.

Аммо дар тӯли 4 соли таҳия, пойгоҳи додаҳо тақрибан 600 ҷадвал, 1500 тартиби захирашударо дар бар мегирифт, ки бисёре аз онҳо мантиқ низ доштанд. Мутаассифона, ҳангоми кор бо MySQL расмиёти ҳифзшуда фоидаи зиёд намедиҳанд. Онҳо аз ҷониби пойгоҳи додаҳо кэш карда намешаванд ва нигоҳ доштани мантиқ дар онҳо таҳия ва ислоҳро мушкил мекунад. Истифодаи такрории код низ душвор аст.

Бисёр ҷадвалҳо индексҳои мувофиқ надоштанд, дар чое, баръакс, нишондихандахо бисьёр буданд, ки дохилкуниро душвор мегардонд. Тақрибан 20 ҷадвал бояд тағир дода шавад - транзаксия барои эҷоди фармоиш метавонад тақрибан 3-5 сонияро дар бар гирад. 

Маълумот дар ҷадвалҳо на ҳамеша дар шакли мувофиқтарин буданд. Дар ягон чо денормальизация кардан лозим буд. Баъзе аз маълумотҳои мунтазам гирифташуда дар сутун дар шакли сохтори XML буданд, ки вақти иҷроро зиёд, дархостҳоро дароз ва рушди мураккабро зиёд мекард.

Дар ҳамон мизҳои тобеъ буданд, хеле дархостҳои гетерогенӣ. Ҷадвалҳои маъмул, ба монанди ҷадвали дар боло зикршуда, махсусан таъсир расониданд супоришҳои ё ҷадвалҳо Дӯкони питса. Онҳо барои намоиши интерфейсҳои амалиётӣ дар ошхона ва таҳлил истифода мешуданд. Сайт инчунин бо онҳо тамос гирифт (dodopizza.ru), ки дар он дархостҳои зиёде метавонанд дар вақти дилхоҳ ногаҳон ворид шаванд. 

Маълумот ҷамъ карда нашудааст ва бо истифода аз база дар парвоз бисьёр хисобхо ба амал омаданд. Ин хисобхои нодаркор ва бори иловагиро ба вучуд овард. 

Аксар вақт код ба пойгоҳи додаҳо ворид мешуд, вақте ки ин корро карда наметавонист. Дар ҷое набудани амалиёти оммавӣ вуҷуд дошт, дар ҷое барои суръат ва баланд бардоштани эътимоднокӣ як дархостро тавассути код ба якчанд тақсим кардан лозим буд. 

Ҳамоҳангӣ ва нофаҳмиҳо дар Кодекс

Модулҳое, ки бояд барои қисми тиҷорати худ масъул буданд, ин корро софдилона иҷро накарданд. Баъзеи онҳо такрори вазифаҳо барои нақшҳо доштанд. Масалан, як фурӯшандаи маҳаллӣ, ки барои фаъолияти маркетингии шабака дар шаҳри худ масъул аст, бояд ҳам интерфейси "Админ" (барои танзими таблиғот) ва ҳам интерфейси "Менеҷери Office" (барои дидани таъсири таблиғот ба тиҷорат). Албатта, дар дохили ҳарду модулҳо ҳамон хидмате истифода мешуданд, ки бо аксияҳои бонусӣ кор мекарданд.

Хидматҳо (синфҳо дар доираи як лоиҳаи бузурги монолитӣ) метавонанд ба ҳамдигар занг зананд, то маълумоти худро бой кунанд.

Бо худи синфҳои модел, ки маълумотро нигоҳ медоранд, кор дар код дигар хел ба рох монда шуд. Дар ҷое конструкторҳо буданд, ки тавассути онҳо шумо метавонед майдонҳои заруриро муайян кунед. Дар ҷое ин ба воситаи моликияти ҷамъиятӣ анҷом дода шуд. Албатта, гирифтан ва табдил додани маълумот аз базаи маълумот гуногун буд. 

Мантиқ ё дар контроллерҳо ё синфҳои хидматӣ буд. 

Инҳо мисли мушкилоти ночиз ба назар мерасанд, аммо онҳо рушдро хеле суст карданд ва сифатро паст карданд, ки боиси ноустуворӣ ва хатогиҳо шуданд. 

Мушкилии рушди калон

Дар худи тараккиёт душворихо ба амал омаданд. Зарур буд, ки блокҳои гуногуни система ва дар баробари он. Ҷойгир кардани ниёзҳои ҳар як ҷузъ дар як коди ягона душвортар мешуд. Дар як вақт розӣ шудан ва ба ҳамаи ҷузъҳо писанд омадан осон набуд. Илова бар ин, маҳдудиятҳо дар технология, махсусан дар робита ба пойгоҳ ва фронт. Зарур буд, ки аз JQuery ба манфиати чаҳорчӯбаҳои сатҳи баланд, махсусан дар робита ба хидматрасонии муштариён (вебсайт) даст кашид.

Баъзе қисмҳои система метавонистанд пойгоҳи додаҳоро истифода баранд, ки барои ин мувофиқтаранд. Масалан, баъдтар мо барои гузаштан аз Redis ба CosmosDB барои нигоҳ доштани аробаи фармоишӣ пешгӯӣ доштем. 

Гурӯҳҳо ва таҳиягароне, ки дар минтақаи худ кор мекунанд, ба таври возеҳ мехостанд, ки барои хидматҳои худ ҳам аз ҷиҳати рушд ва ҳам аз ҷиҳати паҳнкунӣ мустақилияти бештар дошта бошанд. Ихтилофҳо ҳангоми якҷояшавӣ, мушкилот ҳангоми баровардан. Агар барои 5 таҳиягар ин мушкилот ночиз бошад, пас бо 10 ва ҳатто бештар аз он бо афзоиши ба нақша гирифташуда, ҳама чиз ҷиддитар мешавад. Ва он чизе ки дар пеш буд, таҳияи як барномаи мобилӣ буд (он соли 2017 оғоз ёфт ва дар соли 2018 вуҷуд дошт тирамоҳи калон). 

Қисмҳои гуногуни система нишондиҳандаҳои устувории гуногунро талаб мекарданд, аммо аз сабаби пайвастагии пурқуввати система мо инро таъмин карда натавонистем. Хатогӣ ҳангоми таҳияи функсияи нав дар панели идоракунӣ метавонад боиси қабули фармоиш дар сайт гардад, зеро код маъмул ва такроран истифодашаванда аст, пойгоҳи додаҳо ва додаҳо низ якхелаанд.

Дар доираи чунин як меъмории монолитӣ-модулярӣ эҳтимолан аз ин хатоҳо ва мушкилот канорагирӣ кардан мумкин буд: ҷудокунии масъулиятҳо эҷод кунед, ҳам код ва ҳам базаи маълумотро рефактор кунед, қабатҳоро аз ҳамдигар равшан ҷудо кунед ва ҳар рӯз сифатро назорат кунед. Аммо қарорҳои меъмории интихобшуда ва таваҷҷӯҳ ба зуд васеъ кардани функсияҳои система боиси мушкилот дар масъалаҳои устуворӣ гардид.

Чӣ тавр блоги Power of Mind мошинҳои хазинавиро дар тарабхонаҳо ҷойгир мекунад

Агар афзоиши шабакаи пиццерия (ва сарборӣ) бо ҳамон суръат идома ёбад, пас пас аз муддате қатраҳо чунин мешуданд, ки система барқарор намешавад. Ҳикояи зерин мушкилотеро, ки мо то соли 2015 бо онҳо рӯ ба рӯ шудаем, хуб нишон медиҳад. 

Дар блоги "Қувваи ақл"Виджет мавҷуд буд, ки маълумоти даромадро дар тӯли тамоми шабака нишон медод. Виҷет ба API-и ҷамъиятии Dodo дастрасӣ пайдо кард, ки ин маълумотро таъмин мекунад. Ин оморҳо ҳоло дастрасанд http://dodopizzastory.com/. Виҷет дар ҳар саҳифа нишон дода мешуд ва дар ҳар 20 сония ба таймер дархостҳо медод. Дархост ба api.dodopizza.ru рафт ва пурсид:

  • шумораи пиццерияҳо дар шабака;

  • даромади умумии шабака аз аввали сол;

  • даромади имрӯза.

Дархост барои омори даромад мустақиман ба пойгоҳи додаҳо ворид шуд ва ба дархости маълумот дар бораи фармоишҳо оғоз кард, маълумотро мустақиман ҷамъоварӣ кунед ва маблағро ба даст оред. 

Машинахои кассахои ресторан ба хамон чадвали заказхо гузашта, руйхати заказхои барои имруз кабулшударо бор карданд ва ба он заказхои нав дохил карда шуданд. Мошинҳои хазинавӣ дар ҳар 5 сония ё ҳангоми нав кардани саҳифа дархостҳои худро пешниҳод мекарданд.

Диаграмма чунин менамуд:

Таърихи меъмории Додо IS: Монолити барвақт

Рузе дар тирамох Фёдор Овчинников дар блоги худ маколаи калон ва маъмул навишт. Бисёр одамон ба блог омаданд ва ҳама чизро бодиққат хонданд. Ҳангоме ки ҳар як одамони омада мақоларо мехонанд, виҷети даромад дуруст кор мекард ва дар ҳар 20 сония API дархост мекард.

API тартиби захирашударо барои ҳисоб кардани маблағи ҳама фармоишҳо аз аввали сол барои ҳамаи пиццерияҳои шабака даъват кард. Агрегация аз руи чадвали заказхо ба рох монда шуд, ки он хеле маъмул аст. Тамоми кассахои хамаи ресторанхои дар он вакт кушодашуда ба он чо мераванд. Мошинхои касса чавоб намедиханд, заказхо кабул карда намешаванд. Онҳо инчунин аз сайт қабул карда нашуданд, дар трекер пайдо нашуданд ва мудири смена онҳоро дар интерфейси худ дида натавонист. 

Ин як ҳикоя нест. То тирамоҳи соли 2015, ҳар рӯзи ҷумъа сарбории система муҳим буд. Якчанд маротиба мо API-и ҷамъиятиро хомӯш кардем ва як бор ҳатто маҷбур шудем, ки сайтро хомӯш кунем, зеро ҳеҷ чиз кӯмак намекунад. Ҳатто рӯйхати хидматҳо бо тартиби қатъ кардани бори вазнин вуҷуд дошт.

Аз ин лаҳза, муборизаи мо бо сарборӣ ва ба эътидол овардани система оғоз мешавад (аз тирамоҳи соли 2015 то тирамоҳи соли 2018). Ҳамин вақт рӯй дод"Фурӯпошии бузург" Гузашта аз ин, баъзан нокомиҳо низ буданд, ки баъзеи онҳо хеле ҳассос буданд, аммо ҳоло давраи умумии ноустувориро метавон тамом кард.

Рушди босуръати тиҷорат

Чаро онро "дарҳол хуб анҷом додан" мумкин набуд? Танҳо ба графикҳои зерин нигаред.

Таърихи меъмории Додо IS: Монолити барвақт

Ҳамчунин дар солҳои 2014-2015 дар Руминия ифтитоҳ буд ва дар ИМА ифтитоҳ омода мешуд.

Занҷир хеле зуд афзоиш ёфт, кишварҳои нав кушода шуданд, форматҳои нави пиццерияҳо пайдо шуданд, масалан, пиццерия дар фуд-корт кушода шуд. Ҳамаи ин диққати махсусро ба тавсеаи функсияҳои Додо IS талаб мекард. Бе ин ҳама функсияҳо, бидуни пайгирӣ дар ошхона, баҳисобгирии маҳсулот ва талафот дар система, намоиш додани таҳвили фармоишҳо дар толори хӯрокворӣ, гумон аст, ки мо ҳоло дар бораи меъмории "дуруст" ва "дуруст" сухан ронем. » муносибат ба тараккиёт.

Боз як монеаи дигар дар роҳи аз нав дида баромадани саривақтии меъморӣ ва таваҷҷӯҳи умумӣ ба мушкилоти техникӣ бӯҳрони соли 2014 буд. Чунин чизҳо ба имкониятҳои афзоиши дастаҳо, махсусан барои тиҷорати ҷавон ба монанди Додо Пицца зарар мерасонанд.

Қарорҳои зуд, ки кӯмак карданд

Проблемаҳое, ки ҳалли худро талаб мекарданд. Одатан, ҳаллиҳоро ба 2 гурӯҳ тақсим кардан мумкин аст:

  • Онҳое, ки зуд оташро хомӯш мекунанд ва ба мо маржаи ками бехатарӣ медиҳанд ва барои иваз кардани мо вақт мехаранд.

  • Системавӣ ва аз ин рӯ, дароз. Азнавсозии як қатор модулҳо, тақсим кардани меъмории монолитӣ ба хидматҳои алоҳида (аксарияти онҳо на микро, балки хидматҳои макро мебошанд ва дар ин бора маълумоти бештар вуҷуд дорад. гузориши Андрей Моревский). 

Рӯйхати хушки тағироти зуд инҳоянд:

Миқёси устои пойгоҳ

Албатта, аввалин чизе, ки барои мубориза бо сарборӣ анҷом дода мешавад, баланд бардоштани қудрати сервер мебошад. Ин барои пойгоҳи додаҳои асосӣ ва серверҳои веб анҷом дода шуд. Мутаассифона, ин танҳо то ҳадди муайян имконпазир аст; берун аз он, он хеле гарон мешавад.

Аз соли 2014 мо ба Azure кӯчидем; мо низ дар бораи ин мавзӯъ дар мақола навишта будем "Чӣ тавр Dodo Pizza бо истифода аз абри Microsoft Azure пицца мерасонад" Аммо пас аз афзоиши як қатор сервер, арзиши пойгоҳ ба ҳадди ниҳоӣ расид. 

Рексияҳои пойгоҳи додаҳо барои хондан

Мо барои пойгоҳ ду нусхабардорӣ кардем:

Репликаро хонед барои дархостҳои директория. Он барои хондани феҳристҳо, ба монанди шаҳр, кӯча, пиццерия, маҳсулот (домени оҳиста ивазшаванда) ва дар он интерфейсҳое, ки таъхири хурд қобили қабул аст, истифода мешавад. 2-тои ин реплика вуҷуд дошт, мо дастрасии онҳоро ба мисли устод таъмин кардем.

ReadReplica барои дархостҳои гузориш. Ин пойгоҳи додаҳо дастрасии камтар дошт, аммо ҳама гузоришҳо ба он ворид шуданд. Онҳо метавонанд барои аз нав ҳисоб кардани маълумот дархостҳои зиёд дошта бошанд, аммо онҳо ба базаи асосӣ ва интерфейсҳои амалиётӣ таъсир намерасонанд. 

Кэш дар код

Дар ягон код дар ягон ҷо кэш мавҷуд набуд (ҳамагӣ). Ин боиси дархостҳои иловагӣ, на ҳамеша зарурӣ ба пойгоҳи додаҳои боршуда гардид. Дар аввал, кэшҳо ҳам дар хотира ва ҳам дар хидмати кэши беруна буданд, он Redis буд. Ҳама чиз беэътибор шуд, танзимот дар код муайян карда шуданд.

Серверҳои сершумор барои пуштибонӣ

Дар пушти барнома низ бояд миқёси барои муқовимат ба сарбории зиёд. Аз як сервери IIS кластер сохтан лозим буд. Мо ҳаракат кардем сессияи ариза аз хотира дар RedisCache, ки имкон дод, ки якчанд серверҳо дар паси мувозинати оддии сарборӣ бо робини мудаввар эҷод карда шаванд. Дар аввал, ҳамон Redis барои кэшҳо истифода мешуд, сипас онҳо ба якчанд тақсим карда шуданд. 

Дар натиҷа меъморӣ мураккабтар шуд...

Таърихи меъмории Додо IS: Монолити барвақт

...вале аз шиддати вазъият каме сабук шуд.

Ва он гоҳ лозим буд, ки ҷузъҳои пурборро дубора иҷро кунем, ки мо онро ба ӯҳда гирифтем. Мо дар ин бора дар қисми оянда сӯҳбат хоҳем кард.

Манбаъ: will.com

Илова Эзоҳ