{"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 lancia di nuovo il corso <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rVZl\/\">\u00abArchitetto Software\u00bb<\/a><\/noindex>, per cui come di consueto 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 vi siete imbattuti in questa storia sui microservizi senza alcun contesto, \u00e8 comprensibile considerarla un po' strana. Suddividere un'applicazione in frammenti, collegati tra loro da una rete, implica necessariamente l'aggiunta di complessi meccanismi di tolleranza ai guasti nel sistema distribuito risultante. <\/p>\n<p>Sebbene questo approccio comporti la suddivisione in numerosi servizi indipendenti, l'obiettivo finale \u00e8 molto pi\u00f9 grande della semplice operativit\u00e0 di questi servizi su macchine diverse. Qui si parla dell'interazione con un mondo circostante che \u00e8 anch'esso distribuito. Non in senso tecnico, ma piuttosto nel senso di un'ecosistema composta da molte persone, team, programmi, e ognuna di queste parti deve in qualche modo portare a termine 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 certo obiettivo. Abbiamo ignorato questo fatto per decenni, cercando di ottenere l'integrazione, trasferendo file tramite FTP o utilizzando strumenti di integrazione aziendale, concentrandoci per\u00f2 sui nostri obiettivi isolati. 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 operare con successo, \u00e8 necessario riconoscere e progettare due mondi fondamentalmente diversi: il mondo esterno, dove viviamo in un ecosistema di molti altri servizi, e il nostro mondo personale, 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 della tradizionale architettura monolitica non reggono alcuna critica. Quindi, comprendere correttamente questi sistemi significa fare qualcosa di pi\u00f9 che creare uno schema interessante su una lavagna bianca o una bella prova di concetto. Si tratta di far funzionare con successo un sistema per un lungo periodo. Fortunatamente, i servizi esistono da un bel po' di tempo, anche se appaiono in modi diversi. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Service-oriented_architecture\">Lezioni di SOA<\/a><\/noindex> sono ancora rilevanti, anche aggiunte a Docker, Kubernetes e leggermente sfregiate da barbe hipster. <\/p>\n<p>Quindi, oggi esamineremo come sono cambiate le regole, perch\u00e9 \u00e8 necessario ripensare il nostro approccio ai servizi e ai dati che si scambiano e perch\u00e9 abbiamo bisogno di strumenti completamente diversi.<\/p>\n<h3>L'incapsulamento non sar\u00e0 sempre dalla tua parte<\/h3>\n<p>\n I microservizi possono operare in modo indipendente l'uno dall'altro. Questa caratteristica conferisce loro il massimo valore. Questo stesso aspetto consente ai servizi di scalare e crescere. Non tanto in termini di scalabilit\u00e0 fino a quadrilioni di utenti o petabyte di dati (sebbene possano aiutare anche in questo), quanto in termini di scalabilit\u00e0 dal punto di vista delle persone, 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 un'arma a doppio taglio. Cio\u00e8, un servizio pu\u00f2 funzionare facilmente da solo. Ma se all'interno del servizio viene implementata una funzione che richiede l'utilizzo di un altro servizio, alla fine ci troviamo a dover apportare modifiche a entrambi i servizi quasi simultaneamente. In un monolite \u00e8 facile, basta apportare la modifica e rilasciarla, ma nel caso della sincronizzazione di servizi indipendenti ci saranno pi\u00f9 problemi. Il coordinamento tra team e cicli di rilascio compromette 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 del nostro approccio standard, ci sforziamo di evitare cambiamenti intrusivi, separando nettamente le funzioni tra i servizi. Un buon esempio di questo \u00e8 un servizio di accesso unificato. Ha un ruolo ben definito che lo distingue dagli altri servizi. Questa chiara separazione significa che, in un mondo in rapida evoluzione delle esigenze dei servizi circostanti, il servizio di accesso unificato difficilmente cambier\u00e0. Esiste 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\/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 costantemente una separazione netta dei ruoli. Ad esempio, gli stessi servizi aziendali tendono a lavorare maggiormente con dati provenienti da altri servizi simili. Se operi nel commercio al dettaglio online, l'elaborazione degli ordini, del catalogo dei prodotti o delle informazioni sugli utenti diventer\u00e0 un'esigenza 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 lavoro \u00e8 inevitabilmente intrecciato.<\/i><\/p>\n<p>Siamo dunque giunti a un momento importante di cui vale la pena parlare. Mentre i servizi funzionano bene per i componenti dell'infrastruttura che operano in gran parte in modo isolato, la maggior parte dei servizi aziendali si intrecciano in modo molto pi\u00f9 stretto.<\/p>\n<h3>Dichotomia dei dati<\/h3>\n<p>\n Approcci orientati ai servizi potrebbero gi\u00e0 esistere, ma ci sono ancora poche informazioni 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 modifiche successive. Dall'altro lato, abbiamo bisogno di essere in grado di condividere liberamente e gestire i dati comuni, proprio come qualsiasi altro. Si tratta di avere la possibilit\u00e0 di iniziare a lavorare immediatamente, con la stessa libert\u00e0 di qualsiasi altro sistema informativo.<\/p>\n<p>Tuttavia, i sistemi informativi hanno poco a che fare con l'incapsulamento. In effetti, \u00e8 addirittura l'opposto. I database fanno tutto il possibile per garantire l'accesso ai dati in essi conservati. Sono dotati di un potente interfaccia dichiarativa che consente di modificare i dati come necessario. Questa funzionalit\u00e0 \u00e8 importante in fase di ricerca preliminare, ma non per gestire la 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. La contraddizione. La dicotomia. Infatti, i sistemi informativi riguardano la fornitura di dati, mentre i servizi riguardano la loro occultazione.<\/p>\n<p>Queste due forze sono fondamentali. Sono alla base della maggior parte del nostro lavoro, in una continua lotta per il predominio nei sistemi che creiamo.<\/p>\n<p>Man mano che i sistemi di servizi crescono ed evolvono, osserviamo diverse manifestazioni delle conseguenze della dicotomia dei dati. L'interfaccia del servizio potr\u00e0 espandersi, offrendo un'ampia gamma di funzionalit\u00e0, e iniziare a somigliare a un database artigianale molto strano, oppure potremmo rimanere delusi e implementare qualche metodo per estrarre o spostare interi set di dati 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 La creazione di qualcosa che assomiglia a un database artigianale comporter\u00e0 una serie di problemi. Non entreremo nei dettagli riguardo ai rischi associati a <i>shared database<\/i>, ma possiamo dire che essa comporta significative e costose sfide ingegneristiche e operative <noindex><a rel=\"nofollow\" href=\"http:\/\/microservices.io\/patterns\/data\/shared-database.html\">per l'azienda che cerca di utilizzarla.<\/a><\/noindex> Peggio ancora, le dimensioni dei dati amplificano i problemi relativi ai confini dei servizi. Pi\u00f9 dati condivisi esistono all'interno del servizio, pi\u00f9 complessa diventa l'interfaccia e pi\u00f9 difficile risulta combinare set di dati provenienti da diversi servizi.<\/p>\n<p>Peggio ancora, la quantit\u00e0 di dati moltiplica i problemi legati ai confini dei servizi. Pi\u00f9 dati condivisi risiedono all'interno di un servizio, pi\u00f9 complesso diventa l'interfaccia e pi\u00f9 difficile sar\u00e0 unire i set di dati provenienti da vari servizi.<\/p>\n<p>Un approccio alternativo per l'estrazione e lo spostamento di interi set di dati presenta anch'esso delle problematiche. Un modo comune per affrontare questa questione consiste nell'estrarre e memorizzare un set di dati intero, per poi conservarlo localmente in ciascun servizio consumatore.<\/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 Il problema \u00e8 che i diversi servizi interpretano i dati che consumano in modi diversi. Questi dati sono sempre a portata di mano. Vengono modificati e elaborati localmente. Ben presto perdono ogni legame con i dati originali.<\/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>Pi\u00f9 le copie sono mutevoli, maggiore sar\u00e0 la differenza dei dati nel tempo.<\/i><\/p>\n<p>Peggio ancora, tali dati sono difficili da correggere in retrospettiva (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Master_data_management\">MDM<\/a><\/noindex> qui pu\u00f2 davvero tornare utile). In effetti, alcuni dei problemi tecnologici irrisolvibili con cui le aziende si confrontano derivano da dati eterogenei, che si moltiplicano da un'applicazione all'altra.<\/p>\n<p>Per trovare una soluzione a questo problema sui dati condivisi, \u00e8 necessario pensare in modo diverso. Devono diventare oggetti di prima classe nelle architetture che costruiamo. <noindex><a rel=\"nofollow\" href=\"http:\/\/cidrdb.org\/cidr2005\/papers\/P12.pdf\">Pat Heland<\/a><\/noindex> chiama questi dati \"esterni\", ed \u00e8 una caratteristica molto importante. Abbiamo bisogno dell'incapsulamento per non rivelare l'architettura interna del servizio, ma dobbiamo facilitare l'accesso ai dati condivisi affinch\u00e9 i servizi possano eseguire 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 i database condivisi offrono una buona soluzione per lavorare con dati esterni. Le interfacce di servizio non si prestano bene allo 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 si danneggiano. I database condivisi si concentrano troppo su un singolo punto, ostacolando il progresso. Ci ritroviamo inevitabilmente intrappolati in un ciclo di inaffidabilit\u00e0 dei dati:<\/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 inaffidabilit\u00e0 dei dati<\/i><\/p>\n<h3>Flussi: un approccio decentralizzato ai dati e ai servizi<\/h3>\n<p>\n Ideale sarebbe rivedere l'approccio con cui i servizi gestiscono i dati condivisi. Attualmente, qualsiasi approccio si confronta con la dicotomia menzionata, poich\u00e9 non esiste una soluzione magica che possa farla scomparire. Tuttavia, possiamo ripensare al problema e raggiungere un compromesso.<\/p>\n<p>Questo compromesso implica un certo grado di centralizzazione. Possiamo sfruttare meccanismi di log distribuiti, poich\u00e9 forniscono flussi scalabili e affidabili. Ora \u00e8 necessario che i servizi possano connettersi e lavorare su questi flussi condivisi; tuttavia, vogliamo evitare complicati God Service centralizzati che gestiscono tale elaborazione. Pertanto, la soluzione migliore \u00e8 incorporare l'elaborazione dei flussi in ogni servizio consumatore. In questo modo, i servizi possono combinare set di dati da diverse fonti e lavorarci come necessario.<\/p>\n<p>Uno dei modi per adottare questo approccio \u00e8 utilizzare una piattaforma di streaming. Ci sono molte opzioni, ma oggi ci concentreremo su Kafka, poich\u00e9 l'uso del suo Stateful Stream Processing consente di affrontare efficacemente 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 consente di seguire un percorso consolidato e utilizzare lo scambio di messaggi per lavorare con <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Event-driven_architecture\">un'architettura orientata agli eventi<\/a><\/noindex>. Si ritiene che questo approccio offra una migliore scalabilit\u00e0 e separazione rispetto al meccanismo \"richiesta-risposta\", poich\u00e9 affida il controllo del flusso al destinatario invece che al mittente. Tuttavia, per tutto ci\u00f2 si paga un prezzo, e avrete bisogno di un broker. Ma per sistemi di grandi dimensioni, questo compromesso vale la pena (cosa che non si pu\u00f2 dire delle vostre applicazioni web medie).<\/p>\n<p>Se la registrazione distribuita \u00e8 gestita da un broker invece che da un tradizionale sistema di messaggistica, \u00e8 possibile sfruttare caratteristiche aggiuntive. Il trasporto pu\u00f2 essere scalato linearmente quasi altrettanto bene quanto un sistema di archiviazione distribuito. I dati possono essere memorizzati nei log per un lungo periodo, quindi otteniamo non solo uno scambio di messaggi, ma anche uno storage di informazioni. Uno storage scalabile senza il timore di ottenere uno stato condiviso modificabile.<\/p>\n<p>Si pu\u00f2 quindi utilizzare il meccanismo di stateful stream processing per aggiungere strumenti dichiarativi del database ai servizi consumatori. Questa \u00e8 un'idea molto importante. Finch\u00e9 i dati vengono memorizzati in stream condivisi accessibili a tutti i servizi, l'unione e l'elaborazione effettuate dal servizio sono private. Queste operazioni risultano 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. Quindi aggiungi questa funzione in ogni servizio utilizzando lo Stateful Stream Processing.<\/i><\/p>\n<p>In questo modo, se il tuo servizio deve lavorare con ordini, cataloghi di prodotti o magazzino, avr\u00e0 accesso completo: sarai tu a decidere quali dati unire, dove elaborarli e come devono cambiare nel tempo. Anche se i dati sono condivisi, il loro utilizzo \u00e8 completamente decentralizzato. Viene gestito all'interno di ogni servizio, in un mondo in cui tutto segue 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 comprometterne l'integrit\u00e0. Incapsula la funzione, non la fonte, in ogni servizio che ne ha bisogno.<\/i><\/p>\n<p>A volte, \u00e8 necessario spostare grandi quantit\u00e0 di dati. Talvolta un servizio richiede un set di dati storici locale in un determinato motore di database. Il punto \u00e8 che si pu\u00f2 garantire che, se necessario, una copia pu\u00f2 essere ripristinata dalla fonte tramite l'accesso al meccanismo di registrazione distribuita. I connettori in Kafka gestiscono egregiamente questo compito.<\/p>\n<p>Quindi, l'approccio discusso oggi presenta diversi vantaggi:<\/p>\n<ul>\n<li>I dati vengono utilizzati come flussi condivisi, che possono essere a lungo memorizzati nei log, e il meccanismo di gestione dei dati condivisi \u00e8 incorporato in ciascun contesto, consentendo ai servizi di operare in modo semplice e rapido. In questo modo \u00e8 possibile bilanciare la dicotomia dei dati.<\/li>\n<li>I dati provenienti da vari servizi possono essere facilmente uniti in set. Cos\u00ec si semplifica l'interazione con i dati condivisi ed elimina la necessit\u00e0 di mantenere set di dati locali nel database.<\/li>\n<li>Il Stateful Stream Processing cache solo i dati, mentre la fonte di verit\u00e0 rimane nei log condivisi, quindi il problema della corruzione dei dati nel tempo \u00e8 meno pressante.<\/li>\n<li>Essenzialmente, i servizi sono gestiti dai dati, il che significa che, 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 significativamente la complessit\u00e0 nella scrittura dei servizi, poich\u00e9 non c'\u00e8 necessit\u00e0 di preoccuparsi della scalabilit\u00e0.<\/li>\n<li>L'aggiunta di nuovi servizi non richiede modifiche ai vecchi, rendendo pi\u00f9 semplice l'integrazione di nuove soluzioni.<\/li>\n<\/ul>\n<p>\nCome potete vedere, questo va oltre il semplice REST. Abbiamo a disposizione un insieme di strumenti che permette di lavorare con dati condivisi 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 ne parleremo la prossima volta. Ci sono argomenti su cui dobbiamo approfondire meglio, come la grande utilit\u00e0 della Stateful Stream Processing. Di questo parleremo nel terzo articolo. Inoltre, ci sono altre potenti costruzioni che possiamo sfruttare, se decidiamo di utilizzarle, come <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 questa costruzione cambiamo le regole del gioco per i sistemi aziendali distribuiti, poich\u00e9 offre garanzie transazionali per <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/X\/Open_XA\">XA<\/a><\/noindex> in maniera scalabile. Di questo ci occuperemo nel quarto articolo. 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 ricordate semplicemente questo: la dicotomia dei dati \u00e8 la forza che affrontiamo nella creazione di servizi aziendali. E dobbiamo tenerne conto. L'obiettivo \u00e8 capovolgere tutto e iniziare a considerare i dati comuni come oggetti di prima classe. La Stateful Stream Processing offre un compromesso unico a questo proposito. Essa evita componenti centralizzati \"God Component\" che ostacolano lo sviluppo e il progresso. Inoltre, garantisce rapidit\u00e0, scalabilit\u00e0 e resilienza nei pipeline di streaming dei dati, integrandoli in ogni servizio. Cos\u00ec possiamo concentrarci sul flusso comune di coscienza, al quale pu\u00f2 connettersi qualsiasi servizio e lavorare con i suoi dati. Di conseguenza, i servizi diventano pi\u00f9 scalabili, intercambiabili e autonomi. Pertanto, non solo appariranno bene nelle board e nei test di ipotesi, ma funzioneranno e si svilupperanno 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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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\" \/>\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) 4.9.10\" \/>\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! \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\" \/>\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\udd47Dichotomia dei dati: ripensare il rapporto con i dati e i servizi | ProHoster","description":"Ciao a tutti! Abbiamo ottime notizie, a giugno OTUS lancia di nuovo il corso \"Architetto del Software\", e come sempre vogliamo condividere con voi materiale utile. Se vi siete trovati di fronte a tutta questa storia sui microservizi senza alcun contesto, \u00e8 comprensibile che possiate trovarla un po' strana. Suddividere un'applicazione in frammenti interconnessi tramite rete significa inevitabilmente aggiungere","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! \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","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"},"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}]}}