Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo

Kumusta tanan! Naa tay nindot nga balita, OTUS maglansad na usab sa kurso sa Hunyo "Arkitekto sa Software", nga may kalabotan niini nga naandan namong gipaambit kanimo ang mapuslanong materyal.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo

Kung nakit-an nimo kining tibuuk nga butang sa microservice nga wala’y bisan unsang konteksto, mapasaylo ka sa paghunahuna nga kini usa ka gamay nga katingad-an. Ang pagbahin sa usa ka aplikasyon ngadto sa mga tipik nga konektado sa usa ka network kinahanglan nga magpasabot sa pagdugang sa komplikadong fault tolerance modes ngadto sa resulta nga gipang-apod-apod nga sistema.

Bisan kung kini nga pamaagi naglakip sa pagbungkag niini sa daghang mga independente nga serbisyo, ang katapusan nga katuyoan labi pa sa pagpadagan sa mga serbisyo sa lainlaing mga makina. Naghisgot kami dinhi bahin sa pakig-uban sa gawas nga kalibutan, nga giapod-apod usab sa esensya niini. Dili sa teknikal nga diwa, apan sa kahulugan sa usa ka ekosistema nga gilangkuban sa daghang mga tawo, mga grupo, mga programa, ug ang matag usa niini nga mga bahin kinahanglan nga buhaton ang trabaho niini.

Ang mga kompanya, pananglitan, usa ka koleksyon sa mga gipang-apod-apod nga sistema nga kolektibo nga nakatampo sa pagkab-ot sa pipila nga katuyoan. Gibalewala namo kini nga kamatuoran sulod sa mga dekada, naningkamot nga makab-ot ang panaghiusa pinaagi sa mga file sa FTPing o paggamit sa mga himan sa paghiusa sa negosyo samtang nagpunting sa among kaugalingong mga tumong. Apan sa pag-abot sa mga serbisyo, nausab ang tanan. Ang mga serbisyo nakatabang kanamo sa pagtan-aw sa unahan sa kapunawpunawan ug sa pagtan-aw sa usa ka kalibutan sa nagsalig nga mga programa nga nagtinabangay. Bisan pa, aron malampuson nga magtrabaho, gikinahanglan ang pag-ila ug pagdesinyo sa duha ka sukaranan nga magkalainlain nga mga kalibutan: ang gawas nga kalibutan, diin kita nagpuyo sa usa ka ekosistema sa daghang uban pang mga serbisyo, ug ang atong personal, internal nga kalibutan, diin kita nag-inusara.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo

Kining naapod-apod nga kalibotan lahi sa atong gidako ug naandan. Ang mga prinsipyo sa pagtukod sa tradisyonal nga monolithic nga arkitektura wala mobarug sa pagsaway. Mao nga ang paghimo niini nga mga sistema nga husto labaw pa sa paghimo sa usa ka cool nga whiteboard diagram o usa ka cool nga pruweba sa konsepto. Ang punto mao ang pagsiguro nga ang ingon nga sistema naglihok nga malampuson sa taas nga yugto sa panahon. Maayo na lang, ang mga serbisyo dugay na nga naglungtad, bisan kung lahi ang hitsura niini. Mga Leksyon sa SOA may kalabutan gihapon, bisan pa nga nasinati sa Docker, Kubernetes ug gamay nga mga balbas sa hipster.

Mao nga karon atong tan-awon kung giunsa ang pagbag-o sa mga lagda, ngano nga kinahanglan naton hunahunaon pag-usab ang paagi sa pagduol sa mga serbisyo ug ang mga datos nga ilang gipasa sa usag usa, ug kung ngano nga kinahanglan naton ang hingpit nga lainlaing mga himan aron mahimo kini.

Ang encapsulation dili kanunay imong higala

Ang mga microservice mahimong molihok nga independente sa usag usa. Kini nga kabtangan ang naghatag kanila sa labing dako nga kantidad. Kini nga parehas nga kabtangan nagtugot sa mga serbisyo nga modako ug motubo. Dili kaayo sa kahulugan sa pag-scale sa quadrillions sa mga tiggamit o mga petabytes sa datos (bisan kung kini makatabang usab didto), apan sa kahulugan sa pag-scale sa mga termino sa mga tawo samtang ang mga koponan ug organisasyon padayon nga nagtubo.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo

Bisan pa, ang independensya usa ka duha ka sulab nga espada. Sa ato pa, ang serbisyo mismo mahimong dali ug natural. Apan kung ang usa ka function gipatuman sa sulod sa usa ka serbisyo nga nanginahanglan paggamit sa lain nga serbisyo, nan kinahanglan namon nga maghimo mga pagbag-o sa parehas nga mga serbisyo hapit dungan. Sa usa ka monolith kini dali nga buhaton, maghimo ka lang usa ka pagbag-o ug ipadala kini aron buhian, apan sa kaso sa pag-synchronize sa mga independente nga serbisyo adunay daghang mga problema. Ang koordinasyon tali sa mga team ug mga siklo sa pagpagawas makaguba sa kaabtik.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo

Isip bahin sa sumbanan nga pamaagi, gisulayan lang nila nga likayan ang makalagot nga mga pagbag-o sa katapusan, nga tin-aw nga nagbahin sa pagpaandar tali sa mga serbisyo. Ang single sign-on nga serbisyo mahimong maayong ehemplo dinhi. Kini adunay tin-aw nga gihubit nga tahas nga nagpalahi niini gikan sa ubang mga serbisyo. Kining tin-aw nga panagbulag nagpasabot nga sa usa ka kalibutan sa paspas nga pagbag-o sa mga panginahanglan sa mga serbisyo sa palibot niini, ang single sign-on nga serbisyo dili tingali mausab. Kini anaa sulod sa limitado nga konteksto.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo

Ang problema mao nga sa tinuud nga kalibutan, ang mga serbisyo sa negosyo dili makapadayon sa parehas nga putli nga pagbulag sa mga tahas sa tanan nga oras. Pananglitan, ang parehas nga mga serbisyo sa negosyo nagtrabaho sa usa ka mas dako nga gidak-on sa mga datos nga gikan sa ubang parehas nga mga serbisyo. Kung nalambigit ka sa online retail, unya ang pagproseso sa dagan sa order, katalogo sa produkto o impormasyon sa user mahimong kinahanglanon alang sa kadaghanan sa imong mga serbisyo. Ang matag usa sa mga serbisyo magkinahanglan og access sa kini nga datos aron makalihok.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo
Kadaghanan sa mga serbisyo sa negosyo nag-ambit sa parehas nga stream sa datos, mao nga ang ilang trabaho kanunay nga nalambigit.

Sa ingon moabut kami sa usa ka hinungdanon nga punto nga angay hisgutan. Samtang ang mga serbisyo nagtrabaho pag-ayo alang sa mga sangkap sa imprastraktura nga naglihok sa kadaghanan nga nag-inusara, kadaghanan sa mga serbisyo sa negosyo natapos nga labi nga nagkadugtong.

Dichotomy sa datos

Mahimong naglungtad na ang mga pamaagi nga nakapunting sa serbisyo, apan kulang pa sila og panabut kung giunsa ang pagpaambit sa daghang mga datos tali sa mga serbisyo.

Ang nag-unang problema mao nga ang data ug mga serbisyo dili mabulag. Sa usa ka bahin, ang encapsulation nag-awhag kanato sa pagtago sa datos aron ang mga serbisyo mahimulag sa usag usa ug mapadali ang ilang pagtubo ug dugang nga mga kausaban. Sa laing bahin, kinahanglan natong gawasnon nga mabahin ug mabuntog ang gipaambit nga datos, sama sa ubang datos. Ang punto mao nga makasugod dayon sa pagtrabaho, nga gawasnon sama sa bisan unsang ubang sistema sa impormasyon.

Bisan pa, ang mga sistema sa kasayuran adunay gamay nga kalabotan sa encapsulation. Sa pagkatinuod, sukwahi gayod kini. Gihimo sa mga database ang tanan nga ilang mahimo aron mahatagan ang access sa datos nga ilang gitipigan. Sila adunay usa ka gamhanan nga deklaratibo nga interface nga nagtugot kanimo sa pag-usab sa datos sumala sa imong gikinahanglan. Ang ingon nga pagpaandar hinungdanon sa pasiuna nga yugto sa panukiduki, apan dili alang sa pagdumala sa nagkadako nga pagkakomplikado sa usa ka kanunay nga nag-uswag nga serbisyo.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo

Ug dinhi mitungha ang usa ka problema. Pagsumpaki. Dichotomy. Human sa tanan, ang mga sistema sa impormasyon mahitungod sa paghatag og datos, ug ang mga serbisyo mahitungod sa pagtago.

Kining duha ka pwersa maoy sukaranan. Gipaluyohan nila ang kadaghanan sa among trabaho, kanunay nga nakig-away alang sa kahusayan sa mga sistema nga among gitukod.

Samtang ang mga sistema sa serbisyo motubo ug molambo, atong makita ang mga sangputanan sa data dichotomy sa daghang mga paagi. Mahimong motubo ang interface sa serbisyo, nga maghatag usa ka kanunay nga pagtaas sa lainlain nga gamit ug magsugod nga tan-awon sama sa usa ka nindot kaayo nga database sa homegrown, o mapakyas kami ug magpatuman usa ka paagi aron makuha o mabalhin ang tibuuk nga mga set sa datos gikan sa serbisyo ngadto sa serbisyo.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo

Sa baylo, ang paghimo og usa ka butang nga morag usa ka nindot nga homegrown database mosangpot sa daghang mga problema. Dili nato hisgotan ang mga detalye kon nganong delikado kini gipaambit nga database, ingnon ta nga kini nagrepresentar sa mahinungdanong mahal nga engineering ug operational mga kalisdanan alang sa kompanya nga naningkamot sa paggamit niini.

Ang mas grabe pa kay ang mga gidaghanon sa datos nagpadako sa mga problema sa utlanan sa serbisyo. Ang labi nga gipaambit nga datos anaa sa sulod sa usa ka serbisyo, mas komplikado ang interface ug mas lisud ang paghiusa sa mga set sa datos nga gikan sa lainlaing mga serbisyo.

Ang alternatibong pamaagi sa pagkuha ug pagbalhin sa tibuok data set aduna usab mga problema niini. Ang usa ka kasagarang pamaagi sa kini nga pangutana sama ra sa pagkuha ug pagtipig sa tibuuk nga dataset, ug dayon pagtipig niini sa lokal sa matag serbisyo nga gigamit.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo

Ang problema mao nga lainlain nga mga serbisyo ang naghubad sa datos nga ilang gigamit nga lahi. Kini nga datos anaa kanunay. Gibag-o kini ug giproseso sa lokal. Dali ra sila mihunong nga adunay bisan unsa nga parehas sa datos sa gigikanan.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo
Ang labi nga mabag-o nga mga kopya, labi nga magkalainlain ang datos sa paglabay sa panahon.

Ang mas grabe pa, ang ingon nga mga datos lisud nga matul-id sa pagbalik (MDM Dinhi kini mahimo nga makaluwas). Sa tinuud, ang pipila sa dili masulbad nga mga problema sa teknolohiya nga giatubang sa mga negosyo naggikan sa magkalainlain nga datos nga nagdaghan gikan sa aplikasyon hangtod sa aplikasyon.

Aron makapangita usa ka solusyon sa kini nga problema, kinahanglan naton nga hunahunaon ang lahi bahin sa gipaambit nga datos. Kinahanglan sila mahimong una nga klase nga mga butang sa mga arkitektura nga among gitukod. Pat Helland nagtawag sa ingon nga datos nga "gawas", ug kini usa ka hinungdanon nga bahin. Nagkinahanglan kami og encapsulation aron dili namo ibutyag ang sulod nga mga buhat sa usa ka serbisyo, apan kinahanglan namo nga himoong sayon ​​alang sa mga serbisyo ang pag-access sa gipaambit nga datos aron mahimo nila ang ilang mga trabaho sa hustong paagi.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo

Ang problema mao nga wala’y kalabotan ang pamaagi karon, tungod kay wala ang mga interface sa serbisyo, o ang pagmemensahe, o ang Shared Database nga nagtanyag usa ka maayong solusyon alang sa pagtrabaho sa gawas nga datos. Ang mga interface sa serbisyo dili kaayo angay alang sa pagbayloay sa datos sa bisan unsang sukod. Ang pagmemensahe nagpalihok sa datos apan wala magtipig sa kasaysayan niini, mao nga ang datos mahimong madaot sa paglabay sa panahon. Ang gipaambit nga mga Database nagpunting pag-ayo sa usa ka punto, nga nagpugong sa pag-uswag. Dili kalikayan nga maipit kami sa usa ka siklo sa pagkapakyas sa datos:

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo
Siklo sa pagkapakyas sa datos

Mga sapa: usa ka desentralisadong pamaagi sa datos ug serbisyo

Sa tinuud, kinahanglan naton usbon ang paagi sa pagtrabaho sa mga serbisyo sa gipaambit nga datos. Niini nga punto, ang bisan asa nga pamaagi nag-atubang sa gihisgutan nga dichotomy, tungod kay walay magic nga abog nga mahimong isablig niini aron mawala kini. Bisan pa, mahimo naton hunahunaon pag-usab ang problema ug makab-ot ang usa ka kompromiso.

Kini nga kompromiso naglakip sa usa ka piho nga ang-ang sa sentralisasyon. Mahimo natong gamiton ang giapod-apod nga mekanismo sa log tungod kay naghatag kini og kasaligan, masukod nga mga sapa. Gusto na namo karon nga ang mga serbisyo makaapil ug makalihok niining gipaambit nga mga thread, apan gusto namong likayan ang komplikadong sentralisadong mga Serbisyo sa Dios nga naghimo niini nga pagproseso. Busa, ang labing kaayo nga kapilian mao ang paghimo sa pagproseso sa sapa sa matag serbisyo sa konsumedor. Niining paagiha, ang mga serbisyo makahimo sa paghiusa sa mga set sa datos gikan sa lain-laing mga tinubdan ug magtrabaho uban kanila sa paagi nga ilang gikinahanglan.

Usa ka paagi aron makab-ot kini nga pamaagi mao ang paggamit sa usa ka streaming platform. Adunay daghang mga kapilian, apan karon atong tan-awon ang Kafka, tungod kay ang paggamit sa Stateful Stream Processing nagtugot kanato nga epektibong masulbad ang gipresentar nga problema.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo

Ang paggamit sa usa ka giapod-apod nga mekanismo sa pag-log nagtugot kanamo sa pagsunod sa maayo nga pagtunob nga agianan ug paggamit sa pagmemensahe aron magamit arkitektura nga gipatuyok sa panghitabo. Kini nga pamaagi gikonsiderar nga makahatag ug mas maayo nga scaling ug partitioning kay sa request-response mechanism tungod kay kini naghatag ug kontrol sa dagan ngadto sa receiver kay sa nagpadala. Bisan pa, alang sa tanan niini nga kinabuhi kinahanglan nimo nga bayran, ug dinhi kinahanglan nimo ang usa ka broker. Apan alang sa dagkong mga sistema, ang trade-off takus niini (nga mahimong dili ang kaso sa imong kasagaran nga aplikasyon sa web).

Kung ang usa ka broker ang responsable sa giapod-apod nga pag-log kaysa usa ka tradisyonal nga sistema sa pagmemensahe, mahimo nimong pahimuslan ang dugang nga mga bahin. Ang transportasyon mahimo nga sukod nga linear nga hapit ingon usab usa ka giapod-apod nga sistema sa file. Ang mga datos mahimong tipigan sa mga troso sa dugay nga panahon, mao nga dili lamang ang pagbayloay sa mensahe, kondili ang pagtipig usab sa impormasyon. Scalable storage nga walay kahadlok sa mutable shared state.

Mahimo nimong gamiton ang stateful nga pagproseso sa sapa aron idugang ang mga gamit sa deklaratibo nga database sa pagkonsumo sa mga serbisyo. Kini usa ka hinungdanon kaayo nga ideya. Samtang ang datos gitipigan sa gipaambit nga mga sapa nga ma-access sa tanan nga mga serbisyo, pribado ang pagtipon ug pagproseso nga gihimo sa serbisyo. Nakita nila ang ilang kaugalingon nga nahimulag sulod sa limitado nga konteksto.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo
Pagwagtang sa dichotomy sa datos pinaagi sa pagbulag sa dili mausab nga stream sa estado. Dayon idugang kini nga gamit sa matag serbisyo gamit ang Stateful Stream Processing.

Busa, kung ang imong serbisyo kinahanglan nga magtrabaho uban ang mga order, usa ka katalogo sa produkto, usa ka bodega, kini adunay bug-os nga pag-access: ikaw ra ang magdesisyon kung unsang datos ang ikombinar, kung diin kini iproseso ug kung giunsa kini kinahanglan nga magbag-o sa paglabay sa panahon. Bisan pa sa kamatuoran nga ang datos gipaambit, ang pagtrabaho uban niini hingpit nga desentralisado. Gihimo kini sulod sa matag serbisyo, sa usa ka kalibutan diin ang tanan moadto sumala sa imong mga lagda.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo
Ipaambit ang datos nga dili ikompromiso ang integridad niini. I-encapsulate ang function, dili ang gigikanan, sa matag serbisyo nga nanginahanglan niini.

Nahitabo nga ang datos kinahanglan nga ibalhin sa kadaghanan. Usahay ang usa ka serbisyo nanginahanglan usa ka lokal nga datos sa kasaysayan sa gipili nga makina sa database. Ang lansis mao nga mahimo nimong garantiya nga, kung gikinahanglan, ang kopya mahimong ibalik gikan sa gigikanan pinaagi sa pag-access sa giapod-apod nga mekanismo sa pag-log. Ang mga konektor sa Kafka maayo kaayo nga trabaho niini.

Busa, ang pamaagi nga gihisgutan karon adunay daghang mga bentaha:

  • Ang datos gigamit sa porma sa komon nga mga sapa, nga mahimong tipigan sa mga troso sa dugay nga panahon, ug ang mekanismo sa pagtrabaho sa komon nga datos kay hardwired sa matag indibidwal nga konteksto, nga nagtugot sa mga serbisyo sa pagtrabaho nga dali ug dali. Niining paagiha, mahimong balanse ang dichotomy sa datos.
  • Ang mga datos nga gikan sa lainlaing mga serbisyo dali nga mahiusa sa mga set. Gipasimple niini ang interaksyon sa gipaambit nga datos ug giwagtang ang panginahanglan sa pagpadayon sa mga lokal nga dataset sa database.
  • Ang Stateful Stream Processing nagtago lamang sa mga datos, ug ang tinubdan sa kamatuoran nagpabilin nga kinatibuk-ang mga troso, mao nga ang problema sa korapsyon sa datos sa paglabay sa panahon dili kaayo grabe.
  • Sa ilang kinauyokan, ang mga serbisyo gipatuyok sa datos, nga nagpasabot nga bisan pa sa nagkadaghang gidaghanon sa datos, ang mga serbisyo makatubag gihapon dayon sa mga panghitabo sa negosyo.
  • Ang mga isyu sa scalability nahulog sa broker, dili sa mga serbisyo. Makapamenos kini pag-ayo sa pagkakomplikado sa mga serbisyo sa pagsulat, tungod kay dili na kinahanglan nga maghunahuna bahin sa scalability.
  • Ang pagdugang og bag-ong mga serbisyo wala magkinahanglan og pagbag-o sa mga daan, mao nga ang pagkonektar sa bag-ong mga serbisyo nahimong mas sayon.

Sama sa imong nakita, kini labaw pa sa PAGPAHULAG. Nakadawat kami usa ka hugpong sa mga himan nga nagtugot kanimo sa pagtrabaho sa gipaambit nga datos sa usa ka desentralisado nga paagi.

Dili tanang aspeto ang nahisgotan sa artikulo karong adlawa. Kinahanglan pa naton mahibal-an kung giunsa ang pagbalanse tali sa paradigm nga tubag sa hangyo ug paradigm nga gipadagan sa panghitabo. Apan ato kining atubangon sa sunod higayon. Adunay mga hilisgutan nga kinahanglan nimo nga mahibal-an pag-ayo, pananglitan, kung ngano nga ang Stateful Stream Processing maayo kaayo. Atong hisgotan kini sa ikatulong artikulo. Ug adunay uban pang gamhanan nga mga konstruksyon nga mahimo natong pahimuslan kung atong gamiton kini, pananglitan, Eksakto sa Pagproseso. Kini usa ka tig-ilis sa dula alang sa gipang-apod-apod nga mga sistema sa negosyo tungod kay naghatag kini mga garantiya sa transaksyon XA sa usa ka scalable nga porma. Kini pagahisgotan sa ikaupat nga artikulo. Sa katapusan, kinahanglan natong susihon ang mga detalye sa pagpatuman niini nga mga prinsipyo.

Ang data dichotomy: paghunahuna pag-usab sa relasyon tali sa datos ug mga serbisyo

Apan sa pagkakaron, hinumdomi lang kini: ang data dichotomy usa ka puwersa nga atong giatubang sa pagtukod og mga serbisyo sa negosyo. Ug kinahanglan natong hinumdoman kini. Ang lansis mao ang pagpabalik sa tanan sa ulo niini ug magsugod sa pagtratar sa gipaambit nga datos isip mga butang nga una nga klase. Ang Stateful Stream Processing naghatag usa ka talagsaon nga pagkompromiso alang niini. Gilikayan niini ang sentralisadong "Mga sangkap sa Diyos" nga nagpugong sa pag-uswag. Dugang pa, gisiguro niini ang agility, scalability ug resiliency sa data streaming pipelines ug idugang kini sa matag serbisyo. Busa, maka-focus kita sa kinatibuk-ang agos sa panimuot diin ang bisan unsang serbisyo mahimong magkonektar ug magtrabaho uban sa datos niini. Kini naghimo sa mga serbisyo nga mas scalable, mabaylo ug awtonomiya. Mao nga dili lang sila maayo tan-awon sa mga whiteboard ug mga pagsulay sa hypothesis, apan molihok usab sila ug molambo sulod sa mga dekada.

Pagkat-on og dugang mahitungod sa kurso.

Source: www.habr.com

Idugang sa usa ka comment