{"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\/nl\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam","title":{"rendered":"Data dichotomie: heroverweging van de relatie tot data en diensten","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Hallo allemaal! We hebben geweldig nieuws, in juni lanceert OTUS opnieuw een cursus <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rVZl\/\">Software Architect<\/a><\/noindex>, daarom delen we traditioneel nuttige materialen met jullie.<\/b><\/i><\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/6092ffb23e765239b4a8f27d4a0cb846.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n Als je met het hele verhaal van microservices zonder enige context te maken hebt gehad, is het begrijpelijk dat je het een beetje vreemd vindt. Het opsplitsen van een applicatie in fragmenten die met elkaar verbonden zijn via een netwerk betekent ongetwijfeld dat er complexe failover-modi aan het resulterende gedistribueerde systeem moeten worden toegevoegd. <\/p>\n<p>Hoewel deze aanpak inhoudt dat we opsplitsen in meerdere onafhankelijke diensten, is het einddoel veel groter dan alleen dat deze diensten op verschillende machines functioneren. Het gaat hier om interactie met de omringende wereld, die van nature ook gedistribueerd is. Niet in technische zin, maar eerder in termen van een ecosysteem dat bestaat uit vele mensen, teams, programma's, en elk van deze delen moet op zijn manier zijn werk doen.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Bedrijven zijn bijvoorbeeld een verzameling gedistribueerde systemen die gezamenlijk bijdragen aan het bereiken van een bepaald doel. We hebben dit feit decennialang genegeerd, in de hoop op integratie, door bestanden via FTP over te dragen of gebruik te maken van bedrijfsintegratietools, terwijl we ons concentreerden op onze persoonlijke, afgescheiden doelen. Maar met de komst van diensten is alles veranderd. Diensten hebben ons geholpen om verder te kijken en de wereld van onderling afhankelijke programma's die samen werken te zien. Om echter succesvol te zijn, is het belangrijk om twee fundamenteel verschillende werelden te begrijpen en te ontwerpen: de externe wereld, waarin we leven in een ecosysteem van andere diensten, en onze persoonlijke, interne wereld, waar we alleen heersen.<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/93f535f6f3319d7b2829d35c0fe1c48f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Zo'n gedistribueerde wereld verschilt van de wereld waarin we zijn opgegroeid en waaraan we gewend zijn. De principes van traditionele monolithische architectuur zijn niet houdbaar. Daarom is het juiste begrip van dergelijke systemen meer dan het cre\u00ebren van een mooi schema op een whiteboard of een cool bewijs van concept. Het gaat erom dat zo'n systeem met succes lange tijd functioneert. Gelukkig bestaan diensten al een behoorlijke tijd, hoewel ze er verschillend uitzien. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Service-oriented_architecture\">Lessen van SOA<\/a><\/noindex> blijven relevant, zelfs gekruid met Docker, Kubernetes en lichtelijk gehavend door hipsterbaarden. <\/p>\n<p>Dus, vandaag bekijken we hoe de regels zijn veranderd, waarom we onze benadering van diensten en de gegevens die ze onderling uitwisselen opnieuw moeten overdenken, en waarom we hiervoor een totaal andere set tools nodig hebben.<\/p>\n<h3>Encapsulatie zal niet altijd je vriend zijn.<\/h3>\n<p>\n Microservices kunnen onafhankelijk van elkaar functioneren. Dit kenmerk is hun grootste waarde. Ditzelfde kenmerk stelt diensten in staat om te schalen en te groeien. Niet zozeer in de zin van schalen naar quadriljoenen gebruikers of petabytes aan data (hoewel ze daar ook kunnen helpen), maar in de zin van schalen vanuit een mensenperspectief, aangezien teams en organisaties voortdurend groeien.<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/ec36218b6152c2b713f72689b4ea6916.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEchter, onafhankelijkheid is een tweesnijdend zwaard. Dit betekent dat een dienst op zichzelf eenvoudig en soepel kan draaien. Maar als binnen die dienst een functie wordt ge\u00efmplementeerd die een andere dienst vereist, moeten we uiteindelijk beide diensten bijna gelijktijdig aanpassen. In een monolith is dit eenvoudig, je maakt gewoon de wijziging en brengt deze uit, terwijl synchronisatie tussen onafhankelijke diensten meer problemen met zich meebrengt. Co\u00f6rdinatie tussen teams en releasecycli ondermijnt de flexibiliteit.<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/5fc993636f29e9eb9831d05cbc0bd7f8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn een standaardbenadering worden hinderlijke cross-cutting wijzigingen vaak simpelweg vermeden door functionaliteit duidelijk te splitsen tussen diensten. Een enkele toegangspoort tot het systeem kan hier een goed voorbeeld van zijn. Dit heeft een duidelijk afgebakende rol die het onderscheidt van andere diensten. Dergelijke duidelijke scheiding betekent dat in de snel veranderende wereld van de eisen van omliggende diensten, de toegangspoort tot het systeem waarschijnlijk niet zal veranderen. Het functioneert binnen een strikt afgebakende context.<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/095fd7a6e02ead4924abf180e3b1d26b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Het probleem is dat bedrijfsservices in de echte wereld niet altijd een zuivere scheiding van rollen kunnen behouden. Zo werken deze diensten in grote mate met gegevens die afkomstig zijn van andere soortgelijke diensten. Als je je bezighoudt met online retail, wordt het verwerken van bestellingen, productcatalogi of informatie over gebruikers een vereiste voor veel van je diensten. Elke dienst heeft toegang tot deze gegevens nodig om te kunnen functioneren. <\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/2a3d23850c88d574c990dfdc6015072c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>De meeste bedrijfsservices maken gebruik van dezelfde gegevensstroom, waardoor hun werking onvermijdelijk met elkaar verweven is.<\/i><\/p>\n<p>Zo zijn we aan een belangrijk punt gekomen dat het waard is om over te praten. Terwijl diensten goed functioneren voor infrastructuurcomponenten die grotendeels afzonderlijk werken, zijn de meeste bedrijfsservices veel dichter met elkaar verweven.<\/p>\n<h3>Dichotomie van gegevens<\/h3>\n<p>\n Dienstenori\u00ebntatiestrategie\u00ebn bestaan misschien al, maar er is nog steeds weinig informatie beschikbaar over hoe grote hoeveelheden gegevens tussen diensten kunnen worden uitgewisseld.<\/p>\n<p>Het kernprobleem is dat gegevens en diensten onlosmakelijk met elkaar verbonden zijn. Enerzijds roept encapsulatie ons op om gegevens te verbergen, zodat diensten van elkaar kunnen worden gescheiden en hun groei en verdere veranderingen kunnen vergemakkelijken. Aan de andere kant moeten we de mogelijkheid hebben om vrij te delen en te beschikken over gemeenschappelijke gegevens, net als over andere. Het gaat erom dat we onmiddellijk kunnen beginnen te werken, net zo vrij als in elk ander informatiesysteem.<\/p>\n<p>Echter, informatiesystemen hebben weinig te maken met encapsulatie. Sterker nog, ze zijn eerder het tegenovergestelde. Databases doen er alles aan om toegang te geven tot de gegevens die ze bevatten. Ze worden geleverd met een krachtige declaratieve interface die je in staat stelt om de gegevens aan te passen zoals je wilt. Deze functionaliteit is belangrijk in de onderzoeksfase, maar niet voor het beheren van de toenemende complexiteit van een voortdurend evoluerende dienst.<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/830465d4aa3bd2e6c02772a982f170bd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n En hier ontstaat de dilemma. Een contradictie. Een dichotomie. Informatiesystemen zijn gericht op het leveren van gegevens, terwijl diensten gericht zijn op het verbergen ervan.<\/p>\n<p>Deze twee krachten zijn fundamenteel. Ze vormen de basis van het grootste deel van ons werk, voortdurend strijdbaar voor superioriteit in de systemen die we cre\u00ebren.<\/p>\n<p>Naarmate de servicetechnologie\u00ebn groeien en evolueren, zien we verschillende manifestaties van de gevolgen van de datadichotomie. Ofwel groeit de interface van de service en biedt een steeds breder scala aan functies, waardoor het op een bijzondere zelfgemaakte database begint te lijken, of we worden geconfronteerd met teleurstelling en realiseren we een manier om massaal hele datasets van de ene service naar de andere te extraheren of te verplaatsen.<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/da718c87570a4eb20b18f9c880ae8a1b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n De creatie van iets dat eruitziet als een bijzondere zelfgemaakte database leidt tot een aantal problemen. We gaan niet in detail treden over wat er gevaarlijk aan is, <i>shared database<\/i>, laten we gewoon zeggen dat het aanzienlijke kostbare technische en operationele <noindex><a rel=\"nofollow\" href=\"http:\/\/microservices.io\/patterns\/data\/shared-database.html\">uitdagingen<\/a><\/noindex> voor een bedrijf dat het probeert te gebruiken.<\/p>\n<p>Erger nog, de hoeveelheden data vermenigvuldigen de problemen met de grenzen van diensten. Hoe meer gedeelde gegevens er binnen een service liggen, hoe moeilijker de interface wordt en hoe moeilijker het wordt om datasets samen te voegen die uit verschillende services komen.<\/p>\n<p>Een alternatieve benadering van het extraheren en verplaatsen van hele datasets heeft ook zijn problemen. Een gebruikelijke benadering van deze kwestie lijkt op een eenvoudige extractie en opslag van een dataset in zijn geheel, om het vervolgens lokaal op te slaan in elke consumentservice.<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/63934c6876cb89e87155d4c097657617.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Het probleem is dat verschillende services gegevens op verschillende manieren interpreteren. Deze gegevens zijn altijd beschikbaar. Ze worden lokaal gewijzigd en verwerkt. Vrij snel hebben ze niets meer gemeen met de gegevens in de bron.<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/616e390ad3df3317ac34ac8d861ce804.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Naarmate de kopie\u00ebn mutabeler worden, zullen de gegevens meer uit elkaar gaan lopen in de loop van de tijd.<\/i><\/p>\n<p>Wat nog erger is, zulke gegevens zijn moeilijk te corrigeren in retrospectief (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Master_data_management\">MDM<\/a><\/noindex> dat kan hier echt bij helpen). In feite ontstaan enkele van de moeilijk op te lossen technische problemen waarmee bedrijven worden geconfronteerd door heterogene data die zich van applicatie naar applicatie vermenigvuldigen.<\/p>\n<p>Om een oplossing voor dit probleem met gedeelde data te vinden, moet anders worden nagedacht. Ze moeten objecten van de eerste klas worden in de architecturen die we bouwen. <noindex><a rel=\"nofollow\" href=\"http:\/\/cidrdb.org\/cidr2005\/papers\/P12.pdf\">Pat Helland<\/a><\/noindex> noemt dergelijke gegevens 'extern', en dit is een zeer belangrijk kenmerk. We hebben encapsulatie nodig om de interne werking van de service niet prijs te geven, maar we moeten de services toegang geven tot gedeelde gegevens zodat ze hun werk goed kunnen uitvoeren.<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/9703ffdbb528320edc62ee7a680a3258.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Het probleem is dat geen van de benaderingen vandaag de dag nog actueel is, omdat geen van de service-interface, berichtenuitwisseling of Shared Database een goede oplossing biedt voor het werken met externe gegevens. Service-interfaces zijn niet goed geschikt voor gegevensuitwisseling op enige schaal. Berichtenuitwisselingen verplaatsen gegevens, maar houden hun geschiedenis niet bij, waardoor gegevens in de loop van de tijd beschadigd raken. Shared Databases zijn te gefocust op \u00e9\u00e9n punt, wat de voortgang remt. We komen onvermijdelijk vast te zitten in een cyclus van gegevensongeschiktheid:<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/f17ac7063a813cb76bad71ae8622912c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Cyclus van gegevensongeschiktheid<\/i><\/p>\n<h3>Stromen: een gedecentraliseerde benadering van gegevens en services<\/h3>\n<p>\n Ideaal gezien moeten we de manier waarop services met gedeelde gegevens werken heroverwegen. Momenteel wordt elke benadering geconfronteerd met de hierboven genoemde dichotomie, aangezien er geen enkele magische oplossing is die overvloedig kan worden gestrooid om het te laten verdwijnen. Echter, we kunnen het probleem heroverwegen en tot een compromis komen.<\/p>\n<p>Dit compromis houdt een zekere mate van centralisatie in. We kunnen gebruik maken van een mechanisme voor gedistribueerde logboeken, omdat dit betrouwbare en schaalbare stromen biedt. Nu is het nodig dat de services zich kunnen aansluiten en met deze gedeelde stromen kunnen werken, maar we willen complexe gecentraliseerde God Services, die deze verwerking uitvoeren, vermijden. Daarom is de beste optie om streamverwerking in elke serviceconsument te integreren. Zo kunnen services datasets uit verschillende bronnen combineren en ermee werken zoals ze dat nodig hebben.<\/p>\n<p>Een van de manieren om een dergelijke benadering te bereiken, is door gebruik te maken van een streamingplatform. Er zijn veel opties, maar vandaag bekijken we specifiek Kafka, omdat het gebruik van zijn Stateful Stream Processing ons in staat stelt om het gepresenteerde probleem effectief op te lossen.<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/353c7f12af87901e721abb7ea92d8196.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Het gebruik van een mechanisme voor gedistribueerde logging stelt ons in staat om het pad te volgen, en berichtenuitwisseling te gebruiken om te werken met <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Event-driven_architecture\">evenementgerichte architectuur<\/a><\/noindex>. Men denkt dat deze benadering betere schaalbaarheid en splitsing biedt dan het 'verzoek-antwoorden'-mechanisme, omdat het de controle over de stroom aan de ontvanger geeft, niet aan de verzender. Maar voor alles in het leven moet je betalen, en hiervoor heb je een broker nodig. Maar voor grote systemen is deze compromis het waard (wat je niet over je gemiddelde webapplicaties kunt zeggen).<\/p>\n<p>Als de gedistribueerde logging door een broker wordt afgehandeld en niet door een traditioneel berichtensysteem, kunt u gebruikmaken van aanvullende functies. Vervoer kan bijna net zo goed lineair worden geschaald als een gedistribueerd bestandssysteem. Gegevens kunnen lang genoeg in logs worden opgeslagen, zodat we niet alleen berichtenuitwisseling krijgen, maar ook een opslag van informatie. Schaalbare opslag zonder angst voor een wijzigbare gezamenlijke toestand.<\/p>\n<p>U kunt dan een stateful stream processing-mechanisme gebruiken om declaratieve database-tools toe te voegen aan consumentservices. Dit is een zeer belangrijk idee. Terwijl gegevens in gedeelde streams worden opgeslagen, waartoe alle services toegang hebben, zijn de samenvoegingen en verwerkingen die de service uitvoert priv\u00e9. Ze zijn ge\u00efsoleerd binnen een strikt afgebakende context.<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/01c8beabb9a02e4c06dffb84f9161324.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Verbreek de gegevensdichotomie door de immutabele toestandstroom op te splitsen. Voeg deze functie vervolgens toe aan elke service met behulp van Stateful Stream Processing.<\/i><\/p>\n<p>Zo heeft uw service, als deze met bestellingen, productcatalogi en voorraad moet werken, volledige toegang: alleen u beslist welke gegevens moeten worden samengevoegd, waar ze moeten worden verwerkt en hoe ze in de loop van de tijd moeten veranderen. Hoewel de gegevens gemeenschappelijk zijn, is het werken ermee volledig gedecentraliseerd. Het gebeurt binnen elke service, in een wereld waar alles volgens uw regels gaat.<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/4b2635ad8ddd18f455eea654e472f85e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Deel gegevens op een manier die hun integriteit niet schaadt. Encapuleer de functie, niet de bron, in elke service die deze nodig heeft.<\/i><\/p>\n<p>Het komt voor dat gegevens in bulk moeten worden verplaatst. Soms heeft de service een lokale historische set gegevens nodig in de gekozen database-engine. Het punt is dat je kunt garanderen dat een kopie, indien nodig, kan worden hersteld vanuit de bron door gebruik te maken van de distributielogmechanisme. De connectors in Kafka presteren uitstekend voor deze taak.<\/p>\n<p>Dus de benadering die we vandaag hebben besproken, heeft verschillende voordelen:<\/p>\n<ul>\n<li>Gegevens worden gebruikt als algemene stromen, die lange tijd in logs kunnen worden opgeslagen. Het mechanisme voor het werken met gedeelde gegevens is in elke afzonderlijke context ingebouwd, waardoor services eenvoudig en snel kunnen functioneren. Op deze manier kan de dichotomie van gegevens in evenwicht worden gehouden.<\/li>\n<li>Gegevens die uit verschillende services komen, kunnen eenvoudig worden samengevoegd in sets. Hierdoor wordt de interactie met gedeelde gegevens vereenvoudigd en is er geen behoefte aan het onderhouden van lokale datasets in de database.<\/li>\n<li>Stateful Stream Processing cached alleen de gegevens, terwijl de bron van waarheid de gedeelde logs blijven. Daarom is het probleem van gegevensbeschadiging in de loop der tijd minder urgent.<\/li>\n<li>In wezen worden services door gegevens beheerd, dat wil zeggen dat, ondanks de constante groei van de gegevenshoeveelheid, services nog steeds snel kunnen reageren op zakelijke gebeurtenissen.<\/li>\n<li>Schaalbaarheidsproblemen komen terecht bij de broker en niet bij de services. Hierdoor wordt de complexiteit van het schrijven van services aanzienlijk verminderd, omdat er geen behoefte is om over schaalbaarheid na te denken.<\/li>\n<li>Het toevoegen van nieuwe services vereist geen wijzigingen aan oude services, waardoor het aansluiten van nieuwe services gemakkelijker wordt.<\/li>\n<\/ul>\n<p>\nZoals je ziet, is dit meer dan alleen REST. We hebben een set tools gekregen die het mogelijk maakt om decentralisatie met gedeelde gegevens te werken.<\/p>\n<p>In het artikel van vandaag zijn lang niet alle aspecten behandeld. We moeten nog steeds bepalen hoe we moeten balanceren tussen het \"request-response\" paradigma en het evenementen-gebaseerde paradigma. Maar dat zullen we de volgende keer bespreken. Er zijn onderwerpen die we beter moeten leren kennen, zoals waarom Stateful Stream Processing zo goed is. Daarover zullen we in het derde artikel praten. En er zijn ook andere krachtige constructies die we kunnen gebruiken als we daarvoor kiezen, zoals <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/KAFKA\/KIP-98+-+Exactly+Once+Delivery+and+Transactional+Messaging\">Exactly Once Processing<\/a><\/noindex>. Hiermee veranderen we de spelregels voor gedistribueerde bedrijfsystemen, aangezien deze constructie transactiegaranties biedt voor <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/X\/Open_XA\">XA<\/a><\/noindex> in een schaalbare vorm. Dit wordt besproken in het vierde artikel. En tenslotte moeten we de details van de implementatie van deze principes doornemen.<\/p>\n<p><img decoding=\"async\" alt=\"Data dichotomie: heroverweging van de relatie tot data en diensten\" src=\"\/wp-content\/uploads\/2020\/05\/f66eadcc538cf3da74ccb120e1de2ae7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMaar onthoud voorlopig het volgende: de datadichotomie is de kracht waarmee we geconfronteerd worden bij het cre\u00ebren van bedrijfsservices. En we moeten hier rekening mee houden. De focus ligt op het op zijn kop zetten van alles en het beschouwen van de algemene gegevens als objecten van de eerste klas. Stateful Stream Processing biedt hiervoor een unieke compromis. Het vermijdt gecentraliseerde \u201cGod Components\u201d die de voortgang belemmeren. Bovendien biedt het snelheid, schaalbaarheid en foutbestendigheid van data streaming pipelines en voegt het deze toe aan elke service. Hierdoor kunnen we ons concentreren op de algemene stroom van gedachten waarmee elke service kan aansluiten en werken met zijn gegevens. Dit maakt de services meer schaalbaar, uitwisselbaar en autonoom. Daarom zullen ze niet alleen goed presteren op whiteboards en bij het testen van hypothesen, maar ook werken en zich decennia lang ontwikkelen. <\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rVZl\/\">Meer informatie over de cursus.<br \/>\n<\/a><\/noindex><\/p>\n<p>Bron: <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.3 - 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\/nl\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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\udd47Data Dichotomie: het heroverwegen van de relatie tot gegevens en services | ProHoster","description":"Hallo allemaal!","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/83248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=83248"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/83248\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/83249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=83248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=83248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=83248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}