{"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\/it\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam","title":{"rendered":"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Ciao a tutti! Abbiamo ottime notizie, a giugno OTUS riporta il corso <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rVZl\/\">\u00abArchitetto Software\u00bb<\/a><\/noindex>, per cui tradizionalmente condividiamo con voi materiale utile.<\/b><\/i><\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/6092ffb23e765239b4a8f27d4a0cb846.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n Se ti sei trovato di fronte a tutta questa storia dei microservizi senza alcun contesto, \u00e8 comprensibile considerarla un po' strana. Suddividere un'applicazione in frammenti connessi tramite rete implica necessariamente l'aggiunta di modalit\u00e0 complesse di resilienza ai guasti nel sistema distribuito risultante. <\/p>\n<p>Nonostante questo approccio preveda la suddivisione in molteplici servizi indipendenti, l'obiettivo finale \u00e8 molto pi\u00f9 grande della semplice operativit\u00e0 di questi servizi su macchine diverse. Qui si parla di interazione con l'ambiente circostante, che per sua natura \u00e8 anch'esso distribuito. Non in un senso tecnico, ma piuttosto in termini di ecosistema, composto da molte persone, team, programmi, e ognuna di queste parti deve in qualche modo svolgere il proprio lavoro.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Le aziende, ad esempio, rappresentano un insieme di sistemi distribuiti che insieme contribuiscono al raggiungimento di un determinato obiettivo. Abbiamo ignorato questo fatto per decenni, cercando di ottenere un'unificazione, trasferendo file tramite FTP o utilizzando strumenti di integrazione aziendale, concentrandoci sulle nostre singole ambizioni isolate. Ma con l'arrivo dei servizi, tutto \u00e8 cambiato. I servizi ci hanno aiutato a guardare oltre l'orizzonte e a vedere un mondo di programmi interdipendenti che lavorano insieme. Tuttavia, per lavorare con successo, \u00e8 necessario riconoscere e progettare due mondi fondamentalmente diversi: il mondo esterno, in cui viviamo in un ecosistema di molti altri servizi, e il nostro mondo personale, interno, dove regniamo da soli.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/93f535f6f3319d7b2829d35c0fe1c48f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Questo mondo distribuito \u00e8 diverso da quello in cui siamo cresciuti e a cui siamo abituati. I principi di costruzione dell'architettura monolitica tradizionale non reggono a nessuna critica. Pertanto, una corretta comprensione di tali sistemi \u00e8 qualcosa di pi\u00f9 che creare un bel diagramma su una lavagna bianca o una fantastica prova di concetto. Si tratta di garantire che un tale sistema funzioni con successo nel lungo periodo. Fortunatamente, i servizi esistono da abbastanza tempo, anche se si presentano in forme diverse. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Service-oriented_architecture\">Lezioni di SOA<\/a><\/noindex> sono ancora rilevanti, anche se conditi da Docker, Kubernetes e leggermente trasandati da barbe hipster. <\/p>\n<p>Quindi, oggi daremo un'occhiata a come sono cambiate le regole, perch\u00e9 dobbiamo ripensare il nostro approccio ai servizi e ai dati che si scambiano e perch\u00e9 avremo bisogno di un set di strumenti completamente diverso.<\/p>\n<h3>L'incapsulamento non sar\u00e0 sempre un tuo amico<\/h3>\n<p>\n I microservizi possono funzionare in modo indipendente l'uno dall'altro. Questa caratteristica \u00e8 ci\u00f2 che conferisce loro il maggior valore. Questa stessa caratteristica consente ai servizi di scalare e crescere. Non tanto in termini di scalabilit\u00e0 fino a quadrilioni di utenti o petabyte di dati (anche se possono aiutare in questo), quanto in termini di scalabilit\u00e0 dal punto di vista umano, poich\u00e9 team e organizzazioni crescono continuamente.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/ec36218b6152c2b713f72689b4ea6916.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTuttavia, l'indipendenza \u00e8 una lama a doppio taglio. Il che significa che un servizio pu\u00f2 funzionare facilmente e senza stress. Ma se all'interno di un servizio viene implementata una funzione che richiede l'utilizzo di un altro servizio, alla fine dobbiamo apportare modifiche a entrambi i servizi quasi simultaneamente. In un monolite, \u00e8 facile farlo, basta apportare la modifica e inviarla in produzione, ma nel caso della sincronizzazione di servizi indipendenti ci saranno pi\u00f9 problemi. Il coordinamento tra team e cicli di rilascio distrugge la flessibilit\u00e0.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/5fc993636f29e9eb9831d05cbc0bd7f8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNel contesto dell'approccio standard, si cerca semplicemente di evitare cambiamenti problematici, suddividendo chiaramente le funzionalit\u00e0 tra i servizi. Un servizio di ingresso unico nel sistema pu\u00f2 essere un buon esempio qui. Ha un ruolo ben definito che lo differenzia dagli altri servizi. Tale chiara suddivisione significa che, in un mondo di requisiti in rapida evoluzione per i servizi circostanti, il servizio di ingresso unico nel sistema difficilmente cambier\u00e0. Esiste all'interno di un contesto rigidamente limitato.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/095fd7a6e02ead4924abf180e3b1d26b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Il problema \u00e8 che nel mondo reale i servizi aziendali non possono mantenere una separazione netta dei ruoli. Ad esempio, gli stessi servizi aziendali spesso lavorano con dati provenienti da altri servizi simili. Se ti occupi di vendita al dettaglio online, l'elaborazione del flusso degli ordini, del catalogo dei prodotti o delle informazioni sugli utenti diventa una necessit\u00e0 per molti dei tuoi servizi. Ogni servizio avr\u00e0 bisogno di accesso a questi dati per funzionare. <\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/2a3d23850c88d574c990dfdc6015072c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>La maggior parte dei servizi aziendali utilizza lo stesso flusso di dati, quindi il loro funzionamento \u00e8 inestricabilmente intrecciato.<\/i><\/p>\n<p>Cos\u00ec siamo giunti a un punto importante di cui vale la pena parlare. Mentre i servizi funzionano bene per componenti dell'infrastruttura che operano in gran parte in modo isolato, la maggior parte dei servizi aziendali risulta essere molto pi\u00f9 interconnessa.<\/p>\n<h3>Dichotomia dei dati<\/h3>\n<p>\n Forse esistono gi\u00e0 approcci orientati ai servizi, ma c'\u00e8 ancora poca informazione su come scambiare grandi volumi di dati tra i servizi.<\/p>\n<p>Il problema principale \u00e8 che dati e servizi sono inseparabili. Da un lato, l'incapsulamento ci invita a nascondere i dati, in modo che i servizi possano essere separati l'uno dall'altro e facilitare la loro crescita e le future modifiche. D'altra parte, abbiamo bisogno di poter condividere e gestire liberamente i dati comuni, come qualsiasi altro dato. Si tratta di avere la possibilit\u00e0 di iniziare a lavorare immediatamente, altrettanto liberamente che in qualsiasi altro sistema informativo.<\/p>\n<p>Tuttavia, i sistemi informativi hanno poco a che fare con l'incapsulamento. In realt\u00e0, \u00e8 quasi l'opposto. I database fanno tutto il possibile per consentire l'accesso ai dati in essi conservati. Sono dotati di un potente interfaccia dichiarativa che ti permette di modificare i dati come desideri. Questa funzionalit\u00e0 \u00e8 importante nella fase di ricerca preliminare, ma non per la gestione della crescente complessit\u00e0 di un servizio in continua evoluzione.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/830465d4aa3bd2e6c02772a982f170bd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n E qui sorge il dilemma. Il paradosso. La dichotomia. Infatti, i sistemi informativi riguardano la fornitura di dati, mentre i servizi riguardano la loro occultazione.<\/p>\n<p>Queste due forze sono fondamentali. Esse costituiscono la base della maggior parte del nostro lavoro, combattendo costantemente per il predominio nei sistemi che creiamo.<\/p>\n<p>Con la crescita e l'evoluzione dei sistemi di servizi, vediamo diverse manifestazioni delle conseguenze della diade dei dati. O l'interfaccia del servizio cresce, offrendo un insieme di funzioni sempre pi\u00f9 ampio e inizia a sembrare un database artigianale molto strano, oppure ci imbattiamo in una delusione e implementiamo qualche modo per estrarre o trasferire massivamente interi dataset da un servizio all'altro.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/da718c87570a4eb20b18f9c880ae8a1b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n A sua volta, la creazione di qualcosa che appare come un database artigianale porter\u00e0 a una serie di problemi. Non scenderemo nei dettagli di quanto sia pericoloso <i>shared database<\/i>, semplicemente diremo che rappresenta significative e costose difficolt\u00e0 ingegneristiche e operative <noindex><a rel=\"nofollow\" href=\"http:\/\/microservices.io\/patterns\/data\/shared-database.html\">per l'azienda che cerca di utilizzarlo.<\/a><\/noindex> Peggio, i volumi di dati amplificano i problemi ai confini dei servizi. Pi\u00f9 dati condivisi ci sono all'interno del servizio, pi\u00f9 complessa diventa l'interfaccia e pi\u00f9 difficile sar\u00e0 integrare i set di dati provenienti da diversi servizi.<\/p>\n<p>Un approccio alternativo con estrazione e trasferimento di interi set di dati ha anch'esso i suoi problemi. L'approccio comune a questo problema appare come una semplice estrazione e archiviazione di un set di dati nella sua interezza, e poi l'archiviazione locale in ogni servizio utilizzatore.<\/p>\n<p>Il problema \u00e8 che diversi servizi interpretano in modo diverso i dati che consumano. Questi dati sono sempre a portata di mano. Vengono modificati e trattati in locale. Abbastanza rapidamente smettono di avere qualsiasi cosa in comune con i dati alla fonte.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/63934c6876cb89e87155d4c097657617.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Pi\u00f9 le copie sono mutabili, pi\u00f9 i dati si discosteranno nel tempo.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/616e390ad3df3317ac34ac8d861ce804.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Peggio ancora, tali dati sono difficili da correggere in retrospettiva (<\/i><\/p>\n<p>MDM<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Master_data_management\">qui pu\u00f2 davvero venirci in aiuto). In effetti, alcuni dei problemi tecnologici irrisolvibili che le aziende affrontano derivano dai dati eterogenei che si moltiplicano da un'applicazione all'altra.<\/a><\/noindex> Per trovare una soluzione a questo problema riguardo ai dati condivisi, \u00e8 necessario pensare diversamente. Devono diventare oggetti di prima classe nelle architetture che costruiamo.<\/p>\n<p>Pat Helland <noindex><a rel=\"nofollow\" href=\"http:\/\/cidrdb.org\/cidr2005\/papers\/P12.pdf\">Pat Helland<\/a><\/noindex> chiamano questi dati \"esterni\", e questa \u00e8 una caratteristica molto importante. Abbiamo bisogno di incapsulamento per non rivelare la struttura interna del servizio, ma dobbiamo facilitare l'accesso dei servizi ai dati condivisi, affinch\u00e9 possano svolgere correttamente il loro lavoro.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/9703ffdbb528320edc62ee7a680a3258.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Il problema \u00e8 che nessuno degli approcci attuali \u00e8 pi\u00f9 rilevante, poich\u00e9 n\u00e9 le interfacce di servizio, n\u00e9 lo scambio di messaggi, n\u00e9 il Shared Database offrono una buona soluzione per lavorare con i dati esterni. Le interfacce di servizio non sono adatte per lo scambio di dati su alcuna scala. Lo scambio di messaggi sposta i dati, ma non ne conserva la storia, quindi col passare del tempo i dati vengono danneggiati. I Shared Database si concentrano troppo su un singolo punto, bloccando cos\u00ec lo sviluppo del progresso. Rimanere bloccati in un ciclo di inefficacia dei dati \u00e8 inevitabile:<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/f17ac7063a813cb76bad71ae8622912c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Ciclo di inefficacia dei dati<\/i><\/p>\n<h3>Flussi: un approccio decentralizzato ai dati e ai servizi<\/h3>\n<p>\n Idealmente, dobbiamo cambiare l'approccio su come i servizi lavorano con i dati condivisi. Attualmente, qualsiasi approccio si scontra con la dicotomia sopra menzionata, poich\u00e9 non esiste una polvere magica che possa essere sparsa generosamente per farla scomparire. Tuttavia, possiamo ripensare al problema e giungere a un compromesso.<\/p>\n<p>Questo compromesso implica un certo grado di centralizzazione. Possiamo sfruttare il meccanismo dei log distribuiti, poich\u00e9 esso fornisce flussi affidabili e scalabili. Ora \u00e8 necessario che i servizi possano connettersi e lavorare con questi flussi condivisi, tuttavia vogliamo evitare complessi \"God Service\" centralizzati che svolgono tale elaborazione. Quindi, la soluzione migliore \u00e8 incorporare l'elaborazione dei flussi in ogni servizio consumatore. In questo modo, i servizi potranno unire set di dati provenienti da diverse fonti e lavorare con essi come necessario.<\/p>\n<p>Uno dei modi per raggiungere un approccio simile \u00e8 utilizzare una piattaforma di streaming. Ci sono molte opzioni, ma oggi ci concentreremo su Kafka, poich\u00e9 l'uso della sua Stateful Stream Processing consente di affrontare in modo efficace il problema presentato.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/353c7f12af87901e721abb7ea92d8196.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n L'uso del meccanismo di logging distribuito ci permette di seguire il sentiero gi\u00e0 tracciato e di utilizzare lo scambio di messaggi per lavorare con <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Event-driven_architecture\">architettura orientata agli eventi<\/a><\/noindex>. Si ritiene che questo approccio consenta una migliore scalabilit\u00e0 e separazione rispetto al meccanismo \"richiesta-risposta\", poich\u00e9 restituisce il controllo del flusso al destinatario e non al mittente. Tuttavia, per ogni cosa in questa vita si deve pagare, e qui avrai bisogno di un broker. Ma per i grandi sistemi questo compromesso ne vale la pena (cosa che non si pu\u00f2 dire delle tue applicazioni web medie).<\/p>\n<p>Se la registrazione distribuita \u00e8 gestita da un broker e non da un tradizionale sistema di messaggistica, puoi sfruttare funzionalit\u00e0 aggiuntive. Il trasporto pu\u00f2 essere scalato linearmente quasi altrettanto bene quanto un sistema di file distribuito. I dati possono essere conservati nei log per un periodo di tempo sufficientemente lungo, quindi otteniamo non solo uno scambio di messaggi, ma anche un archivio di informazioni. Un archivio scalabile senza paura di ottenere uno stato condiviso modificabile.<\/p>\n<p>Successivamente, \u00e8 possibile utilizzare un meccanismo di stateful stream processing (elaborazione del flusso con stato) per aggiungere strumenti dichiarativi di database ai servizi consumatori. Questo \u00e8 un concetto molto importante. Finch\u00e9 i dati vengono conservati in flussi condivisi, a cui possono accedere tutti i servizi, la fusione e l'elaborazione effettuate dal servizio sono private. Si trovano isolate all'interno di un contesto rigorosamente limitato.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/01c8beabb9a02e4c06dffb84f9161324.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Elimina la dicotomia dei dati separando il flusso di stati immutabili. Poi aggiungi questa funzione a ciascun servizio tramite Stateful Stream Processing.<\/i><\/p>\n<p>Quindi, se il tuo servizio deve gestire ordini, catalogo prodotti e magazzino, avr\u00e0 accesso completo: sei tu a decidere quali dati unire, dove elaborarli e come dovrebbero cambiare nel tempo. Nonostante i dati siano condivisi, la gestione di essi \u00e8 completamente decentralizzata. Avviene all'interno di ciascun servizio, in un mondo in cui tutto avviene secondo le tue regole.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/4b2635ad8ddd18f455eea654e472f85e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Condividi i dati in modo da non compromettere la loro integrit\u00e0. Incapsula la funzione, non la fonte, in ciascun servizio di cui ha bisogno.<\/i><\/p>\n<p>Capita che i dati debbano essere spostati massicciamente. A volte il servizio richiede un insieme storico locale di dati nel motore di database scelto. La questione \u00e8 che si pu\u00f2 garantire che, se necessario, una copia pu\u00f2 essere ripristinata dalla fonte tramite il meccanismo di logging distribuito. I connettori in Kafka gestiscono ottimamente questo compito.<\/p>\n<p>Pertanto, l'approccio esaminato oggi presenta diversi vantaggi:<\/p>\n<ul>\n<li>I dati vengono utilizzati sotto forma di flussi comuni, che possono essere memorizzati a lungo nei log, mentre il meccanismo di lavoro con i dati condivisi \u00e8 incorporato in ciascun contesto specifico, il che consente ai servizi di funzionare in modo semplice e veloce. In questo modo si pu\u00f2 equilibrare la dicotomia dei dati.<\/li>\n<li>I dati provenienti da vari servizi possono essere facilmente combinati in insiemi. Questo semplifica l'interazione con i dati comuni e elimina la necessit\u00e0 di mantenere insiemi locali di dati nel database.<\/li>\n<li>Lo Stateful Stream Processing memorizza solo i dati, mentre la fonte della verit\u00e0 rimangono i log comuni, quindi il problema della corruzione dei dati nel tempo non \u00e8 cos\u00ec pressante.<\/li>\n<li>In sostanza, i servizi sono guidati dai dati, quindi nonostante la continua crescita dei volumi di dati, i servizi possono ancora rispondere rapidamente agli eventi aziendali.<\/li>\n<li>I problemi di scalabilit\u00e0 ricadono sul broker, non sui servizi. Questo riduce notevolmente la complessit\u00e0 nella scrittura dei servizi, poich\u00e9 non \u00e8 necessario preoccuparsi della scalabilit\u00e0.<\/li>\n<li>L'aggiunta di nuovi servizi non richiede modifiche ai vecchi, rendendo quindi pi\u00f9 facile l'integrazione di nuovi servizi.<\/li>\n<\/ul>\n<p>\nCome puoi vedere, \u00e8 pi\u00f9 di un semplice REST. Abbiamo ottenuto un insieme di strumenti che consente di lavorare con i dati comuni in modo decentralizzato.<\/p>\n<p>Nell'articolo di oggi non sono stati trattati tutti gli aspetti. Dobbiamo ancora capire come bilanciare tra il paradigma 'richiesta-risposta' e il paradigma orientato agli eventi. Ma su questo ne parleremo la prossima volta. Ci sono argomenti da esplorare, come perch\u00e9 lo Stateful Stream Processing \u00e8 cos\u00ec efficace. Di questo parleremo nel terzo articolo. Ci sono anche altre potenti strutture di cui possiamo avvalerci, come ad esempio, <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>. Con il suo aiuto cambiano le regole del gioco per i sistemi di business distribuiti, poich\u00e9 questa struttura garantisce transazioni per <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/X\/Open_XA\">XA<\/a><\/noindex> una forma scalabile. Questo sar\u00e0 l'argomento del quarto articolo. E infine, dovremo esaminare i dettagli dell'implementazione di questi principi.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomia dei dati: ripensare il rapporto con i dati e i servizi\" src=\"\/wp-content\/uploads\/2020\/05\/f66eadcc538cf3da74ccb120e1de2ae7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMa per ora ricorda semplicemente questo: la dicotomia dei dati \u00e8 la forza con cui ci confrontiamo nella creazione di servizi aziendali. E dobbiamo tenerne conto. Il focus \u00e8 quello di ribaltare tutto e iniziare a considerare i dati comuni come oggetti di prima classe. Il Stateful Stream Processing offre un compromesso unico per questo. Evita i 'God Components' centralizzati che ostacolano il progresso. Inoltre, assicura l'agilit\u00e0, la scalabilit\u00e0 e la resilienza delle pipeline di streaming dei dati e le integra in ogni servizio. Pertanto, possiamo concentrarci su un flusso comune di coscienza a cui pu\u00f2 connettersi qualsiasi servizio e lavorare con i suoi dati. In questo modo, i servizi diventano pi\u00f9 scalabili, intercambiabili e autonomi. Pertanto, non solo appariranno bene nelle bacheche e durante la verifica delle ipotesi, ma funzioneranno e cresceranno per decenni. <\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rVZl\/\">Scopri di pi\u00f9 sul corso.<br \/>\n<\/a><\/noindex><\/p>\n<p>Fonte: <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\/it\/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=\"it_IT\" \/>\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\/it\/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\udd47Dicotomia dei dati: ripensare il rapporto tra dati e servizi | ProHoster","description":"Ciao a tutti!","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/83248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=83248"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/83248\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/83249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=83248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=83248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=83248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}