{"id":95804,"date":"2020-10-03T13:42:27","date_gmt":"2020-10-03T11:42:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/istoriya-arhitektury-dodo-is-rannij-monolit"},"modified":"2020-10-03T13:42:27","modified_gmt":"2020-10-03T11:42:27","slug":"istoriya-arhitektury-dodo-is-rannij-monolit","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/istoriya-arhitektury-dodo-is-rannij-monolit","title":{"rendered":"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ose \u00e7do kompani e palumturuar me nj\u00eb monolit \u00ebsht\u00eb e palumturuar n\u00eb m\u00ebnyr\u00ebn e saj.<\/p>\n<p>Zhvillimi i sistemit Dodo IS filloi menj\u00ebher\u00eb pas fillimit t\u00eb biznesit Dodo Pizza - n\u00eb vitin 2011. Ideja themelore ishte digjitalizimi i plot\u00eb dhe total i proceseve t\u00eb biznesit, dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/sila-uma.ru\/2011\/08\/30\/sobstvennaya-sistema\/\"><u>me forcat tona<\/u><\/a><\/noindex>, gj\u00eb q\u00eb at\u00ebher\u00eb n\u00eb vitin 2011 shkaktoi shum\u00eb pyetje dhe skepticiz\u00ebm. Por tani, pas 9 vjet\u00ebsh, ne po ndjekim k\u00ebt\u00eb rrug\u00eb - me zhvillimin ton\u00eb, i cili filloi me nj\u00eb monolit.<\/p>\n<p>Ky artikull \u00ebsht\u00eb \"p\u00ebrgjigje\" p\u00ebr pyetjet \"Pse t\u00eb rishkruajm\u00eb arkitektur\u00ebn dhe t\u00eb b\u00ebjm\u00eb ndryshime t\u00eb tilla masive dhe t\u00eb gjata?\" ndaj artikullit t\u00eb m\u00ebparsh\u00ebm <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzadev\/blog\/506136\/\"><u>\"Historia e arkitektur\u00ebs Dodo IS: rruga e b\u00ebrtham\u00ebs\".<\/u><\/a><\/noindex>. Do t\u00eb filloj me m\u00ebnyr\u00ebn se si filloi zhvillimi i Dodo IS, si dukej arkitektura fillestare, si u shfaq\u00ebn modulet e reja dhe p\u00ebr \u00e7far\u00eb problemeve u k\u00ebrkua t\u00eb b\u00ebhen ndryshime masive.<\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/881fe068f46f934dc9730a5946996da3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote>\n<p><strong>Seria e artikujve \"\u00c7far\u00eb \u00ebsht\u00eb Dodo IS?\" do t\u00eb flas\u00eb p\u00ebr:<\/strong><\/p>\n<\/blockquote>\n<ol>\n<li>\n<p>Monoliti i hersh\u00ebm n\u00eb Dodo IS (2011-2015). (Ju jeni k\u00ebtu)<\/p>\n<\/li>\n<li>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dododev\/blog\/506136\/\">Rruga e b\u00ebrtham\u00ebs: baza t\u00eb ndara dhe busi<\/a><\/noindex>.<\/p>\n<\/li>\n<li>\n<p>Rruga e pjes\u00ebs s\u00eb klientit: fasada mbi baz\u00eb (2016-2017). (N\u00eb p\u00ebrparim\u2026)<\/p>\n<\/li>\n<li>\n<p>Historia e mikrosh\u00ebrbimeve t\u00eb v\u00ebrteta. (2018-2019). (N\u00eb p\u00ebrparim\u2026)<\/p>\n<\/li>\n<li>\n<p>P\u00ebrfundimi i prishjes s\u00eb monolitit dhe stabilizimi i arkitektur\u00ebs. (N\u00eb p\u00ebrparim\u2026)<\/p>\n<\/li>\n<\/ol>\n<h3>Arkitektura fillestare<\/h3>\n<p>N\u00eb vitin 2011, arkitektura e Dodo IS dukej k\u00ebshtu:<\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/93814518ca50678933f2591749e3e489.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Moduli i par\u00eb n\u00eb arkitektur\u00eb \u00ebsht\u00eb pranimi i porosis\u00eb. Procesi i biznesit ishte i till\u00eb:<\/p>\n<ul>\n<li>\n<p>klienti telefonon n\u00eb restorantin e picave;<\/p>\n<\/li>\n<li>\n<p>menaxheri e p\u00ebrgjigjet telefonit;<\/p>\n<\/li>\n<li>\n<p>pranon porosin\u00eb me telefon;<\/p>\n<\/li>\n<li>\n<p>paralelisht e regjistron at\u00eb n\u00eb nd\u00ebrfaqen e pranimit t\u00eb porosis\u00eb: informacioni p\u00ebr klientin merret parasysh, t\u00eb dh\u00ebnat p\u00ebr detajet e porosis\u00eb, adres\u00ebn e dor\u00ebzimit.&nbsp;<\/p>\n<\/li>\n<\/ul>\n<p>Nd\u00ebrfaqja e sistemit informatik dukej pak a shum\u00eb k\u00ebshtu...<\/p>\n<p>Versioni i par\u00eb nga tetori 2011:<\/p>\n<p><center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/embedd.srv.habr.com\/iframe\/5f75cfa9779ba700bea78afc\" frameborder=\"0\" allowfullscreen><\/iframe><\/center>Pak i p\u00ebrmir\u00ebsuar n\u00eb janar 2012<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/h2Cdht01gDA\">Sistemi informatik Dodo Pizza Delivery Pizza Restaurant<\/a><\/noindex><\/p>\n<p>Burimet p\u00ebr zhvillimin e modulit t\u00eb par\u00eb t\u00eb pranimit t\u00eb porosis\u00eb ishin t\u00eb kufizuara. Duhej t\u00eb b\u00ebnim shum\u00eb, shpejt dhe me nj\u00eb ekip t\u00eb vog\u00ebl. Ekip i vog\u00ebl - ky ishte 2 zhvillues, t\u00eb cil\u00ebt vendos\u00ebn themelet e gjith\u00eb sistemit t\u00eb ardhsh\u00ebm.<\/p>\n<p>Zgjidhja e tyre t\u00eb par\u00ebnd\u00ebsishme p\u00ebrcaktuan fatin e m\u00ebtejsh\u00ebm t\u00eb grupit teknologjik:<\/p>\n<ul>\n<li>\n<p>Backend n\u00eb ASP.NET MVC, gjuha C#. Zhvilluesit ishin nd\u00ebrlidh\u00ebs, ky grup ishte i njohur dhe i k\u00ebndsh\u00ebm p\u00ebr ta. <\/p>\n<\/li>\n<li>\n<p>Frontend n\u00eb Bootstrap dhe JQuery: nd\u00ebrfaqet e p\u00ebrdoruesit n\u00eb stil dhe skripte t\u00eb krijuara vet\u00eb.&nbsp;<\/p>\n<\/li>\n<li>\n<p>Baza e t\u00eb dh\u00ebnave MySQL: pa kosto p\u00ebr licenca, e leht\u00eb p\u00ebr tu p\u00ebrdorur.<\/p>\n<\/li>\n<li>\n<p>Serverat n\u00eb Windows Server, sepse .NET at\u00ebher\u00eb mund t\u00eb ishte vet\u00ebm n\u00ebn Windows (Mos e diskutojm\u00eb Mono).<\/p>\n<\/li>\n<\/ul>\n<p>Fizikisht, kjo shprehej n\u00eb \"dedikimin te hosti\".&nbsp;<\/p>\n<h4>Arkitektura e aplikacionit t\u00eb pranim-urdhrave<\/h4>\n<p>At\u00ebher\u00eb t\u00eb gjith\u00eb flisnin p\u00ebr mikrosh\u00ebrbime, nd\u00ebrsa SOA ishte p\u00ebrdorur p\u00ebr rreth 5 vjet n\u00eb projekte t\u00eb m\u00ebdha, p\u00ebr shembull, WCF doli n\u00eb vitin 2006. Por at\u00ebher\u00eb u zgjodh nj\u00eb zgjidhje e besueshme dhe e provuar.<\/p>\n<p>K\u00ebtu \u00ebsht\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/688da7d4e02a6310bf7d2da1b767fe10.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Asp.Net MVC \u00ebsht\u00eb Razor, i cili l\u00ebshon nj\u00eb faqe HTML me renditje n\u00eb server sipas k\u00ebrkes\u00ebs nga forma ose ndonj\u00eb klienti. N\u00eb klient tashm\u00eb CSS dhe scriptet JS paraqesin informacionin dhe, sipas nevoj\u00ebs, kryejn\u00eb k\u00ebrkesa AJAX p\u00ebrmes JQuery.<\/p>\n<p>K\u00ebrkesat n\u00eb server kalojn\u00eb n\u00eb klasat *Controller, ku n\u00eb metod\u00eb ndodh p\u00ebrpunimi dhe gjenerimi i faqes finale HTML. Kontrollor\u00ebt b\u00ebjn\u00eb k\u00ebrkesa n\u00eb nivelin e logjik\u00ebs, t\u00eb quajtur *Services. \u00c7do sh\u00ebrbim p\u00ebrgjigjej p\u00ebr nj\u00eb aspekt t\u00eb caktuar t\u00eb biznesit:<\/p>\n<ul>\n<li>\n<p>P\u00ebr shembull, DepartmentStructureService jepte informacion mbi pizzerit\u00eb dhe departamentet. Departamenti \u00ebsht\u00eb nj\u00eb grup pizzerish n\u00ebn menaxhimin e nj\u00eb franshizuesi.<\/p>\n<\/li>\n<li>\n<p>ReceivingOrdersService pranonte dhe llogariste p\u00ebrb\u00ebrjen e porosis\u00eb.<\/p>\n<\/li>\n<li>\n<p>Dhe SmsService d\u00ebrgonte SMS, duke thirrur sh\u00ebrbime API p\u00ebr d\u00ebrgimin e SMS-ve.<\/p>\n<\/li>\n<\/ul>\n<p>Sh\u00ebrbimet p\u00ebrpunonin t\u00eb dh\u00ebnat nga baza, ruanin logjik\u00ebn e biznesit. N\u00eb secilin sh\u00ebrbim kishte nj\u00eb ose m\u00eb shum\u00eb *Repository me emra p\u00ebrkat\u00ebs. Ato p\u00ebrmbanin k\u00ebrkesat p\u00ebr procedurat e ruajtura n\u00eb baz\u00eb dhe nivelin e mapuesve. N\u00eb procedurat e ruajtura ishte logjika e biznesit, sidomos shum\u00eb n\u00eb ato q\u00eb jepnin t\u00eb dh\u00ebna raportuese. ORM nuk ishte p\u00ebrdorur, t\u00eb gjith\u00eb mb\u00ebshteteshin n\u00eb SQL t\u00eb shkruar me dor\u00eb.&nbsp;<\/p>\n<p>Ishte gjithashtu nj\u00eb nivel modeli domene dhe klasash ndihm\u00ebse t\u00eb p\u00ebrgjithshme, p\u00ebr shembull, klasa Order, e cila p\u00ebrmbante porosin\u00eb. Atje, n\u00eb nivelin e ndihm\u00ebsve, ndodhej nj\u00eb ndihm\u00ebs p\u00ebr konvertimin e tekstit t\u00eb shfaqjes sipas monedh\u00ebs s\u00eb zgjedhur.<\/p>\n<p>E gjith\u00eb kjo mund t\u00eb paraqitet me k\u00ebt\u00eb model: <\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/ff76833cfd19e778bc6ad33589fc328b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>Rruga e porosis\u00eb<\/h4>\n<p>Le t\u00eb shqyrtojm\u00eb rrug\u00ebn e thjeshtuar fillestare t\u00eb krijimit t\u00eb nj\u00eb porosie t\u00eb till\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/da7334d6e6258b800618287de6e1d393.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Fillimisht, faqja ishte statike. Ajo kishte \u00e7mime, dhe lart shkruhej numri i telefonit dhe titulli \"D\u00ebshiron pica \u2013 telefononi n\u00eb num\u00ebr dhe porositni\". P\u00ebr t\u00eb b\u00ebr\u00eb nj\u00eb porosi, na duhej t\u00eb zbatonim nj\u00eb fluks t\u00eb thjesht\u00eb:&nbsp;<\/p>\n<ul>\n<li>\n<p>Klienti hyn n\u00eb faqen statike me \u00e7mimet, zgjedh produktet dhe telefonon n\u00eb numrin e dh\u00ebn\u00eb n\u00eb faqe.<\/p>\n<\/li>\n<li>\n<p>Klienti p\u00ebrmend produktet q\u00eb d\u00ebshiron t\u00eb shtoj\u00eb n\u00eb porosi.<\/p>\n<\/li>\n<li>\n<p>P\u00ebrmend adres\u00ebn dhe emrin e tij.<\/p>\n<\/li>\n<li>\n<p>Operatori pranon porosin\u00eb.<\/p>\n<\/li>\n<li>\n<p>Porosia shfaqet n\u00eb nd\u00ebrfaqen e porosive t\u00eb pranuara.<\/p>\n<\/li>\n<\/ul>\n<p>E gjith\u00eb\u00e7ka fillon me paraqitjen e menus\u00eb. P\u00ebrdoruesi operator i lidhur n\u00eb nj\u00eb moment e pranon vet\u00ebm nj\u00eb porosi. Prandaj, karroca draft mund t\u00eb ruhet n\u00eb sesionin e tij (sesioni i p\u00ebrdoruesit ruhet n\u00eb memorie). Aty \u00ebsht\u00eb objekti Cart, n\u00eb t\u00eb cilin ndodhen produktet dhe informacioni mbi klientin.<\/p>\n<p>Klienti thot\u00eb produktin, operatori klikojn\u00eb n\u00eb <code>+<\/code> n\u00eb an\u00eb t\u00eb produktit, dhe n\u00eb server d\u00ebrgohet nj\u00eb k\u00ebrkes\u00eb. Nga produkti merret informacioni nga baza dhe informacioni mbi produktin shtohet n\u00eb karroc\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/e481d7a5865efc1d37574225c6a0b89e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><strong>Sh\u00ebnim<\/strong>. Po, k\u00ebtu mund t\u00eb mos merret produkti nga baza, por t\u00eb d\u00ebrgohet nga frontend. Por p\u00ebr transparenc\u00eb un\u00eb e tregova pik\u00ebrisht rrug\u00ebn nga baza.&nbsp;<\/p>\n<p>M\u00eb pas, vendosim adres\u00ebn dhe emrin e klientit.&nbsp;<\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/c40e29108a308015522cf219b6d7a515.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Kur klikoni \"Krijo porosi\":<\/p>\n<ul>\n<li>\n<p>D\u00ebrgojm\u00eb k\u00ebrkes\u00ebn n\u00eb OrderController.SaveOrder().<\/p>\n<\/li>\n<li>\n<p>Marrim Cart nga sesioni, aty ndodhen produktet n\u00eb sasin\u00eb e nevojshme.<\/p>\n<\/li>\n<li>\n<p>Shtohet informacioni mbi klientin n\u00eb Cart dhe e d\u00ebrgojm\u00eb n\u00eb metod\u00ebn AddOrder t\u00eb klas\u00ebs ReceivingOrderService, ku ruhet n\u00eb baz\u00eb.&nbsp;<\/p>\n<\/li>\n<li>\n<p>N\u00eb baz\u00eb ka tabela me porosi, p\u00ebrb\u00ebrjen e porosis\u00eb, klientin dhe t\u00eb gjitha jan\u00eb t\u00eb lidhura.<\/p>\n<\/li>\n<li>\n<p>Nd\u00ebrfaqja e paraqitjes s\u00eb porosis\u00eb shkon dhe merr porosit\u00eb m\u00eb t\u00eb fundit dhe i reflektron ato.<\/p>\n<\/li>\n<\/ul>\n<h4>Modules t\u00eb reja<\/h4>\n<p>Pranimi i porosis\u00eb ishte i r\u00ebnd\u00ebsish\u00ebm dhe i nevojsh\u00ebm. Nuk mund t\u00eb b\u00ebsh biznes p\u00ebr shitjen e picave n\u00ebse nuk ke pranimin e porosis\u00eb p\u00ebr shitje. Prandaj, sistemi filloi t\u00eb mbushet me funksionalitete \u2014 nga af\u00ebr 2012 deri n\u00eb 2015. Gjat\u00eb k\u00ebsaj kohe u shfaq\u00ebn shum\u00eb blloqe t\u00eb ndryshme t\u00eb sistemit, t\u00eb cilat do t'i quaj <strong>modulet<\/strong>, n\u00eb kontrast me konceptin e sh\u00ebrbimit apo produktit.&nbsp;<\/p>\n<p>Moduli \u00ebsht\u00eb nj\u00eb grup funksionesh q\u00eb jan\u00eb t\u00eb bashkuara nga nj\u00eb objektiv i p\u00ebrbashk\u00ebt biznesi. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, ato fizikisht ndodhen n\u00eb nj\u00eb aplikacion.<\/p>\n<p>Modulet mund t\u00eb quhen blloqe t\u00eb sistemit. P\u00ebr shembull, ky \u00ebsht\u00eb moduli i raporteve, nd\u00ebrfaqet eAdmin. <noindex><a rel=\"nofollow\" href=\"https:\/\/sila-uma.ru\/2011\/10\/20\/treking-zakazov\/\"><u>ndjek\u00ebsi i produkteve n\u00eb kuzhin\u00eb<\/u><\/a><\/noindex>, identifikimi. T\u00eb gjitha k\u00ebto jan\u00eb nd\u00ebrfaqe t\u00eb ndryshme p\u00ebr p\u00ebrdoruesin, disa madje kan\u00eb edhe stile vizuale t\u00eb ndryshme. T\u00eb gjitha jan\u00eb brenda nj\u00eb aplikacioni, nj\u00eb procesi funksionimi.&nbsp;<\/p>\n<p>Teknikisht, modulet ishin t\u00eb dekoruara si Area (kjo ide ka mbetur edhe n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/aspnet\/core\/mvc\/controllers\/areas?view=aspnetcore-3.1\"><u>asp.net core<\/u><\/a><\/noindex>). Kishte skedar\u00eb t\u00eb ve\u00e7ant\u00eb p\u00ebr frontend, modele, si dhe klasa t\u00eb veta kontrolluesish. N\u00eb p\u00ebrfundim, sistemi u transformua nga nj\u00eb i till\u00eb\u2026<\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/cac789e252e0df13718adbc694c31596.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\u2026n\u00eb k\u00ebt\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/6c75b61b33488edbb0427e87dee14189.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Disa module jan\u00eb realizuar si faqe t\u00eb ve\u00e7anta (projekti ekzekutiv), p\u00ebr shkak t\u00eb funksionaliteteve t\u00ebr\u00ebsisht t\u00eb ve\u00e7anta dhe pjes\u00ebrisht p\u00ebr shkak t\u00eb zhvillimit m\u00eb t\u00eb fokusuar. K\u00ebto jan\u00eb:<\/p>\n<ul>\n<li>\n<p><strong>Faqja<\/strong> \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/sila-uma.ru\/2013\/08\/06\/new_site_dodopizza_ru\/\"><u>versioni i par\u00eb<\/u><\/a><\/noindex> i faqes dodopizza.ru.<\/p>\n<\/li>\n<li>\n<p><strong>Eksporto<\/strong>: shkarkimi i raportimeve nga Dodo IS p\u00ebr 1C.&nbsp;<\/p>\n<\/li>\n<li>\n<p><strong>Personal<\/strong> \u2014 llogaria personale e punonj\u00ebsit. U zhvillua ve\u00e7mas dhe ka hyrje t\u00eb vet dhe dizajn t\u00eb ve\u00e7ant\u00eb.<\/p>\n<\/li>\n<li>\n<p><strong>fs<\/strong> \u2014 projekt p\u00ebr hostimin e statik\u00ebs. M\u00eb von\u00eb u shmang\u00ebm nga kjo, duke e transferuar t\u00eb gjith\u00eb statik\u00ebn n\u00eb CDN Akamai.&nbsp;<\/p>\n<\/li>\n<\/ul>\n<p>Blloqet e tjera ndodheshin n\u00eb aplikacionin BackOffice.&nbsp;<\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/c48e67beca3937a2e6e2df78834fd05d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Shpjegim mbi emrat:<\/p>\n<ul>\n<li>\n<p>Kasieri \u2014 Kasa e restorantit.<\/p>\n<\/li>\n<li>\n<p>Menaxheri i Nd\u00ebrrimit \u2014 nd\u00ebrfaqet p\u00ebr rolin \"Menaxher i Nd\u00ebrrimit\": statistika operuese mbi shitjet e pizzarive, mund\u00ebsia p\u00ebr t\u00eb vendosur produkte n\u00eb list\u00ebn e ndalimit, ndryshimi i porosis\u00eb.<\/p>\n<\/li>\n<li>\n<p>Menaxheri i Zyr\u00ebs \u2014 nd\u00ebrfaqet p\u00ebr rolin \"Menaxher i Pizzarive\" dhe \"Franshizuesi\". K\u00ebtu jan\u00eb mbledhur funksionet p\u00ebr konfigurimin e pizzarive, promovimet e tyre, pranimin dhe pun\u00ebn me punonj\u00ebsit, raportet.<\/p>\n<\/li>\n<li>\n<p>Ekranet Publike \u2014 nd\u00ebrfaqet p\u00ebr televizor\u00ebt dhe tablet\u00ebt, t\u00eb cil\u00ebt varen n\u00eb pizzari. N\u00eb televizor\u00eb shfaqet menyja, informacion reklamues, statusi i porosis\u00eb gjat\u00eb dor\u00ebzimit.&nbsp;<\/p>\n<\/li>\n<\/ul>\n<p>Ata p\u00ebrdor\u00ebn nj\u00eb shtres\u00eb t\u00eb p\u00ebrbashk\u00ebt sh\u00ebrbimesh, nj\u00eb bllok t\u00eb p\u00ebrbashk\u00ebt t\u00eb klasave domain Dodo.Core, si dhe nj\u00eb baz\u00eb t\u00eb p\u00ebrbashk\u00ebt. Ndonj\u00ebher\u00eb mund t\u00eb kalonin nga nj\u00ebri te tjetri. P\u00ebrfshir\u00eb sh\u00ebrbimet e p\u00ebrbashk\u00ebta, vizitonin edhe faqet e ve\u00e7anta, si dodopizza.ru ose personal.dodopizza.ru.<\/p>\n<p>Me shfaqjen e moduleve t\u00eb reja, u p\u00ebrpoq\u00ebm t\u00eb ri-p\u00ebrdorim kodin e tashm\u00eb krijuar t\u00eb sh\u00ebrbimeve, procedurave t\u00eb ruajtura dhe tabelave n\u00eb baz\u00eb.&nbsp;<\/p>\n<p>P\u00ebr nj\u00eb kuptim m\u00eb t\u00eb mir\u00eb t\u00eb shkall\u00ebs s\u00eb moduleve t\u00eb b\u00ebra n\u00eb sistem, ja skema nga viti 2012 me planet e zhvillimit:<\/p>\n<\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/57bf3e8be415ed9ae38abb976f7a5393.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Deri n\u00eb vitin 2015, gjith\u00e7ka n\u00eb skem\u00eb dhe madje m\u00eb shum\u00eb ishte n\u00eb prodhim.<\/p>\n<ul>\n<li>\n<p>Pranimi i porosis\u00eb u shnd\u00ebrrua n\u00eb nj\u00eb bllok t\u00eb ve\u00e7ant\u00eb t\u00eb Qendr\u00ebs s\u00eb Kontaktit, ku porosia pranoheshin nga operatori.<\/p>\n<\/li>\n<li>\n<p>Shfaq\u00ebn ekrane publike me meny dhe informacion, t\u00eb cilat varen n\u00eb pizzari.<\/p>\n<\/li>\n<li>\n<p>N\u00eb kuzhin\u00eb ka nj\u00eb modul, i cili automatikisht riprodhon nj\u00eb mesazh me z\u00eb \"Pizza e re\" me pranimin e nj\u00eb porosie t\u00eb re, si dhe printon nj\u00eb flet\u00eb d\u00ebrges\u00eb p\u00ebr kurierin. Kjo e thjeshton shum\u00eb proceset n\u00eb kuzhin\u00eb, duke lejuar q\u00eb punonj\u00ebsit t\u00eb mos shqet\u00ebsohen nga nj\u00eb num\u00ebr i madh operacionesh t\u00eb thjeshta.<\/p>\n<\/li>\n<li>\n<p>Blloku i dor\u00ebzimit u b\u00eb nj\u00eb Kas\u00eb e Ve\u00e7ant\u00eb e Dor\u00ebzimit, ku porosia i jepet kurierit, i cili fillimisht ishte caktuar n\u00eb nd\u00ebrrim. Koha e tij e pun\u00ebs u l\u00ebshua p\u00ebr mbajtjen e pag\u00ebs.&nbsp;<\/p>\n<\/li>\n<\/ul>\n<p>Paralelisht nga 2012 deri n\u00eb 2015 u shfaq\u00ebn m\u00eb shum\u00eb se 10 zhvillues, u hap\u00ebn 35 pizzeri, u zhvillua nj\u00eb sistem p\u00ebr Rumani dhe u p\u00ebrgatit\u00ebn pika p\u00ebr hapje n\u00eb SHBA. Zhvilluesit nuk merreshin m\u00eb me t\u00eb gjitha detyrat, por u ndan\u00eb n\u00eb grupe; secila specializohej n\u00eb pjes\u00ebn e saj t\u00eb sistemit.&nbsp;<\/p>\n<h3>Problemet<\/h3>\n<p>P\u00ebrfshir\u00eb edhe p\u00ebr shkak t\u00eb arkitektur\u00ebs (por jo vet\u00ebm).<\/p>\n<h4>Kaosi n\u00eb baz\u00eb<\/h4>\n<p>Nj\u00eb baz\u00eb \u2014 \u00ebsht\u00eb e p\u00ebrshtatshme. Ajo mund t\u00eb arrij\u00eb konsistenc\u00eb, p\u00ebrmes mjeteve t\u00eb integruara n\u00eb bazat relacionale. T\u00eb punosh me t\u00eb \u00ebsht\u00eb e njohur dhe e leht\u00eb, ve\u00e7an\u00ebrisht n\u00ebse ka pak tabela dhe pak t\u00eb dh\u00ebna.<\/p>\n<p>Por gjat\u00eb 4 viteve t\u00eb zhvillimit, n\u00eb baz\u00eb rezultuan rreth 600 tabela, 1500 procedura t\u00eb ruajtura, shum\u00eb prej t\u00eb cilave kishin gjithashtu logjik\u00eb. Fatkeq\u00ebsisht, procedurat e ruajtura nuk ofrojn\u00eb ndonj\u00eb p\u00ebrfitim t\u00eb ve\u00e7ant\u00eb kur punohet me MySQL. Ato nuk keqen nga baza, dhe ruajtja e logjik\u00ebs n\u00eb to e komplikon zhvillimin dhe k\u00ebrkimin. Rishfryt\u00ebzimi i kodit gjithashtu \u00ebsht\u00eb i v\u00ebshtir\u00eb.<\/p>\n<p><strong>N\u00eb shum\u00eb tabela nuk kishte indekse t\u00eb p\u00ebrshtatshme<\/strong>, ndonj\u00ebher\u00eb, p\u00ebrkundrazi, kishte shum\u00eb indekse, t\u00eb cilat e v\u00ebshtir\u00ebsonin inserimin. Duhej t\u00eb modifikoheshin rreth 20 tabela \u2014 transaksioni p\u00ebr krijimin e nj\u00eb porosie mund t\u00eb zgjaste rreth 3-5 sekonda.&nbsp;<\/p>\n<p><strong>T\u00eb dh\u00ebnat n\u00eb tabela nuk ishin gjithmon\u00eb n\u00eb form\u00ebn m\u00eb t\u00eb p\u00ebrshtatshme<\/strong>. Diku duhej t\u00eb b\u00ebhej denormalizim. Nj\u00eb pjes\u00eb e t\u00eb dh\u00ebnave q\u00eb merreshin rregullisht ishte n\u00eb nj\u00eb kolone n\u00eb form\u00ebn e nj\u00eb strukture XML, kjo e rritte koh\u00ebn e ekzekutimit, zgjaste k\u00ebrkesat dhe e komplikonte zhvillimin.<\/p>\n<p>Ngarkoheshin shum\u00eb <strong>k\u00ebrkesa t\u00eb larmishme<\/strong>. Ve\u00e7an\u00ebrisht vuajt\u00ebn tabelat e njohura, si tabela e p\u00ebrmendur <em>orders<\/em> ose tabela <em>pizzeria<\/em>. Ato p\u00ebrdoren p\u00ebr t\u00eb treguar nd\u00ebrfaqen operative n\u00eb kuzhin\u00eb, analitik\u00ebn. Po ashtu, u referoheshin nga uebsajti (<noindex><a rel=\"nofollow\" href=\"https:\/\/dodopizza.ru\/\"><u>dodopizza.ru<\/u><\/a><\/noindex>), ku n\u00eb \u00e7do moment mund t\u00eb vinin papritur shum\u00eb k\u00ebrkesa.&nbsp;<\/p>\n<p><strong>T\u00eb dh\u00ebnat nuk ishin t\u00eb agreguara<\/strong> dhe shum\u00eb llogaritje ndodhnin n\u00eb fluturim me mjetet e baz\u00ebs. Kjo krijonte llogaritje t\u00eb panevojshme dhe nj\u00eb ngarkes\u00eb shtes\u00eb.&nbsp;<\/p>\n<p>Shpesh, kodi hynte n\u00eb baz\u00eb kur nuk kishte pse ta b\u00ebnte k\u00ebt\u00eb. Diku mungonin operacionet bulk, diku duhej t\u00eb shp\u00ebrndaheshin nj\u00eb k\u00ebrkes\u00eb n\u00eb disa t\u00eb tjera p\u00ebrmes kodit, p\u00ebr t\u00eb p\u00ebrshpejtuar dhe rritur besueshm\u00ebrin\u00eb.&nbsp;<\/p>\n<h4>Lidhshm\u00ebria dhe ngatht\u00ebsia n\u00eb kod<\/h4>\n<p><strong>Modulet, t\u00eb cilat duhej t\u00eb p\u00ebrgjigjeshin p\u00ebr sektorin e tyre t\u00eb biznesit, nuk e b\u00ebnin k\u00ebt\u00eb me sinqeritet.<\/strong>. Disa prej tyre kishin dublim t\u00eb funksioneve p\u00ebr rolet. P\u00ebr shembull, nj\u00eb marketer lokal, i cili p\u00ebrgjigjej p\u00ebr aktivitetin marketingut n\u00eb rrjet n\u00eb qytetin e tij, ishte e nevojshme q\u00eb t\u00eb p\u00ebrdorte si nd\u00ebrfaqen \"Administrator\" (p\u00ebr krijimin e promovimeve), ashtu edhe nd\u00ebrfaqen \"Menaxheri i Zyr\u00ebs\" (p\u00ebr t\u00eb par\u00eb ndikimin e promovimeve n\u00eb biznes). Sigurisht, brenda t\u00eb dy modulit p\u00ebrdornin nj\u00eb sh\u00ebrbim t\u00eb p\u00ebrbashk\u00ebt, i cili punonte me promovimet bonus.<\/p>\n<p>Sh\u00ebrbimet (klasat brenda nj\u00eb projekti t\u00eb madh monolitik) mund t\u00eb th\u00ebrrisnin nj\u00ebra-tjetr\u00ebn p\u00ebr t\u00eb pasuruar t\u00eb dh\u00ebnat e tyre.<\/p>\n<p>Me klasat e modeleve vet\u00eb, t\u00eb cilat ruanin t\u00eb dh\u00ebnat, <strong>puna n\u00eb kod b\u00ebhej n\u00eb m\u00ebnyra t\u00eb ndryshme<\/strong>. Diku kishte konstruktora, p\u00ebrmes t\u00eb cilave mund t\u00eb specifikonin fushat e detyrueshme. Diku kjo b\u00ebhej p\u00ebrmes pronave publike. Sigurisht, marrja dhe p\u00ebrpunimi i t\u00eb dh\u00ebnave nga baza ishte e larmishme.&nbsp;<\/p>\n<p><strong>Logjika ishte ose n\u00eb kontrollet, ose n\u00eb klasat e sh\u00ebrbimeve.<\/strong>&nbsp;<\/p>\n<p>K\u00ebto duken si probleme t\u00eb vogla, por ato ngadal\u00ebsonin shum\u00eb zhvillimin dhe ulin cil\u00ebsin\u00eb, q\u00eb \u00e7onte n\u00eb paq\u00ebndrueshm\u00ebri dhe gabime.&nbsp;<\/p>\n<h4>Kompleksiteti i zhvillimit t\u00eb madh<\/h4>\n<p><strong>V\u00ebshtir\u00ebsit\u00eb ndodh\u00ebn edhe n\u00eb zhvillim<\/strong>. Duhej t\u00eb b\u00ebheshin blloqe t\u00eb ndryshme t\u00eb sistemit, p\u00ebr m\u00eb tep\u00ebr paralelisht. P\u00ebrfshirja e nevojave t\u00eb \u00e7do komponenti n\u00eb nj\u00eb kod t\u00eb vetme po b\u00ebhej gjithnj\u00eb e m\u00eb e v\u00ebshtir\u00eb. Nuk ishte e leht\u00eb t\u00eb binin dakord dhe t\u00eb k\u00ebnaqnin t\u00eb gjith\u00eb komponent\u00ebt nj\u00ebkoh\u00ebsisht. K\u00ebtyre iu shtuan kufizimet n\u00eb teknologji, ve\u00e7an\u00ebrisht n\u00eb lidhje me baz\u00ebn dhe front-endin. Duhej t\u00eb heqeshim dor\u00eb nga JQuery n\u00eb favor t\u00eb kornizave t\u00eb nivelit t\u00eb lart\u00eb, sidomos n\u00eb pjes\u00ebn e sh\u00ebrbimeve klientike (faqja).<\/p>\n<p><strong>N\u00eb disa pjes\u00eb t\u00eb sistemit mund t\u00eb p\u00ebrdoret baza, m\u00eb e p\u00ebrshtatshme p\u00ebr k\u00ebt\u00eb<\/strong>. P\u00ebr shembull, m\u00eb von\u00eb pat\u00ebm nj\u00eb precedent kalimi nga Redis n\u00eb CosmosDB p\u00ebr ruajtjen e shport\u00ebs s\u00eb porosis\u00eb.&nbsp;<\/p>\n<p>Ekipet dhe zhvilluesit, t\u00eb cil\u00ebt merren me fush\u00ebn e tyre, qart\u00ebsisht donin m\u00eb shum\u00eb autonomi p\u00ebr sh\u00ebrbimet e tyre, si n\u00eb aspektin e zhvillimit ashtu edhe n\u00eb at\u00eb t\u00eb lan\u00e7imit. Konfliktet gjat\u00eb mergerave, problemet gjat\u00eb l\u00ebshimeve. N\u00ebse p\u00ebr 5 zhvillues kjo \u00e7\u00ebshtje \u00ebsht\u00eb e par\u00ebnd\u00ebsishme, at\u00ebher\u00eb p\u00ebr 10, dhe sidomos me rritjen e planifikuar, gjith\u00e7ka do t\u00eb b\u00ebhej m\u00eb serioze. Dhe p\u00ebrpara duhet t\u00eb kishte zhvillim t\u00eb aplikacionit mobil (ai filloi n\u00eb 2017, dhe n\u00eb 2018 kishte) <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dododev\/blog\/498280\/\">r\u00ebnia e madhe<\/a><\/noindex>).&nbsp;<\/p>\n<p><strong>Pjes\u00eb t\u00eb ndryshme t\u00eb sistemit k\u00ebrkonin tregues t\u00eb ndrysh\u00ebm stabiliteti.<\/strong>, por shkak t\u00eb lidhjes s\u00eb fort\u00eb t\u00eb sistemit, ne nuk mund ta siguronim k\u00ebt\u00eb. Nj\u00eb gabim n\u00eb zhvillimin e nj\u00eb funksioni t\u00eb ri n\u00eb panel mund t\u00eb ishte shkaktari i problematikave gjat\u00eb procesit t\u00eb porosis\u00eb n\u00eb faqe, pasi kodi \u00ebsht\u00eb i p\u00ebrbashk\u00ebt dhe i ricikluar, baza dhe t\u00eb dh\u00ebnat gjithashtu jan\u00eb t\u00eb nj\u00ebjta.<\/p>\n<p>Ndoshta do t\u00eb ishte e mundur t\u00eb mos lejohej k\u00ebto gabime dhe probleme n\u00eb kuad\u00ebr t\u00eb nj\u00eb arkitekture monolitike-modulare: t\u00eb b\u00ebhej ndarja e p\u00ebrgjegj\u00ebsive, t\u00eb kryhej refaktorizimi si i kodit, ashtu edhe i baz\u00ebs s\u00eb t\u00eb dh\u00ebnave, t\u00eb ndaheshin qart\u00eb shtresat nga nj\u00ebra-tjetra, dhe t\u00eb kontrollohej cil\u00ebsia \u00e7do dit\u00eb. Por vendimet arkitektonike t\u00eb zgjedhura dhe fokusimi n\u00eb zgjerimin e shpejt\u00eb t\u00eb funksionalitetit t\u00eb sistemit \u00e7uan n\u00eb probleme sa i p\u00ebrket stabilitetit.<\/p>\n<h4>Si blogu Sila e mendjes d\u00ebrgoi t\u00eb ardhurat n\u00eb restorante<\/h4>\n<p>N\u00ebse rritja e rrjetit t\u00eb picerive (dhe ngarkesave) do t\u00eb vazhdonte me t\u00eb nj\u00ebjtin rit\u00ebm, pas disa koh\u00ebsh r\u00ebniet do t\u00eb ishin t\u00eb tilla q\u00eb sistemi nuk do t\u00eb ngrinte m\u00eb. Nj\u00eb histori e till\u00eb ilustron mir\u00eb problemet me t\u00eb cilat filluam t\u00eb p\u00ebrballeshim n\u00eb vitin 2015.&nbsp;<\/p>\n<p>N\u00eb blogun \u201e<noindex><a rel=\"nofollow\" href=\"http:\/\/sila-uma.ru\/\"><u>Sila e mendjes<\/u><\/a><\/noindex>\u201c kishte nj\u00eb widget q\u00eb shfaqte t\u00eb dh\u00ebnat mbi t\u00eb ardhurat p\u00ebr vitin e gjith\u00eb rrjetit. Widgeti i referohej API-s\u00eb publike Dodo, e cila ofron k\u00ebto t\u00eb dh\u00ebna. Tani kjo statistik\u00eb \u00ebsht\u00eb e disponueshme n\u00eb <noindex><a rel=\"nofollow\" href=\"http:\/\/dodopizzastory.com\/\"><u>http:\/\/dodopizzastory.com\/<\/u><\/a><\/noindex>. Widgeti shfaqej n\u00eb \u00e7do faqe dhe b\u00ebnte k\u00ebrkesa n\u00eb intervale \u00e7do 20 sekonda. K\u00ebrkesa shkonte n\u00eb api.dodopizza.ru dhe k\u00ebrkonte:<\/p>\n<ul>\n<li>\n<p>numrin e picerive n\u00eb rrjet;<\/p>\n<\/li>\n<li>\n<p>t\u00eb ardhurat totale t\u00eb rrjetit nga fillimi i vitit;<\/p>\n<\/li>\n<li>\n<p>t\u00eb ardhurat p\u00ebr sot.<\/p>\n<\/li>\n<\/ul>\n<p>K\u00ebrkesa p\u00ebr statistik\u00ebn mbi t\u00eb ardhurat shkonte direkt n\u00eb baz\u00eb dhe fillonte t\u00eb k\u00ebrkonte t\u00eb dh\u00ebnat mbi porosit\u00eb, duke i agreguar ato n\u00eb koh\u00eb reale dhe duke dh\u00ebn\u00eb shum\u00ebn.&nbsp;<\/p>\n<p>N\u00eb t\u00eb nj\u00ebjt\u00ebn tabel\u00eb porosish hynin Kassat n\u00eb restorante, nxirrnin list\u00ebn e porosive t\u00eb pranuara p\u00ebr sot, dhe p\u00ebrfshinin edhe porosi t\u00eb reja. Kassat b\u00ebnin k\u00ebrkesat e tyre \u00e7do 5 sekonda ose me rinovimin e faqes.<\/p>\n<p>Skema dukej k\u00ebshtu:<\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/9f39d8c412c64e6aa40a0d5170a8cc0e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Nj\u00eb her\u00eb n\u00eb vjesht\u00eb, Fyodor Ovchinnikov shkroi nj\u00eb artikull t\u00eb gjat\u00eb dhe popullor n\u00eb blogun e tij. N\u00eb blog erdh\u00ebn shum\u00eb njer\u00ebz dhe filluan ta lexonin me kujdes. Nd\u00ebrsa secili nga ata q\u00eb erdh\u00ebn lexonte artikullin, widgeti me t\u00eb ardhurat punonte si\u00e7 duhet dhe b\u00ebnte k\u00ebrkesa n\u00eb API \u00e7do 20 sekonda.<\/p>\n<p>API ka thirrur procedur\u00ebn e ruajtur p\u00ebr llogaritjen e shum\u00ebs s\u00eb t\u00eb gjitha porosive q\u00eb nga fillimi i vitit n\u00eb t\u00eb gjitha pica-terit e rrjetit. Agregimi po b\u00ebhej mbi tabel\u00ebn porosit\u00eb, e cila \u00ebsht\u00eb shum\u00eb e njohur. N\u00eb t\u00eb hynin t\u00eb gjitha kasat e t\u00eb gjitha restoranteve t\u00eb hapura n\u00eb at\u00eb moment. Kassat ndaluan s\u00eb p\u00ebrgjiguri, porosit\u00eb nuk u pranohen. Po ashtu, ato nuk pranoheshin nga faqja, nuk shfaqeshin n\u00eb tracker, menaxheri i nd\u00ebrrimit nuk mund t'i shihte ato n\u00eb nd\u00ebrfaqen e tij.&nbsp;<\/p>\n<p>Kjo nuk \u00ebsht\u00eb historia e vetme. Deri n\u00eb vjesht\u00ebn e vitit 2015, ngarkesa n\u00eb sistem ishte kritike \u00e7do t\u00eb premte. Disa her\u00eb e \u00e7uam jasht\u00eb funksionit API publik, dhe nj\u00eb her\u00eb, na duhej madje t\u00eb fiknim faqen, sepse asgj\u00eb nuk ndihmonte. Madje kishte nj\u00eb list\u00eb sh\u00ebrbimesh me rregullin e fikjes n\u00eb rast ngarkesash serioze.<\/p>\n<p>Nga kjo koh\u00eb fillon lufta jon\u00eb me ngarkesat dhe p\u00ebr stabilizimin e sistemit (nga vjeshta e vitit 2015 deri n\u00eb vjesht\u00ebn e vitit 2018). Pik\u00ebrisht at\u00ebher\u00eb ndodhi \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzadev\/blog\/498280\/\"><u>R\u00ebnia e madhe<\/u><\/a><\/noindex>\". P\u00ebrpara ndodhnin ndodhi her\u00eb pas here, disa ishin shum\u00eb t\u00eb ndjeshme, por periudha e p\u00ebrgjithshme e paq\u00ebndrueshm\u00ebris\u00eb tani mund t\u00eb konsiderohet e kaluar.<\/p>\n<h4>Rritja e shpejt\u00eb e biznesit<\/h4>\n<p>Pse nuk mund t\u00eb \"b\u00ebhej menj\u00ebher\u00eb mir\u00eb\"? Mjafton t\u00eb shikosh grafikun e m\u00ebposht\u00ebm.<\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/a6dd39909ecc553b2ff4a8fc370d5846.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Gjithashtu, n\u00eb vitet 2014-2015 u hap nj\u00eb deg\u00eb n\u00eb Rumani dhe u p\u00ebrgatit hapja e nj\u00eb dege n\u00eb SHBA.<\/p>\n<p>Rrjeti po rritej shum\u00eb shpejt, po hapeshin vende t\u00eb reja, po shfaqeshin formate t\u00eb reja t\u00eb picerive, p\u00ebr shembull, nj\u00eb pica-ter \u00ebsht\u00eb hapur n\u00eb nj\u00eb food court. T\u00eb gjitha k\u00ebto k\u00ebrkonin v\u00ebmendje t\u00eb konsiderueshme pik\u00ebrisht p\u00ebr zgjerimin e funksioneve Dodo IS. Pa t\u00eb gjitha k\u00ebto funksione, pa gjurmimin n\u00eb kuzhin\u00eb, regjistrimin e produkteve dhe humbjeve n\u00eb sistem, shfaqjen e porosive n\u00eb sall\u00ebn e food court, nuk do t\u00eb flisnim tani p\u00ebr \"arkitektur\u00ebn e duhur\" dhe \"qasjen e sakt\u00eb\" n\u00eb zhvillim.<\/p>\n<p>Po ashtu pengesat p\u00ebr rishikimin e koh\u00ebs s\u00eb arkitektur\u00ebs dhe n\u00eb p\u00ebrgjith\u00ebsi v\u00ebmendjen ndaj problemeve teknike ishte kriza e vitit 2014. K\u00ebto gj\u00ebra godasin r\u00ebnd\u00eb mund\u00ebsit\u00eb p\u00ebr rritjen e ekipeve, ve\u00e7an\u00ebrisht p\u00ebr bizneset e reja, si\u00e7 ishte Dodo Pica.<\/p>\n<h3>Zgjidhjet e shpejta q\u00eb ndihmuan<\/h3>\n<p>Problemet k\u00ebrkonin zgjidhje. N\u00eb m\u00ebnyr\u00eb t\u00eb p\u00ebrgjithshme, zgjidhjet mund t\u00eb ndahen n\u00eb 2 grupe:<\/p>\n<ul>\n<li>\n<p>T\u00eb shpejtat, t\u00eb cilat shuajn\u00eb zjarrin dhe ofrojn\u00eb nj\u00eb rezerv\u00eb t\u00eb vog\u00ebl forc\u00eb dhe na fitojn\u00eb koh\u00eb p\u00ebr ndryshime.<\/p>\n<\/li>\n<li>\n<p>Sistematike dhe, p\u00ebr k\u00ebt\u00eb arsye, t\u00eb gjat\u00eb. Ristrukturimi i disa moduleve, ndarja e arkitektur\u00ebs monolitike n\u00eb sh\u00ebrbime t\u00eb ve\u00e7anta (shumica e tyre jan\u00eb p\u00ebr t'u konsideruar m\u00eb shum\u00eb makro-sh\u00ebrbime sesa mikro, dhe p\u00ebr k\u00ebt\u00eb ka) <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=XeNrWkRmVWw\"><u>raporti i Andrey Morievsky<\/u><\/a><\/noindex>).&nbsp;<\/p>\n<\/li>\n<\/ul>\n<p>Lista e shkurt\u00ebr e ndryshimeve \u00ebsht\u00eb si vijon:<\/p>\n<h4>Shkalla deri te master baza<\/h4>\n<p>Sigurisht, e para gj\u00eb q\u00eb b\u00ebhet p\u00ebr t\u00eb p\u00ebrballuar ngarkesat \u00ebsht\u00eb t\u00eb rritet fuqia e serverit. Kjo \u00ebsht\u00eb b\u00ebr\u00eb p\u00ebr master baz\u00ebn dhe p\u00ebr server\u00ebt web. Fatkeq\u00ebsisht, kjo \u00ebsht\u00eb e mundur vet\u00ebm deri n\u00eb nj\u00eb kufi t\u00eb caktuar, m\u00eb tej b\u00ebhet shum\u00eb e shtrenjt\u00eb.<\/p>\n<p>Q\u00eb nga viti 2014 ne kaluam n\u00eb Azure, p\u00ebr k\u00ebt\u00eb tem\u00eb ne gjithashtu kemi shkruar q\u00eb n\u00eb at\u00eb koh\u00eb n\u00eb artikullin \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/microsoft\/blog\/277821\/\">Si Dodo Pizza d\u00ebrgon pizzat me ndihm\u00ebn e Microsoft Azure<\/a><\/noindex>\". Por pas nj\u00eb vargu rritjesh t\u00eb server\u00ebve p\u00ebr baz\u00ebn, ne u godit\u00ebm nga \u00e7mimi.&nbsp;<\/p>\n<h4>Replika e baz\u00ebs p\u00ebr lexim<\/h4>\n<p>U krijuan dy replika p\u00ebr baz\u00ebn:<\/p>\n<p><strong>ReadReplica<\/strong> <strong>p\u00ebr k\u00ebrkesa mbi referencat<\/strong>. Ajo p\u00ebrdoret p\u00ebr leximin e referencave, si qytetet, rrug\u00ebt, pizz\u00ebrit\u00eb, produktet (domen afatshkurt\u00ebr t\u00eb ndryshuar), dhe n\u00eb ato nd\u00ebrfaqe ku pranohet nj\u00eb vones\u00eb e vog\u00ebl. K\u00ebto replika ishin 2, ne i siguruan ato po ashtu si masterin.<\/p>\n<p><strong>ReadReplica p\u00ebr k\u00ebrkesa mbi raporte<\/strong>. N\u00eb k\u00ebt\u00eb baz\u00eb, disponueshm\u00ebria ishte m\u00eb e ul\u00ebt, por t\u00eb gjitha raportet kalonin aty. Edhe pse kishte k\u00ebrkesa t\u00eb r\u00ebnda mbi p\u00ebrllogaritje t\u00eb m\u00ebdha, ato nuk ndikojn\u00eb n\u00eb baz\u00ebn kryesore dhe n\u00eb nd\u00ebrfaqet operative.&nbsp;<\/p>\n<h4>Cache n\u00eb kod<\/h4>\n<p>Nuk kishte kesh n\u00eb kod (asgj\u00eb). Kjo shkaktonte k\u00ebrkesa shtes\u00eb, jo gjithmon\u00eb t\u00eb nevojshme, n\u00eb baz\u00ebn e ngarkuar. Kesh ishin fillimisht n\u00eb memorje, si dhe n\u00eb nj\u00eb sh\u00ebrbim t\u00eb jasht\u00ebm p\u00ebr kesh, ishte Redis. T\u00eb gjitha u invaliduan sipas koh\u00ebs, konfigurimet u tregoheshin n\u00eb kod.<\/p>\n<h4>Disa servera p\u00ebr backend<\/h4>\n<p>Backend i aplikacionit gjithashtu duhej t\u00eb jet\u00eb e p\u00ebrshtatur p\u00ebr t\u00eb p\u00ebrballuar ngarkesat e rritura. Duhej b\u00ebr\u00eb nj\u00eb klaster nga nj\u00eb server i vet\u00ebm i iis. Ne e transferuam <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/aspnet\/core\/fundamentals\/app-state?view=aspnetcore-3.1\"><u>sesionin e aplikacioneve<\/u><\/a><\/noindex> nga memorja n\u00eb RedisCache, gj\u00eb q\u00eb lejoj t\u00eb ket\u00eb disa servera, q\u00eb q\u00ebndrojn\u00eb pas nj\u00eb balancuesi thjesht\u00eb ngarkese me round robin. Fillimisht u p\u00ebrdor i nj\u00ebjti Redis, q\u00eb p\u00ebrdorej edhe p\u00ebr kesh\u00ebt, pastaj u shp\u00ebrndan n\u00eb disa.&nbsp;<\/p>\n<p>N\u00eb fund, arkitektura u komplikuar...<\/p>\n<p><img decoding=\"async\" alt=\"Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm\" src=\"\/wp-content\/uploads\/2020\/10\/70a3e8d5578469239c08b4759ab32264.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>...por nj\u00eb pjes\u00eb e tensionit arriti t\u00eb hiqet.<\/p>\n<p>Dhe m\u00eb pas duhej t\u00eb riem\u00ebrtoheshin komponent\u00ebt e ngarkuar, p\u00ebr t\u00eb cilat ne u angazhuam. P\u00ebr k\u00ebt\u00eb do t\u00eb flasim n\u00eb pjes\u00ebn tjet\u00ebr.<\/p>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dododev\/blog\/521614\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418\u043b\u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u043d\u0435\u0441\u0447\u0430\u0441\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0441 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043e\u043c \u043d\u0435\u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u0430 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Dodo IS \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0441\u0440\u0430\u0437\u0443 \u0436\u0435, \u043a\u0430\u043a \u0438 \u0431\u0438\u0437\u043d\u0435\u0441 \u0414\u043e\u0434\u043e \u041f\u0438\u0446\u0446\u044b \u2014 \u0432 2011 \u0433\u043e\u0434\u0443. \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u043b\u0435\u0436\u0430\u043b\u0430 \u0438\u0434\u0435\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u0438 \u0442\u043e\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0446\u0438\u0444\u0440\u043e\u0432\u043a\u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u043f\u0440\u0438\u0447\u0435\u043c \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0438\u043b\u0430\u043c\u0438, \u0447\u0442\u043e \u0435\u0449\u0435 \u0442\u043e\u0433\u0434\u0430 \u0432 2011 \u0433\u043e\u0434\u0443 \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0441\u043a\u0435\u043f\u0442\u0438\u0446\u0438\u0437\u043c\u0430. \u041d\u043e \u0432\u043e\u0442 \u0443\u0436\u0435 9 \u043b\u0435\u0442 \u043c\u044b \u0438\u0434\u0435\u043c \u043f\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95805,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95804","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0418\u043b\u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u043d\u0435\u0441\u0447\u0430\u0441\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0441 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043e\u043c \u043d\u0435\u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u0430 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443.\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Dodo IS \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0441\u0440\u0430\u0437\u0443 \u0436\u0435, \u043a\u0430\u043a \u0438 \u0431\u0438\u0437\u043d\u0435\u0441 \u0414\u043e\u0434\u043e \u041f\u0438\u0446\u0446\u044b \u2014 \u0432 2011 \u0433\u043e\u0434\u0443.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/istoriya-arhitektury-dodo-is-rannij-monolit\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b Dodo IS: \u0440\u0430\u043d\u043d\u0438\u0439 \u043c\u043e\u043d\u043e\u043b\u0438\u0442 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418\u043b\u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u043d\u0435\u0441\u0447\u0430\u0441\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0441 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043e\u043c \u043d\u0435\u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u0430 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443.\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Dodo IS \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0441\u0440\u0430\u0437\u0443 \u0436\u0435, \u043a\u0430\u043a \u0438 \u0431\u0438\u0437\u043d\u0435\u0441 \u0414\u043e\u0434\u043e \u041f\u0438\u0446\u0446\u044b \u2014 \u0432 2011 \u0433\u043e\u0434\u0443.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/istoriya-arhitektury-dodo-is-rannij-monolit\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-03T11:42:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-03T11:42:27+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Historia e arkitektur\u00ebs Dodo IS: monoliti i hersh\u00ebm | ProHoster","description":"Ose \u00e7do kompani e pafat me monolitin \u00ebsht\u00eb e pafat n\u00eb m\u00ebnyr\u00ebn e saj. Zhvillimi i sistemit Dodo IS filloi menj\u00ebher\u00eb, ashtu si biznesi i Dodo Pizza - n\u00eb vitin 2011.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/istoriya-arhitektury-dodo-is-rannij-monolit","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b Dodo IS: \u0440\u0430\u043d\u043d\u0438\u0439 \u043c\u043e\u043d\u043e\u043b\u0438\u0442 | ProHoster","og:description":"\u0418\u043b\u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u043d\u0435\u0441\u0447\u0430\u0441\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0441 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043e\u043c \u043d\u0435\u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u0430 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443.\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Dodo IS \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0441\u0440\u0430\u0437\u0443 \u0436\u0435, \u043a\u0430\u043a \u0438 \u0431\u0438\u0437\u043d\u0435\u0441 \u0414\u043e\u0434\u043e \u041f\u0438\u0446\u0446\u044b \u2014 \u0432 2011 \u0433\u043e\u0434\u0443.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/istoriya-arhitektury-dodo-is-rannij-monolit","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-03T11:42:27+00:00","article:modified_time":"2020-10-03T11:42:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95804","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:57:47","updated":"2022-09-28 00:34:07","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/95804","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=95804"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/95804\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/95805"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=95804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=95804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=95804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}