{"id":83248,"date":"2020-05-29T19:42:48","date_gmt":"2020-05-29T17:42:48","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam"},"modified":"2020-05-29T19:42:48","modified_gmt":"2020-05-29T17:42:48","slug":"dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam","title":{"rendered":"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Tere, k\u00f5igile! Meil on suurep\u00e4rased uudised, juunis alustab OTUS taas kursust <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rVZl\/\">\u201eTarkvara arhitekt\u201c<\/a><\/noindex>, seet\u00f5ttu jagame traditsiooniliselt teiega kasulikke materjale.<\/b><\/i><\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/6092ffb23e765239b4a8f27d4a0cb846.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n Kui olete sattunud kogu sellele mikroteenuste jutu peale ilma igasuguse kontekstita, siis on teil vabandatav seda veidi kummalisena pidada. Rakenduse jagamine fragmentideks, mis on omavahel seotud v\u00f5rguga, t\u00e4hendab kindlasti keerukate talitlush\u00e4irete taluvuse re\u017eiimide lisamist tekkivasse jaotatud s\u00fcsteemi. <\/p>\n<p>Kuigi selline l\u00e4henemine h\u00f5lmab mitme eraldiseisva teenuse jagamist, on l\u00f5ppkokkuv\u00f5tte eesm\u00e4rk palju rohkem kui lihtsalt nende teenuste t\u00f6\u00f6 erinevates masinates. Siin on juttu suheldes \u00fcmbritseva maailmaga, mis oma olemuselt on samuti jaotatud. Mitte tehnilises m\u00f5ttes, vaid pigem ekos\u00fcsteemi m\u00f5ttes, mis koosneb paljusid inimesi, meeskondi, programme, ja iga \u00fcks neist peab omamoodi oma t\u00f6\u00f6d tegema.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Ettev\u00f5tted, n\u00e4iteks, on nagu kogum jaotatud s\u00fcsteeme, mis koos aitavad kaasa teatud eesm\u00e4rgi saavutamisele. Me oleme ignoreerinud seda fakti aastak\u00fcmneid, p\u00fc\u00fcdes saavutada \u00fchtsust, edastades faile FTP kaudu v\u00f5i kasutades ettev\u00f5tte integratsioonit\u00f6\u00f6riistu, samal ajal keskendudes oma isiklikele eraldatud eesm\u00e4rkidele. Kuid teenuste tulekuga on k\u00f5ik muutunud. Teenused on aidanud meil vaadata \u00fcle horisondi ja n\u00e4ha maailma omavahel seotud programme, mis t\u00f6\u00f6tavad koos. Kuid eduka toimimise jaoks on vajalik teadvustada ja projekteerida kaks p\u00f5him\u00f5tteliselt erinevat maailma: v\u00e4line maailm, kus me elame teiste teenuste ekos\u00fcsteemis, ja meie isiklik, sisemine maailm, kus me valime \u00fcksi.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/93f535f6f3319d7b2829d35c0fe1c48f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Selline jaotatud maailm erineb sellest, kus me \u00fcles oleme kasvanud ja millega oleme harjunud. Tava monoliitsete arhitektuuride ehitamise p\u00f5him\u00f5tted ei pea mingit kriitikat. Seet\u00f5ttu on selliste s\u00fcsteemide \u00f5ige m\u00f5istmine midagi enamat kui lihtsalt toreda skeemi loomine valgele markeritahvlile v\u00f5i lahe t\u00f5estus kontseptsioonist. Siin on juttu sellest, et selline s\u00fcsteem t\u00f6\u00f6taks edukalt pika aja jooksul. \u00d5nneks on teenused juba \u00fcsna kaua olemas olnud, kuigi need n\u00e4evad v\u00e4lja erinevad. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Service-oriented_architecture\">SOA \u00f5ppetunnid<\/a><\/noindex> on endiselt asjakohane, isegi kui see on maitsestatud Dockeri, Kubernetesega ja veidi hipsterlike habemete poolt kulunud. <\/p>\n<p>Seega vaatame t\u00e4na, kuidas reeglid on muutunud, miks peame oma l\u00e4henemist teenustele ja andmetele, mida nad \u00fcksteisele edastavad, uuesti \u00fcle vaatama ning miks me vajame selleks t\u00e4iesti erinevat t\u00f6\u00f6riistakomplekti.<\/p>\n<h3>Kapseldamine ei ole alati teie s\u00f5ber<\/h3>\n<p>\n Mikroteenused saavad \u00fcksteisest s\u00f5ltumatult t\u00f6\u00f6tada. Just see omadus annab neile suurima v\u00e4\u00e4rtuse. See omadus v\u00f5imaldab teenustel skaleeruda ja kasvada. Mitte ainult kvadriljonite kasutajate v\u00f5i petabaitide andmete skaleerimise m\u00f5ttes (kuigi ka siin v\u00f5ivad nad aidata), vaid pigem inimestega seoses, kuna meeskonnad ja organisatsioonid kasvavad pidevalt.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/ec36218b6152c2b713f72689b4ea6916.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSiiski, s\u00f5ltumatus on kahe teraga m\u00f5\u00f5k. See t\u00e4hendab, et teenus v\u00f5ib iseenesest sujuvalt ja probleemideta t\u00f6\u00f6tada. Kuid kui teenuses kasutatakse funktsiooni, mis n\u00f5uab teise teenuse kaasamist, peame l\u00f5puks tegema muudatusi peaaegu samaaegselt m\u00f5lemas teenuses. Monoliidis on see lihtne, lihtsalt teete muudatuse ja saadate selle v\u00e4lja, aga iseseisvate teenuste s\u00fcnkroonimise korral on probleeme rohkem. Meeskondade ja v\u00e4ljalaskets\u00fcklite koordineerimine h\u00e4irib paindlikkust.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/5fc993636f29e9eb9831d05cbc0bd7f8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nStandardse l\u00e4henemise kohaselt p\u00fc\u00fctakse ebameeldivaid \u00fclekandeid lihtsalt v\u00e4ltida, eraldades funktsionaalsuse selgelt teenuste vahel. \u00dche sissep\u00e4\u00e4su teenus v\u00f5ib olla siin hea n\u00e4ide. Sellel on selgelt m\u00e4\u00e4ratletud roll, mis eristab seda teistest teenustest. See selge jaotus t\u00e4hendab, et kiiresti muutuva n\u00f5udlusega teenuste maailmas on seesama \u00fchesissep\u00e4\u00e4su teenus t\u00f5en\u00e4oliselt harva muutuv. See eksisteerib \u00e4\u00e4rmiselt piiratud kontekstis.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/095fd7a6e02ead4924abf180e3b1d26b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Probleem on selles, et reaalmaailmas ei saa \u00e4riteenused pidevalt hoida sama selget rollide eristust. N\u00e4iteks t\u00f6\u00f6tavad need \u00e4riteenused suuremal m\u00e4\u00e4ral andmetega, mis p\u00e4rinevad teistelt sarnastelt teenustelt. Kui tegelete veebikaubandusega, siis tellimuste t\u00f6\u00f6tlemine, toodete kataloog v\u00f5i kasutajainformatsioon muutuvad paljude teie teenuste n\u00f5udmiseks. Iga teenus vajab nende andmete t\u00f6\u00f6ks juurdep\u00e4\u00e4su. <\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/2a3d23850c88d574c990dfdc6015072c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Enamik \u00e4riteenuseid kasutab sama andmevoogu, mist\u00f5ttu nende t\u00f6\u00f6 on pidevalt omavahel seotud.<\/i><\/p>\n<p>Niinimetatud oleme j\u00f5udnud olulise hetkeni, millest tasub r\u00e4\u00e4kida. Kuigi teenused toimivad h\u00e4sti infrastruktuuri komponentide puhul, mis t\u00f6\u00f6tavad suuresti isoleeritult, on enamik \u00e4riteenuseid omavahel palju tihedamalt seotud.<\/p>\n<h3>Andmete dikotoomia<\/h3>\n<p>\n Teenustele orienteeritud l\u00e4henemised v\u00f5ivad juba eksisteerida, kuid neis on endiselt v\u00e4he teavet selle kohta, kuidas vahetada suuri andmemahtusid teenuste vahel.<\/p>\n<p>P\u00f5hiprobleem on selles, et andmed ja teenused on lahutamatud. \u00dchelt poolt kutsub kapseldamine meid andmeid varjama, et teenuseid saaks omavahel eristada ja nende kasvu ja edasisi muudatusi lihtsustada. Teiselt poolt peame saama vabalt jagada ja omada \u00fchiseid andmeid nagu ka teisi. R\u00e4\u00e4gime v\u00f5imalusest alustada t\u00f6\u00f6d kohe, sama vabalt nagu igas muus infotehnoloogias.<\/p>\n<p>Kuid infotehnoloogiatel on kapseldamisega v\u00e4he \u00fchist. Tegelikult on isegi vastupidi. Andmebaasid teevad k\u00f5ik endast oleneva, et anda juurdep\u00e4\u00e4s neis hoitavatele andmetele. Need tulevad koos v\u00f5imsa deklaratiivse liidese, mis v\u00f5imaldab andmeid muuta nii, nagu soovite. See funktsionaalsus on oluline eeluurimisfaasis, kuid mitte pidevalt kasvava teenuse haldamiseks.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/830465d4aa3bd2e6c02772a982f170bd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Siin tekib dilemma. Vastur\u00e4\u00e4kivus. Dikotoomia. Sest infotehnoloogiad \u2013 see on andmete pakkumine, ja teenused \u2013 andmete varjamine.<\/p>\n<p>Need two forces are fundamental. They underlie much of our work, constantly fighting for supremacy in the systems we create.<\/p>\n<p>As service systems grow and evolve, we see different manifestations of the consequences of data dichotomy. Either the service interface will grow, providing an ever-wider range of functions and will start looking like a very strange homemade database, or we will be faced with disappointment and will implement some way to extract or move large sets of data from service to service.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/da718c87570a4eb20b18f9c880ae8a1b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n In turn, creating anything that looks like a strange homemade database will lead to a whole series of problems. We won't go into the details of what is dangerous about <i>shared database<\/i>, let's just say it represents significant costly engineering and operational <noindex><a rel=\"nofollow\" href=\"http:\/\/microservices.io\/patterns\/data\/shared-database.html\">challenges<\/a><\/noindex> for a company trying to use it.<\/p>\n<p>Worse still, data volumes multiply the problems with service boundaries. The more shared data lies within a service, the more complex the interface will become and the harder it will be to merge datasets coming from various services.<\/p>\n<p>An alternative approach of extracting and moving whole datasets also has its problems. The common approach to this issue looks like simply extracting and storing a dataset entirely, and then storing it locally in each consumer service.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/63934c6876cb89e87155d4c097657617.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n The issue is that different services interpret the data they consume differently. This data is always at hand. It changes and is processed locally. Quite quickly, it ceases to have anything in common with the source data.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/616e390ad3df3317ac34ac8d861ce804.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>The more mutable the copies are, the more the data will differ over time.<\/i><\/p>\n<p>What\u2019s worse, such data is difficult to correct retrospectively (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Master_data_management\">MDM<\/a><\/noindex> can indeed come to the rescue here). In fact, some of the intractable technological problems faced by businesses arise from heterogeneous data multiplying from application to application.<\/p>\n<p>To find a solution to the problem of common data, one needs to think differently. They must become first-class objects in the architectures we build. <noindex><a rel=\"nofollow\" href=\"http:\/\/cidrdb.org\/cidr2005\/papers\/P12.pdf\">Pat Helland<\/a><\/noindex> nimetatakse neid andmeid \"v\u00e4listeks\", ja see on v\u00e4ga oluline omadus. Me vajame kapseldamist, et mitte paljastada teenuse sisemist \u00fclesehitust, kuid peame h\u00f5lbustama teenuste juurdep\u00e4\u00e4su jagatud andmetele, et nad saaksid oma t\u00f6\u00f6d \u00f5igesti teha.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/9703ffdbb528320edc62ee7a680a3258.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Probleem on selles, et \u00fckski praegustest l\u00e4henemisviisidest ei ole enam asjakohane, kuna ei teenuse liidesed, juhuslikud teated ega jagatud andmebaasid ei paku head lahendust v\u00e4liste andmete t\u00f6\u00f6tlemiseks. Teenuse liidesed ei sobi andmete vahetamiseks mingis ulatuses. Juhuslikud teated edastavad andmeid, kuid ei salvesta nende ajalugu, mist\u00f5ttu andmed aja jooksul riknevad. Jagatud andmebaasid on liiga keskendunud \u00fchele punktile, mis pidurdab edusamme. Me j\u00e4\u00e4me paratamatult n\u00f5rkade andmete ts\u00fcklisse:<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/f17ac7063a813cb76bad71ae8622912c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>N\u00f5rkade andmete ts\u00fckkel<\/i><\/p>\n<h3>Voogud: detsentraliseeritud l\u00e4henemine andmetele ja teenustele<\/h3>\n<p>\n Ideaalis peame muutma l\u00e4henemist sellele, kuidas teenused t\u00f6\u00f6tavad jagatud andmetega. Praegu seisavad k\u00f5ik l\u00e4henemisviisid silmitsi \u00fclaltoodud dikotoomiaga, kuna ei ole mingit maagilist pulbrit, millega saaksime selle lahendada. Siiski saame probleemi uuesti m\u00f5testada ja leida kompromissi.<\/p>\n<p>See kompromiss eeldab teatud m\u00e4\u00e4ral tsentraliseerimist. Saame kasutada jaotatud logide mehhanismi, kuna see tagab usaldusv\u00e4\u00e4rsed ja skaleeritavad vood. N\u00fc\u00fcd peab teenused saama liituda ja t\u00f6\u00f6tada nende jagatud voogudega, kuid soovime v\u00e4ltida keerulisi tsentraliseeritud Jumala teenuseid, mis teevad sellist t\u00f6\u00f6tlemist. Seet\u00f5ttu on parim lahendus integreerida voogude t\u00f6\u00f6tlemine igasse teenusesse-kasutajasse. Nii saavad teenused kombineerida andmekogusid erinevatest allikatest ja t\u00f6\u00f6tada nendega nii, nagu nemad soovivad.<\/p>\n<p>\u00dcks v\u00f5imalus sellise l\u00e4henemise saavutamiseks on voogude t\u00f6\u00f6tlemise platvormi kasutamine. Olemas on palju v\u00f5imalusi, kuid t\u00e4na vaatame just Kafka't, kuna selle Stateful Stream Processing kasutamine v\u00f5imaldab t\u00f5husalt lahendada esitatud probleemi.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/353c7f12af87901e721abb7ea92d8196.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Jaotatud logimise mehhanismi kasutamine v\u00f5imaldab meil minna m\u00f6\u00f6da rajatud rada ja kasutada juhuslikku teatevahetust, et t\u00f6\u00f6tada koos. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Event-driven_architecture\">\u00fcritus-suunaline arhitektuur<\/a><\/noindex>. Sellise l\u00e4henemise eelduseks on parem skaleerimine ja jaotamine kui \u201ek\u00fcsi-vasta\u201d mehhanism, kuna see annab vooluhalduse kontrolli saajale, mitte saatjale. Kuid k\u00f5ike selles elus peab eest maksma, ja siin vajate brokerit. Suurte s\u00fcsteemide puhul on see kompromiss seda v\u00e4\u00e4rt (mida ei saa \u00f6elda teie keskmiste veebirakenduste kohta).<\/p>\n<p>Kui jaotatud logimine s\u00f5ltub brokerist, mitte traditsioonilisest s\u00f5numiteedest, siis saab kasutada t\u00e4iendavaid funktsioone. Transporti saab lineaarselt skaleerida peaaegu sama h\u00e4sti kui jaotatud failis\u00fcsteemi. Andmeid v\u00f5ib logides hoida piisavalt kaua, mist\u00f5ttu saame mitte ainult s\u00f5numite_exchange, vaid ka teabe s\u00e4ilitamise. Skaleeritav salvestus ilma hirmuta, et saada muudetav \u00fcldine olek.<\/p>\n<p>Seej\u00e4rel on v\u00f5imalik kasutada stateful stream processing (olekuga voogude t\u00f6\u00f6tlemine) mehhanismi andmebaasi deklaratiivsete t\u00f6\u00f6riistade lisamiseks tarbiteenustele. See on v\u00e4ga oluline m\u00f5te. Niikaua kui andmed on jagatud voogudes, millele k\u00f5ik teenused saavad juurde p\u00e4\u00e4seda, on teenuse poolne \u00fchendamine ja t\u00f6\u00f6tlemine privaatne. Nad j\u00e4\u00e4vad rangelt piiratud konteksti sees eraldatuks.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/01c8beabb9a02e4c06dffb84f9161324.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Vabanege andmete diktoomast, jagades muutumatud olekute vood. Seej\u00e4rel lisage see funktsioon iga teenuse jaoks, kasutades stateful stream processing.<\/i><\/p>\n<p>Seega, kui teie teenus peab t\u00f6\u00f6tama tellimustega, toote kataloogiga, laoga, on tal t\u00e4ielik juurdep\u00e4\u00e4s: ainult teie otsustate, millised andmed \u00fchendada, kus neid t\u00f6\u00f6delda ja kuidas need aja jooksul muutuvad. Kuigi andmed on jagatud, on nende t\u00f6\u00f6tlemine t\u00e4ielikult detsentraliseeritud. Seda tehakse igas teenuses, maailmas, kus k\u00f5ik k\u00e4ib teie reeglite j\u00e4rgi.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/4b2635ad8ddd18f455eea654e472f85e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Jagage andmeid nii, et nende terviklikkus ei oleks rikutud. Kapselke funktsioon, mitte allikas, igas teenuses, kus seda vajatakse.<\/i><\/p>\n<p>Tavaliselt juhtub, et andmeid tuleb massiliselt liigutada. M\u00f5nikord vajab teenus valitud andmebaasi mootori kohaliku ajaloolise andmeseti. Oluline on, et vajadusel saab koopia taastada allikast, kasutades jaotatud logimise mehhanismi. Kafka \u00fchendused teevad selle \u00fclesande suurep\u00e4raselt \u00e4ra.<\/p>\n<p>K\u00e4esoleval l\u00e4henemisel on mitmeid eeliseid:<\/p>\n<ul>\n<li>Andmeid kasutatakse jagatud voogude kujul, mida saab pikka aega logides hoida, ning jagatud andmetega t\u00f6\u00f6tamine on iga konteksti sees, mis v\u00f5imaldab teenustel t\u00f6\u00f6tada kiiresti ja t\u00f5husalt. Sedasi saab tasakaalustada andmete dikotoomiat.<\/li>\n<li>Erinevatest teenustest p\u00e4rinevaid andmeid on lihtne \u00fchendada kogudeks. Nii lihtsustub \u00fchiste andmetega t\u00f6\u00f6tamine ja kaob vajadus s\u00e4ilitada kohalikke andmesetteid andmebaasis.<\/li>\n<li>Stateful Stream Processing ainult vahem\u00e4lestab andmeid, samas kui t\u00f5e allikaks j\u00e4\u00e4vad jagatud logid, seega ei ole probleem andmete kahjustamisest ajas nii terav.<\/li>\n<li>Oma olemuselt juhivad teenuseid andmed, seega hoolimata andmemahtude pidevast kasvust saavad teenused siiski kiiresti reageerida \u00e4ri\u00fcritustele.<\/li>\n<li>Skaalautuvuse probleemid lasuvad brokera peal, mitte teenustel. Nii v\u00e4heneb teenuste kirjutamise keerukus, kuna ei ole vaja muretseda skaala \u00fcle.<\/li>\n<li>Uute teenuste lisamine ei n\u00f5ua vanade muutmist, seet\u00f5ttu muutub uute teenuste \u00fchendamine lihtsamaks.<\/li>\n<\/ul>\n<p>\nNagu n\u00e4ete, on see rohkem kui lihtsalt REST. Oleme saanud t\u00f6\u00f6riistade komplekti, mis v\u00f5imaldab t\u00f6\u00f6tada jagatud andmetega detsentraliseeritult.<\/p>\n<p>K\u00e4esolevas artiklis ei k\u00e4sitletud kaugeltki k\u00f5iki aspekte. Peame endiselt v\u00e4lja selgitama, kuidas tasakaalustada p\u00e4ringu-vastuse paradigma ja s\u00fcndmustest l\u00e4htuva paradigma vahel. Kuid sellega tegeleme j\u00e4rgmine kord. On teemasid, millega tuleb l\u00e4hemalt tutvuda, n\u00e4iteks, miks on Stateful Stream Processing nii hea. Sellest r\u00e4\u00e4gime kolmandas artiklis. Lisaks on olemas veel teisi v\u00f5imsaid konstruktsioone, millest saame kasu, kui me neid \u00e4ra kasutame, n\u00e4iteks, <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/KAFKA\/KIP-98+-+Exactly+Once+Delivery+and+Transactional+Messaging\">T\u00e4pselt \u00dcks Kord T\u00f6\u00f6tlemine<\/a><\/noindex>Selle abil muutuvad m\u00e4ngureeglid jagatud \u00e4ri s\u00fcsteemides, kuna see konstruktsioon tagab tehingu garantiid <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/X\/Open_XA\">XA<\/a><\/noindex> skaleeritavas vormis. Sellest r\u00e4\u00e4gitakse neljas artiklis. Ja l\u00f5puks peame me kiirelt \u00fcle vaatama nende p\u00f5him\u00f5tete rakendamise\/detailid.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine\" src=\"\/wp-content\/uploads\/2020\/05\/f66eadcc538cf3da74ccb120e1de2ae7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKuid praegu lihtsalt pidage meeles j\u00e4rgmist: andmete dikotoomia on see j\u00f5ud, millega me silmitsi seisame \u00e4riteenuste loomisel. Ja me peame seda meeles pidama. Fookus on selles, et k\u00f5ik pea peale keerata ja hakata n\u00e4gema \u00fchiseid andmeid esmaklassiliste objektidena. Stateful Stream Processing pakub selleks ainulaadset kompromissi. See v\u00e4ldib tsentraliseeritud \"jumala komponente\", mis pidurdavad edusamme. Veelgi enam, see tagab andmevoogude torustike operatiivsuse, skaleeritavuse ja veakindluse ning lisab need igasse teenusesse. Seet\u00f5ttu saame keskenduda \u00fchiselle teadlikkusele, millega iga teenus saab liituda ja mille andmete kallal t\u00f6\u00f6tada. Nii muutuvad teenused skaleeritavamaks, v\u00f5rdselt asendatavateks ja iseseisvateks. Seet\u00f5ttu n\u00e4evad nad head v\u00e4lja mitte ainult m\u00e4rgistusplaatidel ja h\u00fcpoteeside testimisel, vaid t\u00f6\u00f6tavad ja arenevad ka aastak\u00fcmneid. <\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rVZl\/\">Tutvu kursusega l\u00e4hemalt.<br \/>\n<\/a><\/noindex><\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/504310\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0423 \u043d\u0430\u0441 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438, \u0432 \u0438\u044e\u043d\u0435 OTUS \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u0443\u0440\u0441 \u00ab\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u041f\u041e\u00bb, \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0435\u043c \u043c\u044b \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441\u043e \u0432\u0441\u0435\u0439 \u044d\u0442\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439 \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0442\u043e \u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0439. \u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0441\u0435\u0442\u044c\u044e, \u043d\u0435\u043f\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":83249,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-83248","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.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!\" \/>\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\/et\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\u0414\u0438\u0445\u043e\u0442\u043e\u043c\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445: \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam\" \/>\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-05-29T17:42:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-29T17:42:48+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\udd47Andmete dikotoomia: andmete ja teenuste suhete \u00fcmberm\u00f5testamine | ProHoster","description":"Tere k\u00f5igile!","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\u0414\u0438\u0445\u043e\u0442\u043e\u043c\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445: \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam","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-05-29T17:42:48+00:00","article:modified_time":"2020-05-29T17:42:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"83248","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 15:22:24","updated":"2022-09-30 09:53:41","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/83248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=83248"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/83248\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/83249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=83248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=83248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=83248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}