Historiae Dodonis Architecture: An Early Monolith

Vel omnis infelix societas cum monolitho suo modo infelix est.

Progressio Dodo IS systematis statim incepit, sicut negotium Dodo Pizza, anno 2011 . Fundata est ex idea integrae ac totae digitizationis negotiorum processuum, et suisquae etiam tum anno 2011 multum quaestionibus et scepticismo effecit. Sed per IX annos iam hanc viam secuti sumus β€” cum nostra progressione, quae a monolitho incepit.

Hic articulus est "responsum" quaestionibus "Quare architecturae rescribe et tam magnas scalas ac diuturnas mutationes facere?" ad priorem articulum "Historia Dodonis Architecture: Via Officii Back". Incipiam quomodo progressio Dodo IS incepit, quomodo architectura originalis similis apparuit, quomodo moduli novi apparuerunt, et propter quas difficultates magnarum mutationum faciendae sunt.

Historiae Dodonis Architecture: An Early Monolith

Articulorum series "Quid est Dodo IS?" narrat:

  1. Mane monolith in Dodo IS (2011-2015). (Hic es)

  2. Tergum officium Path: Separate Bases sitæ et Bus.

  3. Cliens inde iter: frons super basim (2016-2017). (In progress...)

  4. Historia verae microservices. (2018-2019). (In progress...)

  5. Secandum de monolitho et stabilizatione architecturae. (In progress...)

Architectura initialis

Anno 2011 , architectura Dodo IS hoc modo respexit:

Historiae Dodonis Architecture: An Early Monolith

Primus modulus in architectura est ordo acceptationis. Negotium processus erat;

  • cliens pizzeria vocat;

  • procurator telephonum carpit;

  • ordinem accipit per telephonum;

  • complet eam parallelam in ordine acceptationis interface: rationem accipit de cliente informationes, notitia in ordine singula, inscriptionem partus. 

Interface informationes systematis hoc simile aliquid respexit.

Prima versio mense Octobre 2011:

Paulo melius mense Ianuario MMXII

Dodo Pizza Information System Delivery Pizza Restaurant

Facultates ad progressionem primi ordinis moduli sumendi limitatae sunt. Multum nobis faciendum est, cito et cum parva quadriga. Turma parva est 2 tincidunt qui fundamentum totius futuri systematis posuerunt.

Primum eorum iudicium fatum technologiae acervum statuit;

  • Backend in ASP.NET MVC, C# lingua. Tincidunt dotnetchiki erant, hic acervus illis familiaris erat et iucundus.

  • Frontend on Bootstrap and JQuery: interfaces in usorum stilis et scriptis auto-scriptis. 

  • MySQL database: sine licentia gratuita, facilis ad utendum.

  • Servo in Fenestra Servo, quia .NET tunc tantum sub Windows esse potuit (Mono non disputabimus).

Corporaliter omnia haec expressa sunt in "dedic apud hospitem". 

Ordinis Attractio Application Architecture

Tunc omnes de microservices iam locuti sunt et SOA in magnis inceptis per 5 annos adhibita, exempli gratia, WCF anno 2006 dimissa est. Sed tunc certam et probatam solutionem elegerunt.

Hic est.

Historiae Dodonis Architecture: An Early Monolith

Asp.Net MVC novacula est, quae a forma vel ex cliente petens HTML paginam reddit cum servo reddens. In clientelam, scripta CSS et JS, informationes iam ostendunt et, si opus est, petitiones AJAX per JQuery perficiunt.

Petitiones de servo finiunt in classes *Controller, ubi modus procedit et ultimam HTML paginam generat. Moderatores rogant accumsan logicae vocato *Servicias. Singula officia alicui rei congruebant ratione;

  • Exempli gratia, DepartmentStructureService nuntiavit in pizzerias, in Dicasteriis. Dicasterii coetus pizzerias per unum franchisee currunt.

  • ReceptionesService acceptata compositionem Ordinis computavit.

  • Et SmsService misit SMS appellando API officia ad SMS mittendum.

Officia processus notitia ex datorum, repositorum negotiorum logicalium. Unumquodque servitium habebat unum vel plura * Repositoria nomine proprio. Iam interrogationes continebant de processibus conditis in datorum tabulatis et in mappis. Logica negotiatio erat in schedulis, praesertim multum in iis quae renuntiationes datae sunt. ORM usus non erat, omnes sql manu scriptae nitebantur. 

iacuit etiam exemplar ditionis et classes communes adiutrices, exempli gratia, ordinis genus, quod ordinem reposuit. Ibidem, in lavacro adiutor erat ad textum proponendum secundum electam monetam convertendam.

Haec omnia tali exemplari repraesentari possunt:

Historiae Dodonis Architecture: An Early Monolith

Ordo Via

Considerate viam initialem simpliciorem ad talem ordinem creandum.

Historiae Dodonis Architecture: An Early Monolith

Initio erat situs elit. Pretia in ea habuit, et super - numerum telephonicum et inscriptionem "Si vis pizza - voca numerum et ordinem". Ad ordinem, simplex fluxus efficiendi necesse est; 

  • Cliens situm static invisit cum pretiis, productos eligit et numerum in quo situs numeratum vocat.

  • Lorem nomina productorum ordini addere volunt.

  • Oratio et nomen dat.

  • Auctor ordinem accipit.

  • Ordo interface receptos ordines monstratur.

Omnia incipit cum propono menu. In usoris usoris operans unum tantum ordinem ad tempus accipit. Propterea plaustrum captivum in sessione sua condi potest (sessionis usoris in memoria reponitur). Est objectum Cart continens notitias et elit.

Lorem nominat productum, operator clicks in + deinde ad productum, et ad petitionem mittitur servo. Informationes de facto extrahantur e datorum et informatione de facto plaustro additur.

Historiae Dodonis Architecture: An Early Monolith

illud. Hic e datorum trahere non potes, sed a fronte transferre. Sed ad claritatem, viam a datorum prorsus demonstravi. 

Deinde intrant electronicam et nomen clientis. 

Historiae Dodonis Architecture: An Early Monolith

Cum click "Create Ordine":

  • Rogatio ad OrderController.SaveOrder mittitur ().

  • Cartulam ex sessione obtinemus, producta in quantitate quae nobis opus est.

  • Carte informationes de cliente supplemus eamque ad AddOrder methodum recipiendiOrderService classis transimus, ubi id datorum servatum est. 

  • Datorum tabulas habet cum ordine, compositione ordinis, clientis, et omnes connexae sunt.

  • Ordo ostentationis interface it et trahit recentissimos ordines et eos ostendit.

Moduli novi

Ordo arrepto maximus et necessarius fuit. Negotium Etruscum facere non potes si ordinem vendendi non habes. Ideo systema functionality acquirere coepit - circiter ab MMXII ad MMXV. Hoc tempore multae variaeque rerum rationes apparuerunt, quas appellabo modules, ut contra rationem officii vel productum. 

Modulus est copia functionum quae aliquo communi negotio finis coniunguntur. Eodem tempore corpora sunt in eadem applicatione.

Modi ratio impedimentorum dici potest. Exempli gratia, relatio moduli, admin interfaces; cibum venato in culina, licentia. Haec omnia dissimilia interfaces usorum sunt, quaedam etiam diversos stylos visuales habent. Simul omnia intra unius applicationis ambitum currit processus. 

Technice, moduli ut Area designati sunt (talis idea etiam in manente asp.net core). Singulae tabulae ad frontend erant, exempla, ac classes suas moderatoris. Quam ob rem systema ab hoc mutatum est...

Historiae Dodonis Architecture: An Early Monolith

...in hoc:

Historiae Dodonis Architecture: An Early Monolith

Nonnulli moduli ex locis separatis (proiectum exsecutabile), ob functionem omnino separatam et partim ob progressionem aliquantulum separatam, magis intendunt. Hoc:

  • Site - prima versio site dodopizza.ru.

  • Export: e Dodo IS pro 1C. 

  • Personal - personalis ratio molestie. Seorsim elaboratum est et proprium aculeum et separatum consilium habet.

  • fs - consilium statics obnoxius. Postea movimus ab ea, omnes statices movendi ad Akamai CDN. 

Reliquae caudices in applicatione BackOffice erant. 

Historiae Dodonis Architecture: An Early Monolith

Nominis explicatio;

  • CONLECTARIUS - Restaurant CONLECTARIUS.

  • ShiftManager - interfaces pro "Shift Procurator" partes: statisticae operativae in pizzeria venditio, facultas productorum ponendi in indice sistendi, ordinem mutandi.

  • OfficeManager - interfaces pro muneribus "Pizzeria Procurator" et "Franchisee". Munera hic collecta sunt ad pizzeria constituendum, bonas eius promotiones, recipiendas et operandas cum operariis, relationibus.

  • PublicScreens - interfaces pro TVs et tabulis in pizzerias pendentibus. TVs menus ostentant, informationes vendo, ordinis status in traditione. 

Iacuit commune servitium, Dodo.Core communi stipes classis domain et basis communis. Interdum adhuc per transitus ad invicem ducere potuerunt. Singula loca inter se, ut dodopizza.ru vel personal.dodopizza.ru, ad officia generalia accesserunt.

Cum novi moduli prodierunt, codicem officiorum iam creatum reicere conati sumus, rationes ac tabulas in datorum maximis conditis. 

Ad meliorem scalam modulorum in systemate factis cognoscendam, hic schema ab 2012 cum progressione consiliorum est:

Historiae Dodonis Architecture: An Early Monolith

Per 2015, omnia in charta et magis in productione erant.

  • Acceptatio Ordinis crevit in scandalum separatum Centri Contacti, ubi ordo ab operatore acceptus est.

  • Tegumenta publica erant cum menus et informationes in pizzerias pendentes.

  • Culina moduli habet qui ipso facto vocem nuntium "New Pizza" agit, cum novus ordo advenit, et cautionem tabellarii imprimit. Haec processus in coquina valde simplicificat, permittit operarios ne per plures operationes simplices distrahatur.

  • Unitas partus separatae Delivery Checkout facta est, ubi ordo tabellarii qui prius trabeam ceperat dilatus est. Operandi tempus in stipendio calculi ratio habita est. 

Parallela, ab anno 2012 ad 2015, plus quam 10 tincidunt apparuerunt, 35 pizzerias aperuit, systema Romania explicavit et ad exitus aperiendos in Civitatibus Foederatis Americae paravit. Tincidunt nullae iam de omnibus operibus, sed in partes divisae sunt. propria quaeque pars systematis. 

problems

Architectura possidet (sed non solum).

Chaos in basi

Turpe est commodum unum. Constantia in eo perfici potest, et sumptu instrumentorum in databases relativis constructis. Operatio cum nota est et opportuna, praesertim si paucae sunt tabulae et parum notitiae.

Sed supra 4 annos evolutionis datorum evenit ut circiter 600 tabulas, 1500 rationes repositas habeat, quarum multae etiam logicam habuerunt. Eheu, rationes conditae non multum emolumenti afferunt cum operando cum MySQL. Basi non sunt conditi, et logicam in eis reponunt progressionem et debugging. Codex reuse etiam difficilis est.

Multae tabulae idoneae indices non habebantalicubi e contra multae indices erant, qui difficilem inserere. Oportuit mitigare circiter XX tabulas - transactionem ordinem creare potuit circiter 20-3 secundis. 

Notitia in tabulis non semper aptissima forma. Alicubi necesse fuit denormalizationem facere. Pars data regulariter recepta in columna erat in forma XML structurae, quae tempus exsecutionis augebat, interrogationes prolongavit et progressionem perplexa erat.

Eisdem tabulis productae sunt petitiones heterogeneae. Tabulae populares praesertim passae sunt, sicut tabula supra memorata. imperium seu tables pizzeria. Solebant interfaces perficiendas in culina, analytica proponere. Alius situs eos contingi (dodopizza.ru) ubi quovis tempore multae petitiones subito venire potuerunt. 

Notitia non aggregata et multi calculi in musca basi utentes. Hoc creavit rationes superfluas et onus adiectis. 

Saepe signum datorum adiit cum id facere non potuit. Alicubi non satis molis operationes erant, alicubi necesse esset unam petitionem in plures per codicem dilatare ut fidem augeret et augeret. 

Cohesio et obfuscatio in codice

Moduli, qui pro sua parte negotii esse putabantur, id honeste non fecerunt. Quidam ex eis duplicationem officiorum pro muneribus habuerunt. Exempli gratia, mercator localis qui in urbe sua operandi retis curam habet, tum "Admin" interface (ad promotiones creare) et "officium Procurator" interface (ut videre impulsum promotionum in negotio). Utique in utroque modulo eadem opera usus est quae cum bonis promotionibus laboravit.

Officia (classes intra unum magnum consilium monolithicum) se invicem vocare potuerunt ad suas notitias locupletare.

Cum exemplaribus classibus ipsae copia data; opus in codice efferebatur aliter. Alicubi erant constructores per quos agros requiri posset. Alicubi hoc factum est per publicas possessiones. Scilicet, questus et commutans notitia datorum varia erat. 

Dialectica erat vel in magistratibus, vel in classibus ministerii. 

Hae quaestiones minores videntur esse, sed progressionem et qualitatem imminutam valde retardaverunt, ducens ad instabilitatem et cimices. 

Multiplicatio magnae progressionis

Difficultates in ipso progressione ortae sunt. Parallela ratio caudices varias facere oportuit. Necessitates aptae uniuscuiusque componentis in unum codicem magis magisque difficiles sunt. Non facile omnes partes simul adsentiri et placere. Huc accedunt limitationes technologiae, praesertim quoad base et frontend. Necessarium erat jQuery ad tabulas altas gradus deserere, praesertim secundum officia clientium (website).

In nonnullis partibus systematis, database ad hoc aptius adhiberi possunt.. Exempli causa, postea usum habuimus de Redis ad CosmosDB ad ordinem fiscinae movendi. 

Partes et tincidunt implicatae in suo campo evidenter voluerunt plus autonomiam pro suis officiis, tam in terminis evolutionis quam in rollout. Merge certamina, quaestiones emissio. Si pro 5 tincidunt haec quaestio levis est, tum cum X, et multo magis cum proposito incremento, omnia graviora fierent. Ac ante ut progressionem applicationis mobilis (incepit anno MMXVII et anno MMXVIII erat' magnus ruinam). 

Diversae partes systematis gradus stabilitatis requiritursed propter validam coniunctionis rationem, hoc praebere non potuimus. Error in evolutione novi functionis in tabula admin bene evenire potuit in acceptatione ordinis in situ, quia Codex communis et reusable, datorum et notitiarum idem sunt.

Probabiliter potest haec errata et problemata vitare intra eiusmodi architecturae monolithic-modularis compagem: divisionem responsabilitatis, refactoris tam codicis quam datorum, stratas ab invicem distincte separant, qualitatem quotidie monitor. Sed electae solutiones architecturae et focus in celeri expansione functionis systematis perducunt ad problemata secundum stabilitatem.

Quam vim mentis blog nummi tabulae in popinae pone

Si incrementum retis (et onus) in eodem gressu continuavit, tunc post tempus casus talis erit ut systema non resurgat. Bene illustrat problemata quae ab 2015 facie incepimus, hic talis est fabula. 

In diario "mens potentia” contenta erat quae in vectigalibus ad annum totius ornatum retis ostendit. Widget accesserunt Dodo API publici, quod haec notitia praebet. Haec statistic is available at http://dodopizzastory.com/. The image was in every page was shown and petiverunt in timer every 20 seconds. Rogatio ivit ad api.dodopizza.ru et rogatus:

  • numerus pizzerias in retiaculis;

  • totalis reditus retis ab initio anni;

  • vectigal pro hodierno.

Postulatio statistica de vectigalibus recta ad datorum ivit et in iussus data postulare coepit, notitias in musca aggregatas et quantitatem eiciens. 

Nummi in popinae ad eandem mensam ordinis accesserunt, elenchum ordinum pro hodierno die exposuit, et novi ordines adiciuntur. Nummi registra petitiones suas singulis 5 secundis vel in pagina recreant.

Tabula vidi sic:

Historiae Dodonis Architecture: An Early Monolith

Lapsus unus, Fyodor Ovchinnikov scripsit articulum longum et popularem in suo diario. Multi homines ad diarii accesserunt et omnia diligenter legere coeperunt. Dum singuli homines, qui venerant, articulum legebant, reditus content recte laboraverunt et API singulis XX secundis postulaverunt.

API processio condita dicitur ad summam omnium ordinum ab initio anni omnes pizzerias in catena computare. Congregatio ordinum mensae fundata est, quae valde popularis est. Omnes nummi tabulae omnium popinae apertae tunc adeunt. Nummi tabulae respondere desierunt, ordines non accepti sunt. Etiam non accepti sunt ex loco, non apparuerunt in venato, procurator in interface eos videre non potuit. 

Haec sola fabula non est. Casu 2015, omne Veneris pondus in systemate critico fuit. Aliquoties in publicum API declinavimus, et semel, etiam ad locum avertendum, quia nihil adiuvabat. Etiam index officiorum cum ordine shutdown sub oneribus oneribus fuit.

Posthac certamen nostrum cum oneribus ac pro stabilizatione systematis incipit (ab autumno 2015 ad autumnum 2018). Quod cum factum est"magna ruinaΒ». Praeterea, peccata etiam interdum accidebant, quaedam valde sensibilia, sed generale instabilitatis tempus nunc praetermittendum est.

Celeri negotii incrementum

Cur non ilicet fieri? Vide mox ad chartas sequentes.

Historiae Dodonis Architecture: An Early Monolith

Etiam anno 2014-2015 foramen in Romania factum est et apertum in USA parabatur.

Reticulum celerrime creverunt, novae nationes apertae sunt, novae formatae pizzerias apparuerunt, exempli gratia, pizzeria in atrio cibum aperta est. Haec omnia significantem diligentiam requirebant ad functiones expansiones Dodo IS. Sine omnibus his muneribus, sine investigatione in coquina, pro fructibus ac damnis ratiocinandi, praebentes ordinem in cibaria atriolum, vix loquimur de "recta" architectura et "recta" accessu ad eget nunc.

Aliud impedimentum ad opportune recognitionis architecturae et plerumque ad problematum technicorum attentionem erat crisi MMXIV. Res haec difficilia sunt in opportunitatibus ad iunctiones crescendi, praesertim iuvenibus negotiis sicut Dodo Pizza.

Velox Solutiones adiuvisti

Problematum solutiones necessariae. Opportune solutiones in 2 circulos dividi possunt;

  • Ieiunium extinxerunt ignem et dant marginem parvam salutis et emant tempus mutandi.

  • Systemic ac proinde long. Reengineering plurium modulorum, divisio architecturae monolithicae in officia singula (pleraque eorum minime sunt micro, sed officia tortor, et aliquid circa eam Andrey Morevskiy's report). 

Aridus index celeritatum mutationum talis est:

Basi ascendite dominum

Nempe primum quod agitur de oneribus, est augendi facultas servientis. Hoc factum est pro domino datorum et pro servientibus interretialibus. Heu, hoc solum potest usque ad certum terminum, tunc nimis carum fit.

Cum MMXIV, nos ad Azureum movimus, etiam de hoc argumento tunc in articulo scripsimus.Quomodo Dodo Pizza Delivers Pizza Utens Microsoft caeruleam Cloud?Β». At postquam series in servo pro basi augetur, contra sumptus occurrit. 

Replicas ad base Lectio

Duae replicationes pro basi factae sunt;

ReadReplica petitiones ad referat. Legebat directoria, genus, urbem, plateam, pizzeria, producta (dominium lente mutata), et in his instrumentis ubi parva mora placet. Quarum 2 erant replicationes, earum promptitudines eo modo ac magistris praestiti sumus.

ReadReplica ad Report Requests. Hoc database minus promptitudinis habebat, sed omnes relationes ad eum pervenerunt. Graves petitiones habeant pro recalculations ingentes datas, sed principales interfaces datorum et operationalium non afficiunt. 

Caches in codice

Nullum usquam in codice (omnino). Inde additamenta, non semper necessaria, postulationes datorum oneratis. Caches prima fuerunt tam in- memoria quam in servitio cella externa, quod erat Redis. Omnia tempore infirmata sunt, unctiones in codice determinatae sunt.

Multa backend servers

Revocatio applicationis etiam opus est ut scalis ad augendis laboribus tractandis opus esset. Oportebat botrum facere ab uno servo. Nos rescheduled applicationem sessionis ex memoria ad RedisCache, quod fieri potest ut plures servientes post simplicem sarcinam cum robin rotundo componant. Ac primum idem Redis pro cacherbus adhibebatur, deinde in plures scissus est. 

Quam ob rem architectonica facta sunt magis complicata...

Historiae Dodonis Architecture: An Early Monolith

... sed quaedam contentio sublata est.

Et tunc oportuit redo onusta, quod suscepimus. De hoc in altera parte loquemur.

Source: www.habr.com