Pagpili sa usa ka estilo sa arkitektura (bahin 1)

Hello, habr. Ang enrollment para sa bag-ong course stream bukas na karon sa OTUS "Arkitekto sa Software". Sa bisperas sa pagsugod sa kurso, gusto nakong ipaambit kanimo ang akong orihinal nga artikulo.

Pasiuna

Ang pagpili sa istilo sa arkitektura usa sa sukaranan nga teknikal nga mga desisyon kung magtukod usa ka sistema sa kasayuran. Sa kini nga serye sa mga artikulo, akong gisugyot nga analisahon ang labing inila nga istilo sa arkitektura alang sa mga aplikasyon sa pagtukod ug tubagon ang pangutana kung kanus-a kung unsang istilo sa arkitektura ang labing gusto. Sa proseso sa presentasyon, sulayan nako ang pagdrowing og usa ka lohikal nga kadena nga nagpatin-aw sa pagpalambo sa mga estilo sa arkitektura gikan sa monoliths ngadto sa microservices.

Usa ka gamay nga kasaysayan

Kung sulayan nimo nga pangutan-on ang mga nag-develop: "Ngano nga kinahanglan namon ang mga microservice?", Makakuha ka lainlaing mga tubag. Makadungog ka nga ang mga microservice nagpauswag sa scalability, naghimo sa code nga mas sayon ​​​​sabton, nagpalambo sa fault tolerance, ug usahay makadungog ka nga gitugotan ka nila sa "paglimpyo sa imong code." Atong tan-awon ang kasaysayan aron masabtan ang katuyoan luyo sa pagtungha sa mga microservice.

Sa laktud, ang mga microservice sa atong kasamtangan nga pagsabot mitumaw sama sa mosunod: sa 2011, si James Lewis, nga nag-analisar sa trabaho sa nagkalain-laing mga kompanya, nagdani sa pagtagad sa pagtunga sa usa ka bag-ong "micro-app" nga sumbanan, nga nag-optimize sa SOA sa mga termino sa pagpadali sa pagpadala sa serbisyo. Sa ulahi, sa 2012, sa usa ka summit sa arkitektura, ang sumbanan giilisan og ngalan nga microservice. Busa, ang inisyal nga tumong sa pagpaila sa mga microservice mao ang pagpalambo sa bantogan panahon sa merkado.

Ang mga microservice naa sa hype wave kaniadtong 2015. Sumala sa pipila ka mga pagtuon, walay bisan usa ka komperensya nga kompleto nga walay report sa hilisgutan sa microservices. Dugang pa, ang pipila nga mga komperensya gipahinungod lamang sa mga microservice. Karong panahona, daghang mga proyekto ang nagsugod sa paggamit niini nga istilo sa arkitektura, ug kung ang proyekto adunay daghang tonelada nga legacy code, nan ang paglalin sa mga microservice lagmit nga aktibo nga gihimo.

Bisan pa sa tanan sa ibabaw, ang usa ka medyo gamay nga gidaghanon sa mga developer mahimo gihapon nga ipasabut ang konsepto sa "microservice". Apan atong hisgutan kini sa ulahi...

Monolith

Ang estilo sa arkitektura nga nagtandi sa mga microservice mao ang monolith (o all-in-one). Tingali dili makatarunganon nga isulti kung unsa ang usa ka monolith, mao nga akong ilista dayon ang mga disbentaha sa kini nga istilo sa arkitektura, nga nagpasiugda sa dugang nga pag-uswag sa mga istilo sa arkitektura: gidak-on, koneksyon, pag-deploy, scalability, kasaligan ug rigidity. Sa ubos gisugyot ko nga tan-awon ang matag usa sa mga kakulangan nga gilain.

gidak-on

Ang monolith dako kaayo. Ug kini kasagaran nakigsulti sa usa ka dako kaayo nga database. Ang aplikasyon mahimong dako kaayo aron masabtan sa usa ka developer. Kadto lamang nga migugol ug daghang panahon sa pagtrabaho niini nga kodigo ang makatrabaho pag-ayo sa monolith, samtang ang mga magsusugod mogugol ug daghang panahon sa pagsulay sa pag-ila sa monolith ug walay garantiya nga ilang masabtan kini. Kasagaran, kung nagtrabaho uban ang usa ka monolith, kanunay adunay pipila nga "kondisyon" nga senior nga nahibal-an ang monolith labi pa o dili kaayo maayo ug gibunalan ang mga kamot sa ubang mga bag-ong developer sa sulod sa usa ka tuig ug tunga. Siyempre, ang ingon nga usa ka kondisyon nga senior usa ka punto sa kapakyasan, ug ang iyang pagbiya mahimong mosangpot sa kamatayon sa monolith.

Pagkadugtong

Ang monolith usa ka "dako nga bola sa lapok", mga pagbag-o diin mahimong mosangpot sa dili matag-an nga mga sangputanan. Pinaagi sa paghimo sa mga pagbag-o sa usa ka lugar, mahimo nimong madaot ang monolith sa lain (ang parehas nga "gikamot nimo ang imong dunggan, *@ nahulog"). Kini tungod sa kamatuoran nga ang mga sangkap sa monolith adunay komplikado kaayo ug, labing hinungdanon, dili klaro nga mga relasyon.

Pagpadala

Ang pagbutang sa usa ka monolith, tungod sa komplikado nga mga relasyon tali sa mga sangkap niini, usa ka taas nga proseso nga adunay kaugalingon nga ritwal. Ang ingon nga ritwal sa kasagaran dili hingpit nga estandard ug gipasa "sa binaba."

Scalability

Ang mga module sa monolith mahimong adunay magkasumpaki nga mga kinahanglanon sa kapanguhaan, nga nanginahanglan usa ka pagkompromiso nga himuon bahin sa hardware. Hunahunaa nga ikaw adunay usa ka monolith nga naglangkob sa mga serbisyo A ug B. Ang Serbisyo A nangayo sa gidak-on sa hard drive, ug ang serbisyo B nangayo sa RAM. Sa kini nga kaso, bisan ang makina diin gi-install ang monolith kinahanglan nga suportahan ang mga kinahanglanon sa parehas nga mga serbisyo, o kinahanglan nimo nga mano-mano, artipisyal nga pag-disable ang usa sa mga serbisyo.

Laing pananglitan (mas klasiko): ang serbisyo A mas popular kay sa serbisyo B, mao nga gusto nimo nga adunay 100 ka serbisyo A, ug 10 ka serbisyo B. Pag-usab, duha ka mga kapilian: mahimo kitang mag-deploy og 100 ka bug-os nga monolith, o sa pipila unya Ang mga serbisyo B kinahanglan nga ma-disable sa mano-mano.

Kasaligan

Tungod kay ang tanan nga mga serbisyo nahimutang sa tingub, kung ang monolith mahulog, nan ang tanan nga mga serbisyo mahulog sa usa ka higayon. Sa tinuud, kini dili kaayo daotan, labing menos wala’y partial nga mga kapakyasan sa usa ka gipang-apod-apod nga sistema, apan sa laing bahin, tungod sa usa ka bug sa pag-andar nga gigamit sa 0.001% sa mga tiggamit, mahimo nimong mawala ang tanan nga mga tiggamit. sa imong sistema.

Inertia

Tungod sa kadako sa monolith, lisud ang pagbalhin sa mga bag-ong teknolohiya. Ingon usa ka sangputanan, ang pagpabilin sa parehas nga tigulang usa ka lahi nga buluhaton. Ang teknolohiya stack nga gipili sa pagsugod sa usa ka proyekto mahimong usa ka bloke nga makababag sa pag-uswag sa produkto.

konklusyon

Sa sunod hisgotan nato kung giunsa pagsulay sa mga tawo pagsulbad kini nga mga problema pinaagi sa pagbalhin sa mga sangkap ug SOA.

Pagpili sa usa ka estilo sa arkitektura (bahin 1)

Basaha ang dugang pa:

Source: www.habr.com

Idugang sa usa ka comment