Ё ҳар як ширкати бадбахт бо монолит ба таври худ бадбахт аст.
Рушди системаи Dodo IS фавран оғоз ёфт, ба монанди тиҷорати Dodo Pizza - дар соли 2011. Он ба идеяи рақамикунонии пурра ва пурраи равандҳои бизнес асос ёфтааст ва худ аз худ, ки ҳатто дар соли 2011 саволҳо ва шубҳаҳои зиёдеро ба вуҷуд овард. Аммо 9 сол боз мо бо ин рох — бо тараккиёти худамон, ки аз монолит огоз ёфта буд, пеш меравем.
Ин мақола «ҷавоб» ба саволҳои «Чаро меъмориро аз нав навиштан ва чунин тағйироти калонҳаҷм ва дарозмуддат бояд кард?» аст. ба мақолаи қаблӣ "Таърихи меъмории Додо IS: роҳи пушти офис". Ман аз он оғоз хоҳам кард, ки рушди Dodo IS чӣ гуна оғоз ёфт, меъмории аввалия чӣ гуна буд, модулҳои нав чӣ гуна пайдо шуданд ва аз сабаби кадом мушкилот бояд тағироти васеъмиқёс анҷом дода шаванд.
Силсилаи мақолаҳои "Додо IS чист?" дар бораи:
Монолити аввал дар Додо IS (2011-2015). (Шумо инҷоед)
Серверҳо дар Windows Server, зеро он гоҳ .NET метавонад танҳо дар Windows бошад (мо Mono-ро муҳокима намекунем).
Аз ҷиҳати ҷисмонӣ, ин ҳама дар "мизи мизбон" ифода ёфтааст.
Архитектураи дархости қабули фармоиш
Он вақт, ҳама аллакай дар бораи хидматрасонии хурд сӯҳбат мекарданд ва SOA тақрибан 5 сол дар лоиҳаҳои калон истифода мешуд, масалан, WCF соли 2006 бароварда шуд. Аммо баъд онҳо роҳи боэътимод ва исботшударо интихоб карданд.
Ин ҷост ин.
Asp.Net MVC Razor аст, ки бо дархости форма ё муштарӣ саҳифаи HTML бо намоиш дар сервер тавлид мекунад. Дар муштарӣ, скриптҳои CSS ва JS аллакай маълумотро намоиш медиҳанд ва дар ҳолати зарурӣ дархостҳои AJAX-ро тавассути JQuery иҷро мекунанд.
Дархостҳо дар сервер ба синфҳои *Controller дохил мешаванд, ки дар он метод саҳифаи ниҳоии HTML-ро коркард ва тавлид мекунад. Назоратчиён ба қабати мантиқӣ бо номи *Хизматҳо дархост мекунанд. Ҳар як хидмат ба як ҷанбаи тиҷорат мувофиқат мекард:
Масалан, ДепартаментStructureService маълумотро дар бораи пиццерияҳо ва шӯъбаҳо пешниҳод кард. Шӯъба як гурӯҳи пиццерияҳо мебошад, ки аз ҷониби як франчайзи идора карда мешавад.
ReceivingOrdersService мундариҷаи фармоишро қабул кард ва ҳисоб кард.
Ва SmsService тавассути занг ба хидматҳои API барои ирсоли SMS SMS фиристод.
Хидматҳо маълумотро аз пойгоҳи додаҳо коркард мекарданд ва мантиқи тиҷоратиро нигоҳ медоштанд. Ҳар як хидмат як ё якчанд *Репозиторий бо номи мувофиқ дошт. Онҳо аллакай дархостҳоро ба расмиёти ҳифзшуда дар пойгоҳи додаҳо ва як қабати харитасозон дар бар мегирифтанд. Анборҳо мантиқи тиҷорӣ доштанд, алахусус бисёре аз онҳо, ки маълумоти ҳисоботӣ медоданд. ORM истифода нашуд, ҳама ба sql-и дастнавис такя мекарданд.
Инчунин як қабати модели домен ва синфҳои ёрирасони умумӣ вуҷуд дошт, масалан, синфи Тартиб, ки фармоишро нигоҳ медорад. Дар он ҷо, дар қабат ёрирасон барои табдил додани матни намоиш мувофиқи асъори интихобшуда мавҷуд буд.
Ҳамаи инро метавон бо ин модел муаррифӣ кард:
Тартиби фармоиш
Биёед як роҳи соддашудаи ибтидоии эҷоди чунин фармоишро дида бароем.
Дар аввал сайт статикӣ буд. Дар он нархҳо навишта шуда буданд ва дар боло рақами телефон ва навиштаҷоти "Агар пицца хоҳед, ба рақам занг занед ва фармоиш диҳед". Барои фармоиш, мо бояд ҷараёни оддиро амалӣ кунем:
Муштарӣ ба вебсайти статикӣ бо нархҳо меравад, маҳсулотро интихоб мекунад ва ба рақами дар вебсайт нишондодашуда занг мезанад.
Мо Аробаро аз сессия мегирем, ба миқдори зарурӣ маҳсулот ҳаст.
Мо Аробаро бо маълумот дар бораи муштарӣ пурра мекунем ва онро ба усули AddOrder синфи ReceivingOrderService мерасонем, ки он дар базаи маълумот захира карда мешавад.
Дар базаи маълумот ҷадвалҳо бо фармоиш, мундариҷаи фармоиш, муштарӣ мавҷуданд ва онҳо ҳама пайвастанд.
Интерфейси намоиши фармоиш меравад ва фармоишҳои охиринро мебарорад ва онҳоро намоиш медиҳад.
Модулҳои нав
Гирифтани фармон муҳим ва зарурӣ буд. Агар шумо фармоиши фурӯш надошта бошед, шумо тиҷорати пиццаро пеш карда наметавонед. Аз ин рӯ, система ба даст овардани функсияҳо оғоз кард - тақрибан аз соли 2012 то 2015. Дар ин муддат бисёр блокҳои гуногуни система пайдо шуданд, ки ман онҳоро даъват мекунам модулҳо, бар хилофи консепсияи хидмат ё маҳсулот.
Модул маҷмӯи функсияҳоест, ки бо ягон ҳадафи умумии тиҷорат муттаҳид шудаанд. Ғайр аз он, онҳо аз ҷиҳати ҷисмонӣ дар як барнома ҷойгиранд.
Модулҳоро блокҳои системавӣ номидан мумкин аст. Масалан, ин модули гузоришдиҳӣ, интерфейсҳои маъмурӣ, пайгирии маҳсулоти ошхона, иҷозат. Ин ҳама интерфейсҳои гуногуни корбаранд, баъзеҳо ҳатто услубҳои гуногуни визуалӣ доранд. Гузашта аз ин, ҳама чиз дар як барнома, як раванди иҷрошаванда аст.
Аз ҷиҳати техникӣ, модулҳо ҳамчун минтақа тарҳрезӣ шудаанд (ин идея ҳатто дар он боқӣ монд асосии asp.net). Барои фронт, моделҳо ва инчунин синфҳои контроллерҳои худ файлҳои алоҳида мавҷуданд. Дар натиҷа, система аз чунин...
...ба ин:
Баъзе модулҳо аз ҷониби сайтҳои алоҳида амалӣ карда мешаванд (лоиҳаи иҷрошаванда), аз сабаби функсияҳои комилан ҷудогона ва қисман аз ҳисоби рушди то андозае алоҳида, бештар нигаронидашуда. Ин:
OfficeManager - интерфейсҳо барои нақшҳои "Менеҷери пиццерия" ва "Франчайзи". Дар ин ҷо шумо метавонед функсияҳои таъсиси пиццерия, таблиғоти бонуси он, қабул ва кор бо кормандон ва ҳисоботҳоро пайдо кунед.
Дар баробари ин, аз соли 2012 то 2015 зиёда аз 10 таҳиягарон пайдо шуданд, 35 пиццерия кушода шуданд, система дар Руминия ҷойгир карда шуд ва барои кушодани нуқтаҳои дар ИМА омода карда шуд. Таҳиягарон дигар дар ҳама вазифаҳо иштирок намекарданд, балки ба дастаҳо тақсим карда шуданд. ҳар як дар қисми худ дар система тахассус дорад.
Масъалаҳо
Аз ҷумла аз сабаби меъморӣ (вале на танҳо).
Бетартибӣ дар пойгоҳ
Як пойгоҳ қулай аст. Мутобиқатиро ба даст овардан мумкин аст ва аз ҳисоби асбобҳое, ки дар пойгоҳи додаҳои релятсионӣ сохта шудаанд. Кор бо он шинос ва қулай аст, хусусан агар ҷадвалҳо ва маълумоти кам вуҷуд дошта бошанд.
Аммо дар тӯли 4 соли таҳия, пойгоҳи додаҳо тақрибан 600 ҷадвал, 1500 тартиби захирашударо дар бар мегирифт, ки бисёре аз онҳо мантиқ низ доштанд. Мутаассифона, ҳангоми кор бо MySQL расмиёти ҳифзшуда фоидаи зиёд намедиҳанд. Онҳо аз ҷониби пойгоҳи додаҳо кэш карда намешаванд ва нигоҳ доштани мантиқ дар онҳо таҳия ва ислоҳро мушкил мекунад. Истифодаи такрории код низ душвор аст.
Инҳо мисли мушкилоти ночиз ба назар мерасанд, аммо онҳо рушдро хеле суст карданд ва сифатро паст карданд, ки боиси ноустуворӣ ва хатогиҳо шуданд.
Мушкилии рушди калон
Дар худи тараккиёт душворихо ба амал омаданд. Зарур буд, ки блокҳои гуногуни система ва дар баробари он. Ҷойгир кардани ниёзҳои ҳар як ҷузъ дар як коди ягона душвортар мешуд. Дар як вақт розӣ шудан ва ба ҳамаи ҷузъҳо писанд омадан осон набуд. Илова бар ин, маҳдудиятҳо дар технология, махсусан дар робита ба пойгоҳ ва фронт. Зарур буд, ки аз JQuery ба манфиати чаҳорчӯбаҳои сатҳи баланд, махсусан дар робита ба хидматрасонии муштариён (вебсайт) даст кашид.
Баъзе қисмҳои система метавонистанд пойгоҳи додаҳоро истифода баранд, ки барои ин мувофиқтаранд. Масалан, баъдтар мо барои гузаштан аз Redis ба CosmosDB барои нигоҳ доштани аробаи фармоишӣ пешгӯӣ доштем.
Гурӯҳҳо ва таҳиягароне, ки дар минтақаи худ кор мекунанд, ба таври возеҳ мехостанд, ки барои хидматҳои худ ҳам аз ҷиҳати рушд ва ҳам аз ҷиҳати паҳнкунӣ мустақилияти бештар дошта бошанд. Ихтилофҳо ҳангоми якҷояшавӣ, мушкилот ҳангоми баровардан. Агар барои 5 таҳиягар ин мушкилот ночиз бошад, пас бо 10 ва ҳатто бештар аз он бо афзоиши ба нақша гирифташуда, ҳама чиз ҷиддитар мешавад. Ва он чизе ки дар пеш буд, таҳияи як барномаи мобилӣ буд (он соли 2017 оғоз ёфт ва дар соли 2018 вуҷуд дошт тирамоҳи калон).
Қисмҳои гуногуни система нишондиҳандаҳои устувории гуногунро талаб мекарданд, аммо аз сабаби пайвастагии пурқуввати система мо инро таъмин карда натавонистем. Хатогӣ ҳангоми таҳияи функсияи нав дар панели идоракунӣ метавонад боиси қабули фармоиш дар сайт гардад, зеро код маъмул ва такроран истифодашаванда аст, пойгоҳи додаҳо ва додаҳо низ якхелаанд.
Дар доираи чунин як меъмории монолитӣ-модулярӣ эҳтимолан аз ин хатоҳо ва мушкилот канорагирӣ кардан мумкин буд: ҷудокунии масъулиятҳо эҷод кунед, ҳам код ва ҳам базаи маълумотро рефактор кунед, қабатҳоро аз ҳамдигар равшан ҷудо кунед ва ҳар рӯз сифатро назорат кунед. Аммо қарорҳои меъмории интихобшуда ва таваҷҷӯҳ ба зуд васеъ кардани функсияҳои система боиси мушкилот дар масъалаҳои устуворӣ гардид.
Чӣ тавр блоги Power of Mind мошинҳои хазинавиро дар тарабхонаҳо ҷойгир мекунад
Агар афзоиши шабакаи пиццерия (ва сарборӣ) бо ҳамон суръат идома ёбад, пас пас аз муддате қатраҳо чунин мешуданд, ки система барқарор намешавад. Ҳикояи зерин мушкилотеро, ки мо то соли 2015 бо онҳо рӯ ба рӯ шудаем, хуб нишон медиҳад.
Онҳое, ки зуд оташро хомӯш мекунанд ва ба мо маржаи ками бехатарӣ медиҳанд ва барои иваз кардани мо вақт мехаранд.
Системавӣ ва аз ин рӯ, дароз. Азнавсозии як қатор модулҳо, тақсим кардани меъмории монолитӣ ба хидматҳои алоҳида (аксарияти онҳо на микро, балки хидматҳои макро мебошанд ва дар ин бора маълумоти бештар вуҷуд дорад. гузориши Андрей Моревский).
Рӯйхати хушки тағироти зуд инҳоянд:
Миқёси устои пойгоҳ
Албатта, аввалин чизе, ки барои мубориза бо сарборӣ анҷом дода мешавад, баланд бардоштани қудрати сервер мебошад. Ин барои пойгоҳи додаҳои асосӣ ва серверҳои веб анҷом дода шуд. Мутаассифона, ин танҳо то ҳадди муайян имконпазир аст; берун аз он, он хеле гарон мешавад.