<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Quantyca - Medium]]></title>
        <description><![CDATA[Quantyca — Data at Core - Medium]]></description>
        <link>https://medium.com/quantyca?source=rss----20e59f853442---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Quantyca - Medium</title>
            <link>https://medium.com/quantyca?source=rss----20e59f853442---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 27 Jun 2026 22:46:41 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/quantyca" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[La Data Strategy come motore dell’IT]]></title>
            <link>https://medium.com/quantyca/la-data-strategy-come-motore-dellit-c6eca0321c03?source=rss----20e59f853442---4</link>
            <guid isPermaLink="false">https://medium.com/p/c6eca0321c03</guid>
            <category><![CDATA[data-management]]></category>
            <category><![CDATA[data-architecture]]></category>
            <category><![CDATA[enterprise-architecture]]></category>
            <category><![CDATA[data-strategy]]></category>
            <category><![CDATA[data]]></category>
            <dc:creator><![CDATA[Giulio Scotti]]></dc:creator>
            <pubDate>Wed, 20 Jul 2022 12:34:56 GMT</pubDate>
            <atom:updated>2022-07-20T12:39:44.362Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tio4pIC4g2bOfZoLb_8OCg.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@cristina_gottardi?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Cristina Gottardi</a> on <a href="https://unsplash.com/s/photos/pillar?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><h3>Abstract</h3><p>Questo è l’articolo conclusivo di una serie di blog post finalizzata a trasmettere i punti salienti della visione delle architetture IT enterprise e del <em>Data Management </em>che, come <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a>, proponiamo ai nostri clienti.</p><p>Per chi non li avesse letti, consiglio di leggere gli articoli precedenti della serie, dai titoli:</p><ul><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/i-principi-di-un-moderno-data-management-7f8da5df014a"><strong><em>I principi di un moderno Data Management</em></strong></a><strong><em>”</em></strong><em>: </em>descrive le sfide dell’IT nella nuova era di digitalizzazione e i driver che spingono verso la ricerca di un cambio di paradigma nella progettazione delle architetture dati</li><li><a href="https://medium.com/quantyca/lapproccio-data-centrico-che-cambia-l-it-fa33404a67c3"><strong><em>“L’approccio data-centrico che cambia l’IT”</em></strong></a><em>: </em>descrive i principi e i vantaggi di un orientamento di progettazione delle architetture IT che considera i dati come asset centrale e riusabile e le applicazioni come elementi effimeri che producono o consumano dati di interesse per l’intera azienda</li><li><a href="https://medium.com/quantyca/lesigenza-di-governo-nella-gestione-dei-dati-e5e71af9162c"><strong><em>“L’esigenza di governo nella gestione dei dati”</em></strong></a>: descrive i principali aspetti di governance da considerare per abilitare architetture IT data centriche e distribuite e mantenere il controllo dei dati a riposo e in movimento</li><li><a href="https://medium.com/quantyca/ladattabilit%C3%A0-della-piattaforma-di-integrazione-in-un-modello-data-fabric-8fa3d76d9667"><strong><em>“L’adattabilità della piattaforma di integrazione in un modello Data Fabric”</em></strong></a>: descrive un modello emergente di progettazione delle piattaforme dati basato sull’uso avanzato dei metadati per rendere la piattaforma più automatizzata, self-service e versatile alle diverse esigenze degli utilizzatori</li><li><a href="https://medium.com/quantyca/il-domain-driven-design-applicato-ai-dati-per-una-maggiore-agilit%C3%A0-nella-progettazione-197823eac2a0"><strong><em>“Il Domain Driven Design applicato ai dati per una maggiore agilità nella progettazione”</em></strong></a>: descrive i principi basilari del modello di progettazione software <em>Domain Driven Design</em>, che ha introdotto l’idea della decentralizzazione delle responsabilità e ha avuto grande influenza sul Data Management</li><li><a href="https://medium.com/quantyca/il-domain-driven-design-applicato-ai-dati-per-una-maggiore-agilit%C3%A0-nella-progettazione-197823eac2a0"><strong><em>“Il Data Mesh e la spinta verso una gestione dati distribuita”</em></strong></a>: descrive lo scenario di Data Management precedente al modello <em>Data Mesh</em> e le ragioni che hanno portato alla ricerca di decentralizzazione delle responsabilità sui dati in una prospettiva domain-oriented</li><li><a href="https://medium.com/quantyca/il-data-mesh-e-il-consumo-self-service-dei-dati-come-prodotti-920e60f8aae"><strong><em>“Il Data Mesh e il consumo self service dei dati come prodotti</em></strong></a><strong><em>”</em></strong>: descrive la visione dei dati come prodotti gestiti end-to-end da team vicini al dominio di appartenenza e condivisi con gli altri team mediante una piattaforma di integrazione fruibile da tutti e governata in modo federato.</li></ul><h3>I principi architetturali e il ruolo dell’Enterprise Architect</h3><p>In <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a><strong> </strong>crediamo che, alla base di un’<strong>architettura enterprise</strong>, al di là dei componenti e delle tecnologie che la costituiscono, variabili in base alle esigenze specifiche del business del cliente, ci debbano essere <strong>tre principi</strong> fondamentali, che determinano la direzione verso cui l’architettura IT evolve nel tempo:</p><ol><li>centricità del dato</li><li>governo</li><li>adattabilità</li></ol><p>Negli articoli che compongono la serie abbiamo iniziato il tour parlando della necessità di evolvere da un paradigma tradizionalmente application-centrico, ereditato dalla prima ondata di digitalizzazione dei processi di business, ad un paradigma data-centrico, più adatto alle necessità digitali presenti e future, che richiedono uno sfruttamento e un riuso importante del<strong> dato come asset aziendale</strong> per supportare funzionalità di analisi avanzate, apprendimento automatico e <strong>servizi data-driven su larga scala</strong>. Abbiamo discusso come un paradigma data-centrico ha il beneficio di <strong>razionalizzare i flussi di integrazione</strong> dati e <strong>ridurne i costi</strong> di progetto e maintenance. Sono le motivazioni alla base del <strong>principio della <em>centricità del dato</em></strong>.</p><p>Abbiamo poi affrontato il tema della distinzione tra le caratteristiche dei <strong><em>Data On The Inside</em></strong><em>, </em>per l’<strong>utilizzo interno</strong> dei dati nelle logiche di un’applicazione, e i principi con cui dovrebbero essere gestiti i <strong><em>Data On The Outside</em></strong><em>, </em>ovvero i <strong>data asset condivisi</strong> con il resto dell’architettura enterprise, che possono essere riusati all’interno di altre applicazioni a supporto di altre finalità di business. Abbiamo evidenziato la necessità di garantire <strong>basso accoppiamento</strong> tra le applicazioni, <strong>interfacce</strong> di esposizione dei dati stabili e facilmente utilizzabili, basate su <strong>standard</strong>, per favorire l’<strong>interoperabilità</strong> tra applicazioni differenti. Questi aspetti sono i pilastri su cui si basa il <strong>secondo principio</strong> architetturale, quello del <strong><em>governo</em></strong><em>, </em>che diventa sempre più rilevante in<em> </em>un’<strong>architettura distribuita</strong>, in cui diversi componenti devono interagire e nella quale uno stesso dato può essere replicato in molteplici sistemi, passando per pipeline di integrazione più o meno complesse. Abbiamo proseguito il discorso entrando nel cuore delle tematiche di <strong><em>Data Governance</em></strong>, insistendo sulla necessità di legare, tramite il processo di <em>Data Classification</em>, il significato semantico dei dati, riportato nel <em>Business Glossary</em>, alla loro rappresentazioni fisiche, censite nel <em>Data Catalog</em>. Abbiamo spiegato l’utilità di tracciare il <em>Data Lineage</em>, per facilitare analisi di impatto, e di implementare controlli strutturati di <em>Data Quality</em> per garantire la <strong>completezza</strong>, la <strong>consistenza</strong> e l’<strong>affidabilità</strong> dei <strong>data asset</strong> messi a disposizione degli stakeholder interessati.</p><p>Infine abbiamo trattato il <strong>terzo principio</strong> architetturale, quello dell’<strong><em>adattabilità</em></strong><em>, </em>sotto due dimensioni, quella <strong>tecnologico-architetturale</strong> e quella <strong>organizzativa</strong>. Un’architettura è adattabile se è in grado di <strong>fornire opzioni</strong>, dando la possibilità di non vincolarsi fortemente ad una scelta tecnica fatta nel presente ma di essere in grado, se necessario, di modificare tale scelta in futuro in tempi rapidi, nel momento in cui dovessero <strong>cambiare le esigenze e il contesto di business</strong>: l’adattabilità è importante sotto l’aspetto dei <strong>pattern</strong> usati, del numero e della varietà di <strong>applicazioni</strong> coinvolte, degli <strong>stack tecnologici</strong> selezionati e delle <strong>finalità di utilizzo</strong> <strong>del dato</strong> ammesse.</p><p>Dal punto di vista <strong>tecnologico-architetturale</strong>, abbiamo visto come il modello <strong><em>Data Fabric</em></strong> mette a disposizione una <strong>piattaforma di integrazione</strong> data-centrica, poliglotta, scalabile e <strong>metadata-driven</strong>, in grado di <strong>automatizzare</strong> (e quindi velocizzare) diverse attività manuali ordinarie di <em>Data Management</em>, tramite componenti di intelligenza in grado di sfruttare al meglio la varietà di metadati raccolti da tutti gli attori e gli agenti che prendono parte all’architettura. Abbiamo visto inoltre come la componente di piattaforma sia centrale anche nel paradigma <strong><em>Data Mesh</em></strong>, in cui assume una connotazione sempre più di <strong>elemento condiviso e self-serve</strong>, che si pone l’obiettivo di massimizzare l’<strong>autonomia dei gruppi di lavoro</strong> per ridurre colli di bottiglia e passaggi di consegna poco agili.</p><p>Dal punto di vista <strong>organizzativo</strong>, abbiamo discusso l’influenza che il Domain Driven Design ha avuto di recente anche sul mondo del data management, portando all’affermazione del paradigma <strong><em>Data Mesh</em></strong>, che propone di gestire in modo <strong>decentralizzato, federato e domain-oriented</strong> il ciclo di vita dei <strong><em>Data Product</em></strong> afferenti ad un certo dominio di business. Di conseguenza, il <em>Data Mesh</em> cambia lo scenario organizzativo di <strong>suddivisione</strong> e <strong>composizione dei gruppi di lavoro</strong>, non più orientato ad una dimensione tecnica, in cui le persone venivano organizzate per team competenti su una particolare fase della pipeline di gestione del dato (es: team responsabile della gestione Big Data) o su un aspetto specifico di data management (es: team esperto di modelli data warehouse), ma ad una <strong>dimensione in linea con i domini funzionali</strong> e i contesti di business. In questa nuova prospettiva, non si delinea più un unico modello dati enterprise centralizzato e difficile da evolvere, sotto la responsabilità di un unico team, ma una mesh di <strong>modelli specifici dei diversi domini</strong> di business, che portano alla formazione di <strong>elementi riusabili e componibili tra di loro</strong> in modo pienamente flessibile, detti <strong><em>Data as a Product</em></strong>.</p><p>Come <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a> ci capita spesso di fornire ai nostri clienti <strong>servizi di consulenza</strong> per il <strong>disegno o la revisione dell’architettura</strong> IT enterprise, che può essere spinta da driver differenti, in base al contesto specifico dell’azienda: alcuni dei più comuni sono la volontà di migliorare il supporto digitale e la qualità del servizio IT, abilitare nuovi use case richiesti dall’espansione del business, razionalizzare i costi delle infrastrutture IT, ridurre il debito tecnologico, adeguare l’architettura a mutamenti organizzativi di corporate. Il lavoro che svolgiamo come <strong><em>Enterprise Architect</em></strong> è quello di valutare le priorità in termini di valore atteso dal cliente e i vincoli a contorno e <strong>identificare l’evoluzione architetturale più adatta</strong> per lo <strong>scenario specifico</strong> del cliente.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/931/1*hS2XE8uWjpzY2bRjbJ1Zlg.png" /><figcaption>La funzione dell’Enterprise Architect nel processo di evoluzione di un’architettura IT in linea con la Data Strategy aziendale</figcaption></figure><p>Nel disegno dell’architettura enterprise target partiamo da uno <strong>schema di riferimento</strong> della piattaforma di integrazione che riteniamo ideale sulla carta, ma operiamo poi scelte spesso diverse per declinare il disegno teorico in una <strong>soluzione ottimale</strong> per le <strong>esigenze peculiari del cliente</strong>. Non esiste l’architettura perfetta per qualunque contesto: nel proporre la soluzione si fanno delle scelte considerando diversi <strong>tradeoff tra obiettivi a volte contrastanti</strong> tra di loro, ad esempio la <strong>scalabilità</strong> della piattaforma e il contenimento dei <strong>costi</strong>, l’<strong>agilità</strong> di lavoro e il mantenimento del <strong>controllo</strong>, l’<strong>ottimizzazione</strong> dell’accesso al dato e la <strong>razionalizzazione</strong> dei sistemi.</p><p>I <strong>tre principi architetturali</strong> di base che abbiamo descritto negli articoli di questa serie ci guidano nelle scelte e nel delineare il <strong>piano di evoluzione dell’architettura</strong>: infatti, nella maggior parte dei casi, l’implementazione di un’architettura target è un <strong>processo incrementale</strong> e diviso in step, in cui la <strong>gestione del transitorio</strong> è solitamente uno degli elementi più critici, essendo una fase in cui possono moltiplicarsi i <strong>costi infrastrutturali</strong>, i <strong>costi di licenza, </strong>i<strong> costi di integrazione </strong>e i <strong>costi delle operations</strong>. La <strong>sequenza</strong> degli step di transizione e le <strong>interdipendenze</strong> tra di essi e con altre attività progettuali in essere sono fattori chiave da considerare per delineare il piano di evoluzione complessivo di un’architettura, che deve bilanciare il raggiungimento degli <strong>obiettivi business</strong> e degli <strong>obiettivi IT</strong>.</p><p>La figura dell’<strong><em>Enterprise Architect</em></strong> assume la sua importanza in un simile <strong>scenario “in movimento”,</strong> che sta diventando sempre più la <strong>nuova normalità</strong> nell’informatica e, in particolare, nell’area del <em>Data Management: </em>l’obiettivo dell’Architect non è solo quello di disegnare l’architettura target e il piano di evoluzione, ma anche di contribuire a definire una vera e propria <strong><em>Data Strategy </em></strong>aziendale con <strong>obiettivi condivisi di medio periodo</strong>, che orienti le attività progettuali e gli investimenti IT nell’ambito del <em>Data Management </em>in linea con le aspettative dell’azienda e la direzione strategica stabilita.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c6eca0321c03" width="1" height="1" alt=""><hr><p><a href="https://medium.com/quantyca/la-data-strategy-come-motore-dellit-c6eca0321c03">La Data Strategy come motore dell’IT</a> was originally published in <a href="https://medium.com/quantyca">Quantyca</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Il Data Mesh e il consumo self-service dei dati come prodotti]]></title>
            <link>https://medium.com/quantyca/il-data-mesh-e-il-consumo-self-service-dei-dati-come-prodotti-920e60f8aae?source=rss----20e59f853442---4</link>
            <guid isPermaLink="false">https://medium.com/p/920e60f8aae</guid>
            <category><![CDATA[data-mesh]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[data-management]]></category>
            <category><![CDATA[data-platforms]]></category>
            <category><![CDATA[data-as-a-product]]></category>
            <dc:creator><![CDATA[Giulio Scotti]]></dc:creator>
            <pubDate>Thu, 07 Jul 2022 07:28:27 GMT</pubDate>
            <atom:updated>2022-07-20T12:39:04.309Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FzJ7YAn-eCGmreZV1wd5xw.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@johnschno?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">John Schnobrich</a> on <a href="https://unsplash.com/s/photos/self-service-platform?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><h3>Abstract</h3><p>Questo è il settimo articolo di una serie di blog post finalizzata a trasmettere i punti salienti della visione delle architetture IT enterprise e del <em>Data Management </em>che, come <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a>, proponiamo ai nostri clienti.</p><p>Per chi non li avesse letti, consiglio di leggere gli articoli precedenti della serie, dai titoli:</p><ul><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/i-principi-di-un-moderno-data-management-7f8da5df014a"><strong><em>I principi di un moderno Data Management</em></strong></a><strong><em>”</em></strong><em>: </em>descrive le sfide dell’IT nella nuova era di digitalizzazione e i driver che spingono verso la ricerca di un cambio di paradigma nella progettazione delle architetture dati</li><li><a href="https://medium.com/quantyca/lapproccio-data-centrico-che-cambia-l-it-fa33404a67c3"><strong><em>“L’approccio data-centrico che cambia l’IT”</em></strong></a><em>: </em>descrive i principi e i vantaggi di un orientamento di progettazione delle architetture IT che considera i dati come asset centrale e riusabile e le applicazioni come elementi effimeri che producono o consumano dati di interesse per l’intera azienda</li><li><a href="https://medium.com/quantyca/lesigenza-di-governo-nella-gestione-dei-dati-e5e71af9162c"><strong><em>“L’esigenza di governo nella gestione dei dati”</em></strong></a>: descrive i principali aspetti di governance da considerare per abilitare architetture IT data centriche e distribuite e mantenere il controllo dei dati a riposo e in movimento</li><li><a href="https://medium.com/quantyca/ladattabilit%C3%A0-della-piattaforma-di-integrazione-in-un-modello-data-fabric-8fa3d76d9667"><strong>“L’adattabilità della piattaforma di integrazione in un modello Data Fabric”</strong></a>: descrive un modello emergente di progettazione delle piattaforme dati basato sull’uso avanzato dei metadati per rendere la piattaforma più automatizzata, self-service e versatile alle diverse esigenze degli utilizzatori</li><li><a href="https://medium.com/quantyca/il-domain-driven-design-applicato-ai-dati-per-una-maggiore-agilit%C3%A0-nella-progettazione-197823eac2a0"><strong>“Il Domain Driven Design applicato ai dati per una maggiore agilità nella progettazione”</strong></a>: descrive i principi basilari del modello di progettazione software <em>Domain Driven Design</em>, che ha introdotto l’idea della decentralizzazione delle responsabilità e ha avuto grande influenza sul Data Management</li><li><a href="https://medium.com/quantyca/il-domain-driven-design-applicato-ai-dati-per-una-maggiore-agilit%C3%A0-nella-progettazione-197823eac2a0"><strong>“Il Data Mesh e la spinta verso una gestione dati distribuita”</strong></a>: descrive lo scenario di Data Management precedente al modello <em>Data Mesh</em> e le ragioni che hanno portato alla ricerca di decentralizzazione delle responsabilità sui dati in una prospettiva domain-oriented</li></ul><p>L’articolo conclusivo, dal titolo <strong><em>“</em></strong><a href="https://medium.com/quantyca/la-data-strategy-come-motore-dellit-c6eca0321c03"><strong><em>La Data Strategy come motore dell’IT</em></strong></a><strong><em>”</em></strong><em> </em>chiude la serie con un riassunto dei principi architetturali che riteniamo basilari per una strategia di <em>Data Management</em> efficace e una visione del ruolo dell’<em>Enterprise Architect</em> nel delineare l’evoluzione delle architetture dati.</p><p>Zhamak Dehghani, negli articoli <a href="https://martinfowler.com/articles/data-monolith-to-mesh.html"><em>How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh</em></a> e <a href="https://martinfowler.com/articles/data-mesh-principles.html"><em>Data Mesh Principles and Logical Architecture</em></a>,<em> </em>ha proposto un <strong>cambio di paradigma radicale</strong> per il mondo del <em>Data Management</em>, che ha poi ripreso ed esteso nel libro <a href="https://learning.oreilly.com/library/view/data-mesh/9781492092384/"><em>Data Mesh</em></a><em>. </em>Il paradigma, chiamato appunto <strong><em>Data Mesh</em></strong>, si basa su quattro pillar basilari:</p><ul><li><em>domain ownership</em></li><li><em>data as a product</em></li><li><em>selve-serve data platform</em></li><li><em>federated computational governance</em></li></ul><p>In <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a> riteniamo che le idee alla base del paradigma<em> Data Mesh</em> siano interessanti e che questo rappresenti una direzione di pensiero architetturale e organizzativo per il mondo del <em>Data Management</em> in linea con le aspettative di un business che intende essere sempre più data-driven. Nell’<a href="https://medium.com/quantyca/il-data-mesh-e-la-spinta-verso-una-gestione-dati-distribuita-f7c069e80e59">articolo precedente</a> abbiamo discusso il primo pillar, quello della <em>Domain Ownership: </em>ora tratteremo gli altri tre principi fondamentali.</p><h4>Data as a Product</h4><p>Il paradigma <em>Data Mesh</em> è in linea con i principi del <a href="https://medium.com/quantyca/lapproccio-data-centrico-che-cambia-l-it-fa33404a67c3"><strong>data-centrismo</strong></a>, in quanto riporta il <strong>dato</strong> ad avere piena dignità di <strong>prodotto digitale</strong> (<em>Data as a Product</em>) e a non essere più considerato come <em>by-product</em> delle applicazioni in cui esso viene generato.</p><p>Il concetto di <strong><em>Data Product</em></strong><em> </em>è centrale nel paradigma <em>Data Mesh</em>: esso rappresenta un’<strong>unità di deploy</strong> afferente ad un determinato <strong>ambito di dominio</strong>, che mette a disposizione dei consumatori un <strong>set di entità dati logicamente correlate</strong> e tutte le strutture necessarie per rendere fruibile il loro utilizzo: <strong>interfacce</strong> di consumo (<strong><em>data API</em></strong>), diagrammi del modello concettuale, logico e fisico dei dati, documentazione funzionale, service level objectives (<em>SLO</em>), <strong>metriche di qualità</strong>, definizione delle modalità di accesso, delle finalità e dei termini ammessi di utilizzo e, naturalmente, implementazione e deploy delle <strong>data pipeline</strong> per alimentare le strutture dati che costituiscono il prodotto. Ogni <em>Data Product</em> ha un <strong><em>Data Product Owner</em></strong>, che è la figura responsabile della sua gestione e della sua roadmap di evoluzione.</p><p>Un <em>Data Product</em> può produrre le proprie entità dati a partire da entità elementari prodotte da altri <em>Data Product</em>, applicando logiche di <strong>integrazione</strong>, <strong>arricchimento</strong> e <strong>trasformazioni</strong> di rilievo per il <strong>dominio di business</strong> di afferenza e producendo in output <strong>dati derivati</strong>, che costituiscono nuova fonte di informazione e che, a loro volta, potranno essere consumati da differenti <em>Data Product</em> presenti nella rete. In questo modo i <em>Data Product</em> formano una rete di <strong><em>architectural quanta</em></strong> pienamente <strong>auto-consistenti</strong>, ma che garantiscono <strong>interoperabilità,</strong> per generare ad ogni interazione un contenuto informativo di livello più alto, con una <strong>semantica</strong> allineata con la terminologia e il modello logico proprio del <strong>dominio di riferimento</strong>. L’integrazione tra potenzialmente molteplici <em>Data Product</em> differenti per produrre nuovi dati elaborati viene fatta dal <em>Data Product</em> consumatore. In quest’ottica, non si ottiene più un unico modello dati enterprise troppo generico e difficile da evolvere, come accade nel paradigma <em>Data Lakehouse</em> tradizionale, ma il<strong> modello dati</strong> nel suo complesso è formato da un <strong>insieme di sotto-modelli federati specifici di un particolare dominio, eventualmente combinabili</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/774/1*8yzcGxktcE7nev5-ot98fA.png" /><figcaption>Modello dati federato ottenuto come mesh di diversi Data Product domain-oriented</figcaption></figure><p>Affinchè i <em>Data Product</em> possano fornire il valore analitico atteso, devono essere:</p><ul><li><strong>rintracciabili e facilmente accessibili</strong>: dovrebbero essere registrati su un portale aziendale che ne permetta la ricerca, l’esplorazione e la sottoscrizione da parte dei sistemi consumatori interessati;</li><li><strong>comprensibili e auto-descrittivi</strong>: dovrebbero essere corredati da adeguata documentazione e caratterizzati da una <strong>terminologia business-oriented</strong>, che esprima chiaramente il significato semantico dei dati che rappresentano;</li><li><strong>affidabili e autentici</strong>: dovrebbero indicare service level objectives (<strong>SLO</strong>) e service level agreements (<strong>SLA</strong>), <strong>metriche di qualità</strong>, il riferimento del product / team owner;</li><li><strong>auto-consistenti e componibili</strong>: di base, ogni <em>Data Product</em> dovrebbe poter essere utilizzabile in modo indipendente ma anche insieme ad altri data product per generare informazione derivata;</li><li><strong>sicuri</strong>: dovrebbero prevedere tecniche di <em>Data Protection</em> sugli attributi sensibili, politiche di concessione dei permessi di accesso basate sul <em>principio di minimo privilegio</em> e ai soli soggetti autorizzati.</li></ul><h4>Self-serve Data Platform</h4><p>Dal punto di vista infrastrutturale e tecnologico, affinchè l’<strong>integrazione tra i diversi <em>Data Product</em></strong> a responsabilità distribuita sia efficiente e sostenibile, è necessario predisporre una <strong>Data Platform condivisa e fruibile in modalità self-serve </strong>a livello aziendale, moderna e poliglotta, che metta a disposizione il <strong>set di tecnologie e di servizi di utilità</strong> fondamentali per implementare la <strong>pubblicazione</strong> e la messa a disposizione dei <strong><em>Data Product</em></strong> verso i sistemi consumatori nel modo più efficace possibile.</p><p>E’ importante sottolineare che un paradigma come il <em>Data Mesh, </em>che prevede una rete di <em>Data Product</em> auto-consistenti e componibili uno con l’altro non deve essere interpretato nè come una spinta a produrre dei data silos nè come la proposta di uno stile di integrazione punto a punto: al contrario, l’<strong>integrazione</strong> dovrebbe seguire uno stile <strong><em>hub &amp; spoke</em></strong><em> </em>e pattern scalabili quali, ad esempio, il pattern <strong><em>Publish — Subscribe</em></strong><em>, </em>secondo cui un dominio di business pubblica i propri <em>Data Product</em> su uno o più componenti di <strong>middleware</strong> (come ad esempio un <em>data bus</em> o un <em>object store</em>), o li rende accessibili tramite un <strong>gateway di <em>Data API</em></strong><em>:</em> i domini consumatori che intendono utilizzare un <em>Data Product</em> di un altro dominio possono farne richiesta e ottenerne l’accesso tramite un <strong><em>modello a sottoscrizione</em></strong>.</p><p>Nell’ottica del <em>Data Mesh</em>, ogni dominio può <strong>attingere</strong> dati da uno o più <em>Data Product</em> messo a disposizione sulla <strong>piattaforma di integrazione condivisa</strong>, applicare le proprie logiche funzionali, <strong>generare</strong> nuovi dati da <strong>pubblicare</strong> a loro volta sulla piattaforma condivisa sotto forma di nuovi <em>Data Product</em>, come mostrato nella figura seguente.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/821/1*P7ouMmWC5-izKMt5Zg8nZQ.png" /><figcaption>Il ruolo della piattaforma di integrazione condivisa e self-serve nell’integrazione dei data product</figcaption></figure><p>Per rendere sostenibile la <strong>decentralizzazione delle responsabilità e della gestione dei <em>Data Product</em></strong> nei diversi <strong>team cross-funzionali</strong> dei domini di business, è <strong>fondamentale</strong> <strong>mascherare</strong> ai domini la <strong>complessità tecnica</strong> delle operazioni di Data Management comuni, arricchendo l’infrastruttura con <strong>servizi di integrazione intelligenti</strong>, capaci di <strong>automatizzare i task</strong> ripetitivi ed <strong>esenti da logiche di dominio</strong> specifiche e permettere ai domini di focalizzarsi sullo sviluppo di <em>Data Product</em> di qualità. La <strong>piattaforma di integrazione self-serve</strong> si pone questo obiettivo, pertanto richiede un <strong>team centrale di <em>Platform-Engineers</em> e <em>Data-Ops</em></strong> a cui affidare la responsabilità di <strong>ingegnerizzare la piattaforma</strong>, arricchire le <strong>feature di automazione</strong> e i servizi di utilità disponibili, oltre che implementare dei framework per fare enforcing continuo delle policy definite per garantire l’<strong>interoperabilità dei <em>Data Product</em></strong><em>.</em></p><p>A livello organizzativo il cambiamento che ne deriva è significativo: si passa dallo scenario precedente, in cui figure specializzate in<em> data engineering</em> e <em>data warehouse</em> erano riunite in un team centrale responsabile di implementare i flussi di integrazione dati di ambiti di dominio più disparati, senza conoscerne il significato funzionale, con un effort significativo di coordinamento e passaggi di consegna con i team di dominio, ad un nuovo scenario, in cui i <strong>team di dominio gestiscono in autonomia il ciclo dei dati end-to-end</strong>, avvalendosi del <strong>supporto di una piattaforma di integrazione</strong> altamente ingegnerizzata da un <strong>team di specialisti</strong> che si concentrano solamente sugli <strong>aspetti tecnici</strong>.</p><p>Un’altra caratteristica che si osserva sempre di più nel panorama digitale è la <strong>convergenza tra processi operazionali e use case analitici</strong>, abilitata dalle tecnologie che permettono di integrare servizi ed <strong>elaborare dati in real time</strong>. L’esempio più evidente in questo senso è dato dai sistemi di <em>real time recommendation</em> personalizzata, che sfruttano l’output di processi analitici a bassa latenza per abilitare azioni che hanno un impatto diretto sull’esperienza utente e, di conseguenza, sull’andamento del core business. Pertanto, la <strong>piattaforma di integrazione</strong> usata per condividere i <em>Data Product</em> deve supportare questi <strong>use case ibridi</strong>, a cavallo tra il contesto operazionale e il mondo di Data Management analitico.</p><p>Il ruolo della piattaforma self-serve è fondamentale per implementare la parte applicativa del quarto e ultimo pillar di <em>Data Mesh</em>, ovvero la <em>Federated Computational Governance, </em>che descriviamo nella sezione seguente.</p><h4>Federated Computational Governance</h4><p>L’ultimo pillar del paradigma <em>Data Mesh</em> pone il focus sul <strong>modello di governance</strong> che è necessario adottare in uno scenario in cui i team che operativamente gestiscono lo sviluppo e la manutenzione dei <em>Data Product </em>sono molteplici e le responsabilità sono distribuite.</p><p>Tradizionalmente si è portati a pensare che l’indipendenza di diversi gruppi di lavoro e la garanzia di rispettare standard e convenzioni comuni siano inversamente proporzionali, pertanto la soluzione a cui spesso si fa ricorso è quella di centralizzare la facoltà di definire le policy, implementare il modello dati e sviluppare le pipeline in un unico team, che applica gli standard condivisi e detiene i permessi per usare gli strumenti tecnologici aziendali, come i tool di integrazione e orchestrazione dati e i data store alla base del data lake e del data warehouse.</p><p>Tuttavia, l’<strong>obiettivo di democratizzazione e di diffusione dei dati come asset su larga scala</strong> a cui mira il paradigma <em>Data Mesh</em> poco si sposa con modelli organizzativi che prevedano soggetti centrali che rallentino il lavoro autonomo delle diverse anime funzionali dell’azienda. D’altra parte, affichè i <em>Data Product</em> non diventino dei silos ma formino realmente una rete di elementi interoperabili e riusabili, alcuni <strong>standard</strong> sulla definizione e il trattamento dei <strong>dati condivisi</strong> vanno garantiti, altrimenti si corre il rischio di generare prodotti di bassa qualità e poco affidabili.</p><p>Il paradigma <em>Data Mesh</em> propone di adottare un <strong><em>modello di governance computazionale federato</em></strong>, in cui si cerca di formare una <strong><em>community</em></strong> di persone che siano <strong>rappresentanti dei diversi team</strong> di dominio che sviluppano i <strong><em>Data Product</em></strong>, del team di <strong>P<em>latform Engineering</em></strong> che industrializza la piattaforma, del team di <strong><em>Enterprise Architecture</em></strong><em> </em>che definisce gli stili architetturali raccomandati, uniti a esperti di aree tematiche specifiche (<strong><em>Subject Matter Expert</em></strong>) come la <em>data privacy </em>e la compliance normativa. La community così costituita definisce in <strong>modo cooperativo e federato</strong> le <strong>best practice</strong>, i <strong>pattern</strong>, le <strong>guidelines</strong> e i <strong>guardrail</strong> basilari a cui tutti i team di dominio devono attenersi nella <strong>realizzazione dei propri <em>Data Product</em></strong><em> </em>e nell’<strong>interazione con la piattaforma di integrazione self-serve condivisa</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/821/1*9zltZbIMKqOb59pRDe0gag.png" /><figcaption>Modello di governance computazionale federato del Data Mesh</figcaption></figure><p>Alcuni esempi di standard e convenzioni possono essere:</p><ul><li>l’assegnazione<strong> </strong>delle<strong> ownership</strong> sui data product ai team di dominio;</li><li>la gestione<strong> </strong>degli<strong> identificativi</strong> delle entità dati core tra diversi sistemi;</li><li>la definizione di <strong>policy di evoluzione delle interfacce</strong> (data API e schemi degli eventi), <strong>regole di compatibilità</strong> backward e forward;</li><li>la definizione dei <strong>metadati comuni</strong> da inserire nei flussi dati per tracciare classificazione dati e lineage;</li><li>i <strong>pattern di integrazione</strong> da seguire per i diversi casi d’uso;</li><li>i processi per fare <strong>richiesta di accesso e sottoscrizione</strong> ad un dataset;</li><li>la scelta della <strong>mappa tecnologica</strong>;</li><li>il periodo di <strong>retention</strong> consentito e i vincoli per la rappresentazione in chiaro di dati sensibili.</li></ul><p>L’<strong>implementazione del modello di governance federato </strong>fa leva sulle <strong>funzionalità avanzate di automazione</strong> messe a disposizione dall’<strong>infrastruttura self-serve</strong> alla base: infatti, mentre la definizione delle regole deve essere fatta dalla community federata di soggetti incaricati appena descritta, l’applicazione dei guardrail e di alcuni tipi di policy, affinché sia robusta, affidabile, sicura e manutenibile, dovrebbe evitare il più possibile attività manuali, che spesso sono soggette a errori, ma essere automatizzata tramite script e utility basate su codice versionabile, portabile e riproducibile.</p><h4>Punti di contatto tra Data Mesh e Data Fabric</h4><p>Le caratteristiche proprie della piattaforma di integrazione self-serve prevista dal paradigma <strong><em>Data Mesh</em></strong> e il suo punto di contatto con l’implementazione effettiva della governance computazionale sembrano essere in linea con i pillar basilari di un design <strong><em>Data Fabric</em></strong> (fatta eccezione per il carattere federato del modello di governance <em>Data Mesh</em>): in questo senso, si può comprendere come <em>Data Mesh</em> e <em>Data Fabric</em> non siano due opposti, ma rappresentano <strong>due modelli che possono coesistere</strong>, come mostrato nella figura seguente.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/761/1*IC37FUDOB_JktMX6dSQObA.png" /><figcaption>Coesistenza tra modello Data Fabric e paradigma Data Mesh: il modello di governance computazionale diventa effettivamente federato con l’adozione di Data Mesh</figcaption></figure><p>Infatti il modello di piattaforma <strong><em>Data Fabric</em></strong> può rappresentare una tipologia di implementazione della <strong>componente tecnologico-infrastrutturale del <em>Data Mesh</em></strong>, fornendo una <strong>piattaforma di integrazione intelligente</strong>, che permette di rimuovere dai team che realizzano le data pipeline l’onere di replicare funzionalità comuni a complessità puramente tecnica, invarianti rispetto alle logiche funzionali di un particolare dominio.</p><p>Inoltre, la forte <strong>ricerca dell’automazione</strong> e la propensione all’<strong>apprendimento continuo metadata-driven</strong> che caratterizza una <em>Data Fabric</em> può essere, in un certo senso, un <strong>fattore abilitante per un cambiamento organizzativo</strong> in direzione <em>Data Mesh</em>, in particolare verso l’obiettivo di superare una divisione dei team per competenze tecniche specifiche verticali a favore della formazione di team cross-funzionali. Questo diventa possibile in quanto molte delle attività manuali normalmente affidate ad esperti di tecnologia o di aree specifiche del Data Management verrebbero automatizzate o gestite in parte tramite intelligenza artificiale dalle funzionalità della <em>Data Fabric</em>.</p><p>L’<strong>implementazione</strong> completa di un approccio <strong><em>Data Mesh</em></strong> può avvenire come fase successiva rispetto al consolidamento di una <em>Data Fabric</em>, nel momento in cui l’azienda è matura per introdurre un utilizzo della piattaforma di integrazione basato su un <strong>modello organizzativo decentralizzato</strong>, <strong>domain-oriented</strong> e controllato con un principio di governance computazionale federata.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=920e60f8aae" width="1" height="1" alt=""><hr><p><a href="https://medium.com/quantyca/il-data-mesh-e-il-consumo-self-service-dei-dati-come-prodotti-920e60f8aae">Il Data Mesh e il consumo self-service dei dati come prodotti</a> was originally published in <a href="https://medium.com/quantyca">Quantyca</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Il Data Mesh e la spinta verso una gestione dati distribuita]]></title>
            <link>https://medium.com/quantyca/il-data-mesh-e-la-spinta-verso-una-gestione-dati-distribuita-f7c069e80e59?source=rss----20e59f853442---4</link>
            <guid isPermaLink="false">https://medium.com/p/f7c069e80e59</guid>
            <category><![CDATA[data-mesh]]></category>
            <category><![CDATA[data-management]]></category>
            <category><![CDATA[data-as-a-product]]></category>
            <category><![CDATA[data-system]]></category>
            <category><![CDATA[data]]></category>
            <dc:creator><![CDATA[Giulio Scotti]]></dc:creator>
            <pubDate>Mon, 20 Jun 2022 08:46:40 GMT</pubDate>
            <atom:updated>2022-07-20T12:38:25.986Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*e9AD1xMUg3oHkZ_TkpJKUA.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@shttefan?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">SHTTEFAN</a> on <a href="https://unsplash.com/s/photos/mesh?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><h3>Abstract</h3><p>Questo è il sesto articolo di una serie di blog post finalizzata a trasmettere i punti salienti della visione delle architetture IT enterprise e del <em>Data Management </em>che, come <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a>, proponiamo ai nostri clienti.</p><p>Per chi non li avesse letti, consiglio di leggere gli articoli precedenti della serie, dai titoli:</p><ul><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/i-principi-di-un-moderno-data-management-7f8da5df014a"><strong><em>I principi di un moderno Data Management</em></strong></a><strong><em>”</em></strong><em>: </em>descrive le sfide dell’IT nella nuova era di digitalizzazione e i driver che spingono verso la ricerca di un cambio di paradigma nella progettazione delle architetture dati</li><li><a href="https://medium.com/quantyca/lapproccio-data-centrico-che-cambia-l-it-fa33404a67c3"><strong><em>“L’approccio data-centrico che cambia l’IT”</em></strong></a><em>: </em>descrive i principi e i vantaggi di un orientamento di progettazione delle architetture IT che considera i dati come asset centrale e riusabile e le applicazioni come elementi effimeri che producono o consumano dati di interesse per l’intera azienda</li><li><a href="https://medium.com/quantyca/lesigenza-di-governo-nella-gestione-dei-dati-e5e71af9162c"><strong><em>“L’esigenza di governo nella gestione dei dati”</em></strong></a>: descrive i principali aspetti di governance da considerare per abilitare architetture IT data centriche e distribuite e mantenere il controllo dei dati a riposo e in movimento</li><li><a href="https://medium.com/quantyca/ladattabilit%C3%A0-della-piattaforma-di-integrazione-in-un-modello-data-fabric-8fa3d76d9667"><strong>“L’adattabilità della piattaforma di integrazione in un modello Data Fabric”</strong></a>: descrive un modello emergente di progettazione delle piattaforme dati basato sull’uso avanzato dei metadati per rendere la piattaforma più automatizzata, self-service e versatile alle diverse esigenze degli utilizzatori</li><li><a href="https://medium.com/quantyca/il-domain-driven-design-applicato-ai-dati-per-una-maggiore-agilit%C3%A0-nella-progettazione-197823eac2a0"><strong>“Il Domain Driven Design applicato ai dati per una maggiore agilità nella progettazione”</strong></a>: descrive i principi basilari del modello di progettazione software <em>Domain Driven Design</em>, che ha introdotto l’idea della decentralizzazione delle responsabilità e ha avuto grande influenza sul Data Management</li></ul><p>Negli articoli successivi chiuderemo la discussione sui pillar del Data Mesh e trarremo le conclusioni su quella che può essere una strategia di <em>Data Management</em> in linea con le esigenze delle organizzazioni moderne.</p><p>I prossimi due articoli saranno:</p><ul><li><a href="https://medium.com/quantyca/il-data-mesh-e-il-consumo-self-service-dei-dati-come-prodotti-920e60f8aae"><em>“</em><strong><em>Il Data Mesh e il principio di consumo self-service dei dati come prodotti”</em></strong></a>: descrive la visione dei dati come prodotti, che formano una rete di <em>domain-oriented Data Product </em>e sono fruiti tramite una piattaforma self-service e un modello di governance federato;</li><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/la-data-strategy-come-motore-dellit-c6eca0321c03"><strong><em>La Data Strategy come motore dell’IT</em></strong></a><strong><em>”</em></strong><em>: </em>chiude la serie con un riassunto dei principi architetturali che riteniamo basilari per una strategia di <em>Data Management</em> efficace e una visione del ruolo dell’<em>Enterprise Architect</em> nel delineare l’evoluzione delle architetture dati</li></ul><h3>Data Mesh: un radicale cambio di paradigma verso la democratizzazione dei dati</h3><p>Nell’ambito dello sviluppo e dell’integrazione di applicazioni i principi del <em>Domain Driven Design </em>si sono concretizzati nella tendenza ad approcciare i progetti software distribuendo le responsabilità sui diversi <em>Bounded Context</em> a team cross-funzionali, allineati ai domini di business, che gestiscono il ciclo di vita end-to-end dei (micro)servizi di propria competenza: si è affermato pertanto un modello organizzativo decentralizzato e domain-oriented.</p><p>Formare dei team cross-funzionali significa prevedere all’interno del team stesso figure con specializzazione funzionale e tecnica differente: sviluppatori (<em>Dev), </em>specialisti di <em>Continuous Integration</em> e C<em>ontinuous Deployment (Ops), </em>specialisti di amministrazione di database (d<em>badmin), </em>esperti di web user interface e user experience (<em>UI/UX</em>), esperti di dominio (<em>Business) </em>e subject matter expert (<em>SME</em>) di tematiche specifiche come, ad esempio, la web security.</p><p>Al contrario, nell’ambito del <em>Data Management</em> e delle <em>analytics</em>, si è consolidato negli anni un <strong>paradigma fortemente centralizzato</strong>, sia sotto l’aspetto tecnologico e delle piattaforme, sia sotto l’aspetto organizzativo. Esaminando infatti lo scenario tradizionale di suddivisione delle responsabilità sulle fasi di una data pipeline che abilita casi d’uso di <em>Business Intelligence</em> o <em>Advanced Analytics, </em>si delinea facilmente il quadro mostrato nella figura seguente.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vWtQgo-D7wSA-1MLDo_v3Q.png" /><figcaption>Modello organizzativo di una data pipeline centralizzata tradizionale</figcaption></figure><p>Si nota che la pipeline è composta da tre blocchi principali:</p><ul><li>ad un’estremità della pipeline si collocano le <strong>applicazioni sorgenti (<em>data provider</em>)</strong> e i relativi team di dominio che le gestiscono, i quali considerano i <strong>dati</strong> prodotti dalle applicazioni di propria competenza come un <strong><em>by-product</em></strong><em>,</em> di cui vengono chieste delle estrazioni per esigenze di altri gruppi di lavoro, senza avere visibilità sulle finalità dell’utilizzatore finale e sulle modalità di utilizzo;</li><li>nella parte centrale della pipeline si collocano una serie di team con una forte caratterizzazione tecnica e competenze specifiche su determinate aree di <em>Data Management</em>, che si mappano sulle diverse fasi di <em>ETL / ELT</em>: il team di <strong><em>Data Engineering</em></strong> si occupa dello <strong>sviluppo della pipeline</strong>, oltre che della definizione e ottimizzazione del <strong>modello dati</strong>, il team esperto di tecnologie <strong><em>Big Data</em></strong> si occupa dell’organizzazione e l’elaborazione dei dati nel <strong><em>Data Lake</em></strong>, il team di <strong><em>Data Governance</em></strong> definisce centralmente le <strong>policy e gli standard</strong> di gestione dei dati, il team di <strong><em>Data Security e Data Privacy</em></strong> stabilisce quali <strong>tecniche di <em>Data Protection</em></strong> implementare sui dati personali e quali politiche di <strong>controllo di accesso</strong> prevedere. A questi team nel loro complesso viene chiesto di integrare e consolidare una serie di entità dati di cui non conoscono il significato di business, nè le finalità e le modalità di utilizzo da parte degli utilizzatori finali che ne hanno fatto richiesta;</li><li>all’estremità finale della pipeline si colloca una pletora di team di analisti, esperti di <strong><em>Business Intelligence</em> e <em>Data Science</em></strong>, che chiedono ai team centrali responsabili dell’integrazione la messa a disposizione dei dati, esprimendo ciascuno le sue esigenze in termini di priorità e deadline di delivery: questi team non hanno alcuna visibilità sulla provenienza, sulla qualità e sull’affidabilità dei dati che vengono loro forniti.</li></ul><p>A <strong><em>livello architetturale e tecnologico</em></strong>, si è passati dalle prime architetture incentrate sull’<strong><em>Enterprise Data Warehouse</em></strong>, in cui si mirava alla raccolta e l’integrazione di dati consolidati e ben strutturati in un repository centralizzato quale era appunto l’EDW, che avrebbe assolto a tutte le necessità analitiche, all’avvento dei <strong><em>Big Data</em></strong><em> </em>e alla diffusione dei <strong><em>Data Lake</em></strong>, in cui si pensava di poter superare i limiti del <em>Data Warehouse</em> collezionando nel lake ingenti moli di dati, non obbligatoriamente strutturati, e demandando a <em>query time (schema on read)</em> l’onere di interpretarne correttamente il contenuto ed estrarne le informazioni di interesse. Successivamente sono state proposte le più moderne architetture <strong><em>Data Lakehouse</em></strong>, che cercano di sfruttare i punti di forza di entrambe le famiglie di tecnologie che si erano affermate in precedenza (Data Warehouse, tipicamente basati su data store colonnari, MPP e OLAP da un lato, cloud object store, virtualizzatori, query engine Big Data e framework di calcolo distribuito dall’altro), per fornire una migliore esperienza analitica a supporto di vari use case.</p><p>In ogni caso, le evoluzioni tecnologiche che si sono succedute hanno una caratteristica comune, ovvero la presenza di un <strong>componente di data storage centralizzato</strong> che avrebbe la funzione di rappresentare tutti i dati aziendali in un <strong>unico modello enterprise-wide</strong>. Si è però osservato che, con l’aumentare del numero e della varietà delle applicazioni <em>data provider</em> e <em>data consumer</em>, ma soprattutto della complessità di dominio, in molti contesti <strong>non è più realistico pensare di progettare un unico modello dati aziendale</strong>, in quanto non riuscirebbe a rappresentare in modo esaustivo le sfaccettature delle diverse aree del dominio e diventerebbe un punto di accoppiamento forte tra le diverse sorgenti e i diversi target, rendendo poco agile l’evoluzione della base dati.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/669/1*gm5llIuwdmcTJd7topjmUQ.png" /><figcaption>Modello dati enterprise centralizzato, tipico dell’approccio tradizionale di data management</figcaption></figure><p>Zhamak Dehghani, negli articoli <a href="https://martinfowler.com/articles/data-monolith-to-mesh.html"><em>How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh</em></a> e <a href="https://martinfowler.com/articles/data-mesh-principles.html"><em>Data Mesh Principles and Logical Architecture</em></a>,<em> </em>ha proposto un <strong>cambio di paradigma radicale</strong> per il mondo del <em>Data Management</em>, che ha poi ripreso ed esteso nel libro <a href="https://learning.oreilly.com/library/view/data-mesh/9781492092384/"><em>Data Mesh</em></a><em>. </em>Il paradigma, chiamato appunto <strong><em>Data Mesh</em></strong>, si basa su quattro pillar basilari:</p><ul><li><em>domain ownership</em></li><li><em>data as a product</em></li><li><em>selve-serve data platform</em></li><li><em>federated computational governance</em></li></ul><p>In <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a> riteniamo che le idee alla base del paradigma<em> Data Mesh</em> siano interessanti e che questo rappresenti una direzione di pensiero architetturale e organizzativo per il mondo del <em>Data Management</em> in linea con le aspettative di un business che intende essere sempre più data-driven. Nella prossima sezione introduciamo il primo pillar, quello della <em>Domain Ownership, </em>lasciando al prossimo articolo la discussione sugli altri.</p><h4>Domain Ownership</h4><p>Il paradigma <em>Data Mesh</em> propone di ricondurre la <strong>responsabilità end-to-end sui dati analitici</strong> al team che gestisce il <strong>dominio di business</strong> (il <em>Bounded Context, </em>in termini <em>Domain Driven Design) </em>a cui i dati appartengono.</p><p>Invece di occuparsi solamente dello sviluppo del software di dominio e delle integrazioni operazionali, lasciando l’onere di estrarre, integrare, consolidare e distribuire i dati ad un team centrale di data engineer non a conoscenza delle logiche di dominio e del significato semantico dei dati, il team che gestisce il <strong><em>Bounded Context</em></strong> e le sue applicazioni dovrebbe prendersi in carico anche la <strong>generazione, la condivisione e la manutenzione dei dati analitici</strong> di propria competenza. In quest’ottica, i domini di business richiedono di essere gestiti da team cross-funzionali non solo sul piano dei sistemi operazionali, ma anche per il mondo del data management, affiancando allo staff Dev-Ops che gestisce le applicazioni di dominio figure di data engineer, data-ops, data analyst, data scientist ed esperti di data privacy.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1001/1*DRGyURcHB5m3REHFk6DW_g.png" /><figcaption>Modello organizzativo decentralizzato di data management in un’ottica domain-oriented</figcaption></figure><p>Avendo una conoscenza diretta del significato dei dati prodotti dal <em>Bounded Context</em> e ricevendo direttamente le richieste di utilizzo dei dati di propria competenza da parte dei team consumatori (analisti, data scientist, partner esterni, ad esempio), il team responsabile di un dominio di business può <strong>condividere</strong> i dati core di dominio secondo i principi dei <strong><em>Data On The Outside</em></strong><em> </em>in modo maggiormente efficace e <strong>consumer-oriented</strong>.</p><p>Un altro obiettivo di questo principio è quello di <strong>rimuovere colli di bottiglia</strong> nella gestione del ciclo di vita dei dati, rappresentati dai team centrali, aumentando l’autonomia, l’agilità e la velocità di sperimentazione e delivery di servizi data-driven a beneficio del business aziendale.</p><p>Il raggiungimento di un modello organizzativo di <em>Data Management</em> completamente decentralizzato può avvenire in modo incrementale, passando per periodi transitori più o meno lunghi in cui l’azienda, in base alle esigenze particolari e ai vincoli del contesto in cui opera, può strutturarsi con <strong>modelli ibridi</strong>, in base ai quali la decentralizzazione delle responsabilità in ottica domain-oriented viene applicata solo ad alcune tipologie di dati e non ad altre. Una possibile distinzione può essere data dalla <strong>gestione dei dati grezzi</strong>, intesi come i dati che spesso vengono estratti dai sistemi data provider, non secondo i principi di <em>Data On The Outside</em> consumer-oriented ma secondo un approccio di integrazione tradizionale, dai <strong>dati elaborati</strong>, intesi come gli <strong>eventi di dominio</strong>, che sono già passati per le fasi di modellazione semantica, standardizzazione e cleansing, o gli <strong>eventi di business arricchiti</strong> che sono pronti a supportare le analisi.</p><p>La figura seguente rappresenta alcuni esempi di scenari che si possono collocare sulla scala di <em>Data Mesh</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/513/1*lrti0nn5PFu3Gr4kgCI1mg@2x.jpeg" /><figcaption>Matrice dei modelli organizzativi di data mesh. Fonte: <a href="https://towardsdatascience.com/data-mesh-applied-21bed87876f2">Data Mesh Applied</a></figcaption></figure><p>Il quadrante in basso a sinistra nella figura rappresenta lo scenario di completa assenza di <em>Data Mesh</em>, in cui sia l’offloading dei dati dalle sorgenti e l’alimentazione della data platform, così come lo sviluppo dei data mart per le analisi sono gestiti da team centrali, specialisti delle funzioni di data engineering e data analysis.</p><p>Il quadrante in basso a destra nella figura rappresenta un modello ibrido verso il <em>Data Mesh</em>, in cui le prime fasi di estrazione dati dalle sorgenti e alimentazione dei livelli bassi della data platform sono ancora in carico ad un team centrale che, ad esempio, racchiude le competenze sulle tecnologie di elaborazione dei big data e sulle tecniche di data offloading da sistemi legacy, mentre le fasi di alimentazione dei modelli dimensionali specifici dei diversi domini è gestito dai team verticali delle singole linee di business, in modo indipendente e federato, ciascuno secondo le particolari esigenze e priorità.</p><p>Il quadrante in alto a sinistra rappresenta invece la situazione opposta, in cui i diversi <em>Bounded Context</em> hanno la responsabilità di produrre sulla piattaforma di integrazione dati i <em>Data On The Outside</em> dei rispettivi domini, prevedendo le fasi di cleansing e standardizzazione del formato e della semantica internamente ai <em>Bounded Context</em>, precedentemente alla pubblicazione dei dati sulla piattaforma di integrazione; al contrario, la fase di consolidamento dei dati e la traduzione in un modello analitico enterprise è ancora gestita da un team centrale di esperti di modellazione di data warehouse. Questo modello può essere utile quando si vuole centralizzare la gestione dei dati elaborati per dare garanzie forti di consistenza e integrità dei dati messi a disposizione delle analisi.</p><p>Il quadrante in alto a destra rappresenta lo scenario <em>Data Mesh</em> puro, in cui sia i dati grezzi sia i dati elaborati sono gestiti in modo decentralizzato, portando alla formazione di una rete di <strong><em>architectural quanta</em></strong> rappresentati da domain-oriented <strong><em>Data Product</em></strong>, la cui responsabilità è assegnata ai team di dominio.</p><p>Nel prossimo articolo tratteremo gli altri tre pillar, rispettivamente <em>Data as a Product, Self-Serve Data Platform</em> e<em> Federated Computational Governance, </em>tracciando anche un confronto con il modello di piattaforma <em>Data Fabric</em>, discusso in uno dei precedenti articoli.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f7c069e80e59" width="1" height="1" alt=""><hr><p><a href="https://medium.com/quantyca/il-data-mesh-e-la-spinta-verso-una-gestione-dati-distribuita-f7c069e80e59">Il Data Mesh e la spinta verso una gestione dati distribuita</a> was originally published in <a href="https://medium.com/quantyca">Quantyca</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Il Domain Driven Design applicato ai dati per una maggiore agilità nella progettazione]]></title>
            <link>https://medium.com/quantyca/il-domain-driven-design-applicato-ai-dati-per-una-maggiore-agilit%C3%A0-nella-progettazione-197823eac2a0?source=rss----20e59f853442---4</link>
            <guid isPermaLink="false">https://medium.com/p/197823eac2a0</guid>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[domain-driven-design]]></category>
            <category><![CDATA[data-mesh]]></category>
            <category><![CDATA[data]]></category>
            <dc:creator><![CDATA[Giulio Scotti]]></dc:creator>
            <pubDate>Wed, 08 Jun 2022 10:22:39 GMT</pubDate>
            <atom:updated>2022-07-20T12:38:02.302Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0KRRBHdcgth_w2dKeIMbQA.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@sigmund?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Sigmund</a> on <a href="https://unsplash.com/s/photos/divide-et-impera?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><h3>Abstract</h3><p>Questo è il quinto articolo di una serie di blog post finalizzata a trasmettere i punti salienti della visione delle architetture IT enterprise e del <em>Data Management </em>che, come <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a>, proponiamo ai nostri clienti.</p><p>Per chi non li avesse letti, consiglio di leggere gli articoli precedenti della serie, dai titoli:</p><ul><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/i-principi-di-un-moderno-data-management-7f8da5df014a"><strong><em>I principi di un moderno Data Management</em></strong></a><strong><em>”</em></strong><em>: </em>descrive le sfide dell’IT nella nuova era di digitalizzazione e i driver che spingono verso la ricerca di un cambio di paradigma nella progettazione delle architetture dati</li><li><a href="https://medium.com/quantyca/lapproccio-data-centrico-che-cambia-l-it-fa33404a67c3"><strong><em>“L’approccio data-centrico che cambia l’IT”</em></strong></a><em>: </em>descrive i principi e i vantaggi di un orientamento di progettazione delle architetture IT che considera i dati come asset centrale e riusabile e le applicazioni come elementi effimeri che producono o consumano dati di interesse per l’intera azienda</li><li><a href="https://medium.com/quantyca/lesigenza-di-governo-nella-gestione-dei-dati-e5e71af9162c"><strong><em>“L’esigenza di governo nella gestione dei dati”</em></strong></a>: descrive i principali aspetti di governance da considerare per abilitare architetture IT data centriche e distribuite e mantenere il controllo dei dati a riposo e in movimento</li><li><a href="https://medium.com/quantyca/ladattabilit%C3%A0-della-piattaforma-di-integrazione-in-un-modello-data-fabric-8fa3d76d9667"><strong>“L’adattabilità della piattaforma di integrazione in un modello Data Fabric”</strong></a>: descrive un modello emergente di progettazione delle piattaforme dati basato sull’uso avanzato dei metadati per rendere la piattaforma più automatizzata, self-service e versatile alle diverse esigenze degli utilizzatori</li></ul><p>Negli articoli successivi tratteremo ulteriori aspetti che riteniamo interessanti per costruire piattaforme dati in grado di rispondere alle esigenze pressanti di un business che sta diventando sempre più data-driven.</p><p>Questo l’elenco dei prossimi articoli:</p><ul><li><a href="https://medium.com/quantyca/il-data-mesh-e-la-spinta-verso-una-gestione-dati-distribuita-f7c069e80e59"><strong><em>“Il Data Mesh e la spinta verso una gestione dati distribuita”</em></strong></a>: descrive le ragioni che hanno contribuito alla proposta del paradigma <em>Data Mesh,</em> in favore di una gestione dei dati decentralizzata e domain-oriented per ottenere scalabilità organizzativa</li><li><a href="https://medium.com/quantyca/il-data-mesh-e-il-consumo-self-service-dei-dati-come-prodotti-920e60f8aae"><strong><em>“Il Data Mesh e il principio di consumo self-service dei dati come prodotti”</em></strong></a>: descrive la visione dei dati come prodotti, che formano una rete di <em>domain-oriented Data Product </em>e sono fruiti tramite una piattaforma self-service e un modello di governance federato;</li><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/la-data-strategy-come-motore-dellit-c6eca0321c03"><strong><em>La Data Strategy come motore dell’IT</em></strong></a><strong><em>”</em></strong><em>: </em>chiude la serie con un riassunto dei principi architetturali che riteniamo basilari per una strategia di <em>Data Management</em> efficace e una visione del ruolo dell’<em>Enterprise Architect</em> nel delineare l’evoluzione delle architetture dati</li></ul><h3>Il Domain Driven Design e la decentralizzazione delle responsabilità</h3><p>Nel ventennio scorso, nell’ambito dello sviluppo software, si è affermato un modello di progettazione software chiamato <strong><em>Domain Driven Design (DDD)</em></strong>, proposto inizialmente da <a href="https://learning.oreilly.com/library/view/domain-driven-design-tackling/0321125215/">Eric Evans</a> nel 2003 e esteso successivamente da <a href="https://learning.oreilly.com/library/view/domain-driven-design-distilled/9780134434964/">Vaughn Vernon</a>; in particolare, l’approccio ha visto una nuova ondata di diffusione negli ultimi anni con l’adozione sempre più marcata dello stile architetturale a <strong><em>microservizi</em></strong>. Il modello <em>DDD</em> propone alcuni strumenti di progettazione strategica e altri di progettazione tattica: in questo articolo discuteremo solo il sottoinsieme dei concetti di interesse per le implicazioni sui processi di <em>Data Management</em>.</p><p>Il <em>Domain Driven Design</em> si fonda sull’idea che un dominio applicativo complesso difficilmente può essere implementato da un unico modello software, in quanto uno stesso<strong> concetto di business</strong> può assumere <strong>significati e proprietà differenti</strong> in base al <strong>particolare contesto</strong> in cui viene utilizzato.</p><p>Per chiarire il concetto, facciamo l’esempio della <em>Transazione di Vendita per </em>un’azienda che opera nel settore della grande distribuzione. La prospettiva di interesse e, di conseguenza, le proprietà rilevanti dell’entità <em>Transazione di Vendita </em>nell’ambito delle analisi commerciali e della valutazione dei fornitori possono essere abbastanza differenti dal significato con cui si usa il medesimo termine nel contesto della segmentazione clienti e dei processi di loyalty, piuttosto che della gestione della logistica dei magazzini o, ancora, dei processi finanziari e contabili.</p><p>Nell’esempio illustrato, sarebbe arduo rappresentare le diverse accezioni del concetto di <em>Transazione di Vendita </em>in un’unica classe o gerarchia di classi (ipotizzando che si scelga un paradigma di programmazione ad oggetti): uno sforzo in tale direzione produrrebbe un’entità dal significato sfumato e ambiguo, che non soddisferebbe le esigenze specifiche dei vari contesti di dominio e rischierebbe di dar vita ad un modello software complesso, ad alto accoppiamento e senza nessun confine logico tra le sue sottoparti.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/431/1*8K9oPD-TGwFm4F4yjiMGQA.png" /><figcaption>Progettazione del software che non segue il modello Domain Driven Design.</figcaption></figure><p>Un modello simile ha spesso conseguenze negative sulla <strong>manutenibilità</strong> e sull’<strong>agilità di evoluzione </strong>dell’applicazione: diversi team presumibilmente andrebbero a lavorare sullo stesso progetto software, gli impatti di una modifica creerebbero, con buona probabilità, effetti a cascata su diverse parti del modello di difficile governo. Questi comporterebbero interdipendenze e necessità di coordinamento tra team di lavoro che avrebbero l’effetto di rallentare la delivery delle funzionalità richieste dal business e aumentare i costi del progetto.</p><p>Il <em>Domain Driven Design </em>propone di andare in direzione opposta: il <strong>dominio applicativo</strong> complessivo viene scomposto in diversi <strong><em>Bounded Context</em></strong><em>, </em>il cui confine logico è definito in modo esplicito, all’interno di ciascuno dei quali il significato di un’entità del modello è inequivocabile e univoco, specifico del particolare contesto. L’insieme dei termini per cui vale un determinato significato semantico all’interno di un <em>Bounded Context </em>è detto <strong><em>Ubiquitous Language</em></strong><em>, </em>in quanto è <strong>business-oriented</strong> e si permea sia nel linguaggio comune del team che gestisce il Bounded Context, sia nel codice applicativo, nel modello concettuale, logico e fisico del software e dei dati alla base, nel nome degli eventi, delle API e in tutti gli aspetti implementativi.</p><p>Tornando all’esempio considerato in precedenza<em>,</em> in ciascun<em> Bounded Context </em>di interesse verrà definita un’entità<em> Transazione di Vendita, </em>indipendente e disaccoppiata dalla medesima entità negli altri<em> Bounded Context: </em>nel contesto dei processi commerciali verranno potenzialmente rappresentati gli attributi della transazione di rilievo per analizzare e gestire i fornitori, nel contesto della gestione loyalty e segmentazione clienti si modelleranno gli attributi che permettono di ricollegare la transazione ad uno specifico cliente e al suo comportamento di acquisto. Nel contesto della logistica saranno invece definiti gli attributi necessari per gestire l’inventario, i rifornimenti, i movimenti di merce; infine, nel contesto finanziario / contabile si porrà il focus sugli attributi relativi ai fattori di cambio, alla percentuale di tassazione, al valore a costo dei prodotti venduti.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/606/1*Q-zzfwekZ98lGuI-7akhuA.png" /><figcaption>Progettazione software che scompone lo spazio soluzione in Bounded Context, secondo i principi del Domain Driven Design</figcaption></figure><p>In ciascun contesto il significato semantico del linguaggio è protetto dalle perturbazioni esterne e, ogni qual volta è necessaria un’<strong>interazione</strong> (e di conseguenza uno scambio di informazioni) tra diversi <em>Bounded Context</em>, deve essere prevista una <strong>trasformazione di contesto</strong>, detta <strong><em>Context Mapping</em></strong>, per permettere di adattare il significato delle entità condivise proprio del contesto sorgente nel linguaggio adatto per l’utilizzo da parte del contesto ricevente. Esistono diverse forme di <em>Context Mapping</em>, da quelle a più alto accoppiamento, ad esempio il mapping di tipo <em>Shared Kernel</em>, in cui due Bounded Context condividono un sottoinsieme del modello software e si coordinano per evolverlo, a quelle a più basso accoppiamento. Un esempio comune è il mapping che prevede un <strong><em>Anti Corruption Layer</em></strong>: all’ingresso del Bounded Context ricevente viene sviluppato un livello software per tradurre il linguaggio straniero e potenzialmente contaminante del Bounded Context sorgente nel modello software autentico e puro del contesto ricevente: questo è particolarmente utile negli scenari in cui il contesto sorgente è un sistema <strong><em>legacy</em></strong> con un modello <strong><em>Big Ball Of Mud</em></strong> e il contesto ricevente è un <strong>microservizio</strong> moderno.</p><p>Il Domain Driven Design si basa pertanto su una strategia <strong><em>Divide Et Impera</em></strong>, per permettere di <strong>scomporre lo spazio problema</strong> <strong>(il <em>dominio</em>)</strong> in componenti più piccole (dette <strong><em>Sottodomini</em></strong>): la <strong>soluzione</strong> verrà implementata per mezzo di diversi <strong><em>Bounded Context</em></strong>, ciascuno dei quali possiede un <strong>perimetro semantico</strong> e un linguaggio caratterizzante e unico, l’<strong><em>Ubiquitous Language</em></strong>.</p><p>I vantaggi di un simile approccio sono molteplici: in primo luogo è possibile assegnare un <strong>singolo Bounded Context</strong> ad un <strong>team specifico</strong> e i diversi team hanno la possibilità di <strong>evolvere e controllare il software e il modello dati</strong> del Bounded Context <strong>in modo autonomo</strong>, secondo il proprio passo di delivery, minimizzando l’interdipendenza con altri team e la necessità di coordinamento; in secondo luogo, la <strong>complessità di dominio </strong>dei singoli Bounded Context <strong>rimane entro limiti gestibili</strong>, evitando di creare software troppo estesi e con dipendenze intrinseche che ne rendono difficile l’evoluzione. Infine, il <strong>significato degli elementi del modello</strong> e dei concetti semantici dentro il perimetro del Bounded Context rimane <strong>puro, autentico e specifico</strong> del contesto, evitando di creare ambiguità o eccessive generalizzazioni finalizzate a rappresentare sfaccettature diverse, che spesso sono causa di inconsistenze.</p><p>Sotto l’aspetto delle integrazioni di dati e servizi, il Domain Driven Design ha delle implicazioni rilevanti: infatti, mentre all’interno del perimetro di un <em>Bounded Context</em> è ammissibile che le applicazioni (ad esempio i microservizi) comunichino in modo diretto, tramite chiamate API sincrone o condivisione di database, in quanto le applicazioni ricadono sotto la ownership di un unico team, è fortemente raccomandato che le <strong>integrazioni tra <em>Bounded Context</em> differenti</strong> siano il più possibile a <strong>basso accoppiamento</strong>, comunicando tramite <strong>interfacce</strong> stabili e che astraggano la complessità i dettagli implementativi privati del <em>Bounded Context</em>. Solitamente, per la comunicazione inter <em>Bounded Context</em> si usa lo <strong>stile event-driven</strong>, basato su pubblicazione e sottoscrizione di comandi ed <strong>eventi di dominio</strong> tramite <strong>broker di messaggi (data bus)</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/606/1*C_loQVs9TUczw6kcdv7SVw.png" /><figcaption>Integrazione tra diversi Bounded Context, basata sulla condivisione di eventi di dominio tramite una piattaforma di messaging.</figcaption></figure><p>Con l’affermazione dello <strong><em>stile architetturale a microservizi</em></strong> per lo sviluppo di applicazioni moderne e scalabili, è diventato possibile applicare in modo più efficace il Domain Driven Design rispetto che in precedenza: l’intero progetto software è implementato da <strong>diverse unità di deploy</strong>, i microservizi, detti <strong><em>architectural quanta</em></strong>, ciascuno dei quali afferisce ad un determinato <em>Bounded Context</em> ed è gestito in modo autonomo dal team owner del <em>Bounded Context</em>. Accettando di scomporre un’unica applicazione logica in diverse unità di deploy fisiche si rende ancora più forte l’<strong>indipendenza dei Bounded Context</strong>, in quanto questa si concretizza in una <strong>scelta indipendente degli stack tecnologici</strong> con cui implementare i servizi e in una <strong>segregazione fisica</strong> degli ambienti, della base di codice e degli strumenti di lavoro.</p><p>L’orientamento <strong><em>Domain Driven Design</em></strong> non solo ha prodotto risultati immediati nel mondo dello sviluppo software, ma ha anche generato un’influenza significativa negli studi innovativi sulle <strong>tecniche di <em>Data Management</em></strong>: si è iniziato a comprendere che la <strong>decentralizzazione delle responsabilità sui dati</strong> e l’<strong>organizzazione domain-oriented</strong> potesse dare benefici anche nella gestione di tutte le fasi del ciclo di vita del dato, dall’offloading dalle sorgenti, passando per le fasi di integrazione e trasformazione, fino all’utilizzo da parte delle applicazioni analitiche. Il risultato è stata la proposta di un <strong>nuovo paradigma</strong> per la gestione dei dati, chiamato <strong><em>Data Mesh, </em></strong>che discuteremo nei prossimi articoli.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=197823eac2a0" width="1" height="1" alt=""><hr><p><a href="https://medium.com/quantyca/il-domain-driven-design-applicato-ai-dati-per-una-maggiore-agilit%C3%A0-nella-progettazione-197823eac2a0">Il Domain Driven Design applicato ai dati per una maggiore agilità nella progettazione</a> was originally published in <a href="https://medium.com/quantyca">Quantyca</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L’adattabilità della piattaforma di integrazione in un modello Data Fabric]]></title>
            <link>https://medium.com/quantyca/ladattabilit%C3%A0-della-piattaforma-di-integrazione-in-un-modello-data-fabric-8fa3d76d9667?source=rss----20e59f853442---4</link>
            <guid isPermaLink="false">https://medium.com/p/8fa3d76d9667</guid>
            <category><![CDATA[data-fabric]]></category>
            <category><![CDATA[dataops]]></category>
            <category><![CDATA[data-integration]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[data-orchestration]]></category>
            <dc:creator><![CDATA[Giulio Scotti]]></dc:creator>
            <pubDate>Wed, 25 May 2022 07:46:03 GMT</pubDate>
            <atom:updated>2022-07-20T12:37:38.729Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*w4_-bDcr7_nlltAiyq8rwQ.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@rgaleria?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Ricardo Gomez Angel</a> on <a href="https://unsplash.com/s/photos/factory?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><h3>Abstract</h3><p>Questo è il quarto articolo di una serie di blog post finalizzata a trasmettere i punti salienti della visione delle architetture IT enterprise e del <em>Data Management </em>che, come <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a>, proponiamo ai nostri clienti.</p><p>Per chi non li avesse letti, consiglio di leggere gli articoli precedenti della serie, dai titoli:</p><ul><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/i-principi-di-un-moderno-data-management-7f8da5df014a"><strong><em>I principi di un moderno Data Management</em></strong></a><strong><em>”</em></strong><em>: </em>descrive le sfide dell’IT nella nuova era di digitalizzazione e i driver che spingono verso la ricerca di un cambio di paradigma nella progettazione delle architetture dati</li><li><a href="https://medium.com/quantyca/lapproccio-data-centrico-che-cambia-l-it-fa33404a67c3"><strong><em>“L’approccio data-centrico che cambia l’IT”</em></strong></a><em>: </em>descrive i principi e i vantaggi di un orientamento di progettazione delle architetture IT che considera i dati come asset centrale e riusabile e le applicazioni come elementi effimeri che producono o consumano dati di interesse per l’intera azienda</li><li><a href="https://medium.com/quantyca/lesigenza-di-governo-nella-gestione-dei-dati-e5e71af9162c"><strong><em>“L’esigenza di governo nella gestione dei dati”</em></strong></a>: descrive i principali aspetti di governance da considerare per abilitare architetture IT data centriche e distribuite e mantenere il controllo dei dati a riposo e in movimento</li></ul><p>Negli articoli successivi tratteremo diversi aspetti che riteniamo interessanti per costruire piattaforme dati in grado di rispondere alle esigenze pressanti di un business che sta diventando sempre più data-driven.</p><p>Questo l’elenco dei prossimi articoli:</p><ul><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/il-domain-driven-design-applicato-ai-dati-per-una-maggiore-agilit%C3%A0-nella-progettazione-197823eac2a0"><strong><em>Il Domain Driven Design applicato ai dati per una maggiore agilità nella progettazione</em></strong></a><strong><em>”</em></strong><em>: </em>riporta i punti fondamentali del modello di sviluppo software <em>Domain Driven Design</em>, che ha influenzato la proposta di nuovi modelli organizzativi anche per il <em>Data Management</em></li><li><a href="https://medium.com/quantyca/il-data-mesh-e-la-spinta-verso-una-gestione-dati-distribuita-f7c069e80e59"><strong><em>“Il Data Mesh e la spinta verso una gestione dati distribuita”</em></strong></a>: descrive le ragioni che hanno contribuito alla proposta del paradigma <em>Data Mesh,</em> in favore di una gestione dei dati decentralizzata e domain-oriented per ottenere scalabilità organizzativa</li><li><a href="https://medium.com/quantyca/il-data-mesh-e-il-consumo-self-service-dei-dati-come-prodotti-920e60f8aae"><strong><em>“Il Data Mesh e il principio di consumo self-service dei dati come prodotti”</em></strong></a>: descrive la visione dei dati come prodotti, che formano una rete di <em>domain-oriented Data Product </em>e sono fruiti tramite una piattaforma self-service e un modello di governance federato;</li><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/la-data-strategy-come-motore-dellit-c6eca0321c03"><strong><em>La Data Strategy come motore dell’IT</em></strong></a><strong><em>”</em></strong><em>: </em>chiude la serie con un riassunto dei principi architetturali che riteniamo basilari per una strategia di <em>Data Management</em> efficace e una visione del ruolo dell’<em>Enterprise Architect</em> nel delineare l’evoluzione delle architetture dati</li></ul><h3>Verso un‘architettura metadata-driven: il modello Data Fabric</h3><p>Le tipologie di metadati collezionate nei processi di <em>Data Governance</em> costituiscono una base importante di conoscenza sul landscape dei dati aziendali, finalizzata al controllo e alla sostenibilità di un’architettura distribuita. Si tratta tuttavia di metadati che possiamo definire <em>passivi</em>: sono informazioni raccolte e aggiornate periodicamente, alcune in modalità manuale e altre in modalità automatica, che però si limitano a descrivere e fornire insight sullo stato dell’arte dei data asset.</p><p><a href="https://www.gartner.com/smarterwithgartner/data-fabric-architecture-is-key-to-modernizing-data-management-and-integration">Gartner</a> presenta il concetto di <strong><em>Data Fabric</em></strong><em> </em>come un <strong>modello di design delle piattaforme di data management</strong> che si fonda sull’utilizzo intelligente di una base ricca di <strong>metadati</strong> per supportare la realizzazione di <strong>servizi di integrazione e di delivery</strong> dei dati <strong>automatizzati</strong> e dinamici. L’obiettivo auspicato è quello di ridurre i task manuali di data integration e data preparation, in particolare le attività a basso valore aggiunto, e di migliorare la <strong>flessibilità</strong>, <strong>l’efficacia</strong> e la <strong>rapidità</strong> di adeguamento delle pipeline dati al variare delle condizioni esterne.</p><p>L’implementazione di una <em>Data Fabric </em>non è basata obbligatoriamente su un unico prodotto, al contrario solitamente è costituita da un insieme di tecnologie che collaborano tra di loro per mettere a disposizione le funzionalità peculiari del modello.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kRqtA39wwwnx7tUC-0wR4w.png" /><figcaption>I pillar che costituiscono il design di una Data Fabric. Fonte: Gartner</figcaption></figure><p>In aggiunta ai metadati statici descritti nella sezione relativa alla <em>Data Governance</em>, il modello <em>Data Fabric</em> si pone l’obiettivo di <strong>collezionare una serie di metadati, dinamici </strong>per natura, da ciascun sistema facente parte dell’architettura aziendale: alcuni esempi possono essere statistiche operazionali e di runtime dei flussi dati (metadati di performance e durata dei job, frequenza di accesso ai dataset per utente, distribuzione giornaliera degli accessi per fascia oraria, utilizzo medio risorse…) e metadati social generati dagli utenti tramite funzionalità di collaborazione (commenti, note, assegnazione di task, metadati di interazione con partner…). Sfruttando la <strong>rappresentazione integrata</strong> della base di metadati messa a disposizione dal <strong><em>knowledge graph</em></strong>, la <em>Data Fabric</em> permette di <strong><em>“attivare”</em> i metadati</strong>, rendendo possibili delle <strong>analisi</strong> su di essi e la generazione dinamica di <strong><em>KPI</em></strong><em>.</em></p><p>I <em>KPI</em> così ottenuti possono essere forniti come parametri in input ad <strong>algoritmi di <em>AI/ML</em></strong><em> </em>che consentono al <strong>motore decisionale</strong> della <em>Data Fabric</em> di fare previsioni ed attuare <strong>azioni intelligenti e automatiche</strong> per adeguare e ottimizzare i <strong>processi di integrazione e distribuzione dei dati </strong>in base alle variabili del contesto. Ad esempio, gli algoritmi possono stimare il <strong>sizing di risorse</strong> ottimale e valutare il tipo di infrastruttura più adatto per un determinato flusso di replicazione dati tra due sistemi in modo dinamico, basandosi sui <strong>feedback</strong> derivati dalle <strong>analisi in tempo reale sui metadati</strong> di volumi e utilizzo delle risorse raccolti: di conseguenza, la <em>Data Fabric</em> può azionare in automatico delle procedure di <strong>provisioning e configuration management</strong> che vanno ad effettuare il deploy di un’infrastruttura con il nuovo setup desiderato.</p><p>Inoltre la <em>Data Fabric</em>, tramite le <strong>insight</strong> messe a disposizione dal knowledge graph, intende abilitare la <strong>creazione di modelli dati flessibili</strong>, facilmente integrabili con <strong>valore semantico</strong> da parte del team business ed esposti ad un <strong>livello di astrazione</strong> dagli dettagli tecnici che permette un <strong>consumo self-service</strong>.</p><p>Il concetto di <strong><em>Data Fabric</em></strong> prevede di avere alla base dei processi di integrazione e delivery intelligente dei dati <strong>un‘infrastruttura costituita da tecnologie moderne, poliglotta</strong> ed eventualmente distribuita su diversi ambienti, in cloud e on-premises o in una configurazione ibrida, che supporti <strong>molteplici modalità di consegna dei dati</strong>, per adattarsi in modo flessibile alle esigenze di consumo dei vari casi d’uso. La piattaforma di una Data Fabric può essere dotata di componenti per supportare flussi <strong><em>ETL/ELT</em></strong> standard, integrazione tramite <strong>API</strong>, <strong><em>stream processing</em></strong> e distribuzione dati in real time, elaborazioni <strong><em>big data</em></strong> e accessi al dato di vario tipo. L’intelligenza di cui è dotata, derivata dalle funzionalità di AI/ML, può consentire anche di adattare in automatico la <strong>scelta dello stile di integrazione</strong>: ad esempio, si può pensare che, in caso di arrivo in ingresso di grosse moli di dati storici, la piattaforma metta in opera on-demand un’integrazione via flussi <em>batch</em> o export di file su un <em>object store</em>, mentre, in risposta alla produzione in ingresso di uno stream di eventi a bassa latenza da parte delle sorgenti, avvii un flusso di consegna dati in real-time ai sistemi consumatori.</p><p>La piattaforma della <strong><em>Data Fabric</em></strong> favorisce un <strong>approccio data &amp; metadata centrico</strong> al design dell’architettura: il modello prevede infatti la presenza di <strong>uno o più sistemi di storage</strong> in grado di salvare in modo durevole un qualsiasi volume di dati, in formati diversi e tali da consentire ai consumatori di usare il <strong>pattern di accesso</strong> più adatto alle proprie esigenze. Un’architettura che ha alla base una piattaforma <em>Data Fabric</em> consente di <strong>ridurre i costi di integrazione</strong>, razionalizzando l’effort di offloading dei dati dalle sorgenti e abilitando il riuso dei data asset core aziendali per molteplici finalità, sia di tipo operazionale sia di tipo analitico. Infatti, il modello <em>Data Fabric</em> va nella direzione di una <strong><em>piattaforma di integrazione ibrida e convergente</em></strong>, adatta a supportare sia l’<strong>integrazione real-time di applicazioni</strong> per rispondere ai processi digitali core dell’azienda, sia tutte le fasi che compongono il <strong>ciclo di vita del dato</strong> per abilitare servizi avanzati data-driven.</p><p>La piattaforma mette a disposizione anche le componenti tecnologiche per offrire funzionalità avanzate di <strong>orchestrazione</strong> dei vari step delle <strong>pipeline dati</strong>, dando la possibilità di implementare e schedulare <strong>workflow </strong>complessi a piacere.</p><p>Il modello <em>Data Fabric </em>rappresenta una direzione da percorrere, ma può essere implementato con un <strong>approccio graduale</strong>, realizzando inizialmente alcuni <strong>servizi di base che arricchiscono le funzionalità della piattaforma</strong> e semplificano le attività di sviluppo dei data engineer, garantendo economia di velocità, per poi aggiungere in un secondo momento le feature avanzate che si basano sul machine learning e sullo sfruttamento attivo dei metadati. Alcuni esempi di funzionalità di base che possono essere di grande beneficio sono:</p><ul><li>il deploy semplificato di flussi di <strong>replicazione dati</strong> da una sorgente al layer di storage offerto dalla piattaforma di integrazione;</li><li>il deploy di un’applicazione che effettua la <strong>traduzione di formato e di schema dati</strong> tra un tracciato sorgente e un tracciato standardizzato, arricchito di metadati, adatto per pubblicare i dati nella piattaforma;</li><li>l’implementazione di procedure automatizzate e parametriche di <strong>svecchiamento dei dati storici</strong>;</li><li>la generazione automatica di certificati SSL e l’<strong>assegnazione di permessi di accesso</strong> per soggetti autorizzati all’accesso ai dati;</li><li><strong>provisioning</strong> automatico di dataset di test;</li><li>applicazione automatica delle tecniche di <strong>anonimizzazione o pseudo-anonimizzazione</strong> dei campi sensibili.</li></ul><p>Per riassumere, le funzionalità di una <em>Data Fabric </em>vanno ad estendere e potenziare le feature base delle tecnologie che compongono l‘infrastruttura di integrazione, offrendo <strong>servizi intelligenti di piattaforma</strong>, ad un livello di astrazione superiore, per <strong>automatizzare</strong> buona parte dell’effort di <strong>integrazione, elaborazione e orchestrazione</strong> delle pipeline dati, in direzione di un‘architettura <strong>metadata-driven</strong>: è un modello che si prevede raccolga sempre maggior interesse nei prossimi anni. In quest’ottica, figure professionali come il <strong><em>DataOps</em></strong> e il <strong><em>Platform Engineer</em></strong> sono in via di espansione.</p><p>Il modello Data Fabric consente di ottenere scalabilità ed efficienza a livello tecnologico e di piattaforma: per raggiungere questi obiettivi anche a livello organizzativo e di gestione è interessante considerare gli approcci <strong><em>Domain Driven Design</em></strong> e <strong><em>Data Mesh</em></strong>, che tratteremo nei prossimi tre articoli.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8fa3d76d9667" width="1" height="1" alt=""><hr><p><a href="https://medium.com/quantyca/ladattabilit%C3%A0-della-piattaforma-di-integrazione-in-un-modello-data-fabric-8fa3d76d9667">L’adattabilità della piattaforma di integrazione in un modello Data Fabric</a> was originally published in <a href="https://medium.com/quantyca">Quantyca</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L’esigenza di governo nella gestione dei dati]]></title>
            <link>https://medium.com/quantyca/lesigenza-di-governo-nella-gestione-dei-dati-e5e71af9162c?source=rss----20e59f853442---4</link>
            <guid isPermaLink="false">https://medium.com/p/e5e71af9162c</guid>
            <category><![CDATA[data-governance]]></category>
            <category><![CDATA[data-management]]></category>
            <category><![CDATA[data-quality]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[data-quality-management]]></category>
            <dc:creator><![CDATA[Giulio Scotti]]></dc:creator>
            <pubDate>Wed, 11 May 2022 10:52:40 GMT</pubDate>
            <atom:updated>2022-07-20T12:37:16.416Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*llXmRqzdmko3WpALGS-Jhw.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@fabioha?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">fabio</a> on <a href="https://unsplash.com/s/photos/governance?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><h3>Abstract</h3><p>Questo è il terzo articolo di una serie di blog post finalizzata a trasmettere i punti salienti della visione delle architetture IT enterprise e del <em>Data Management </em>che, come <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a>, proponiamo ai nostri clienti.</p><p>Per chi non li avesse letti, consiglio di leggere gli articoli precedenti della serie, dai titoli:</p><ul><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/i-principi-di-un-moderno-data-management-7f8da5df014a"><strong><em>I principi di un moderno Data Management</em></strong></a><strong><em>”</em></strong><em>: </em>descrive le sfide dell’IT nella nuova era di digitalizzazione e i driver che spingono verso la ricerca di un cambio di paradigma nella progettazione delle architetture dati</li><li><a href="https://medium.com/quantyca/lapproccio-data-centrico-che-cambia-l-it-fa33404a67c3"><strong><em>“L’approccio data-centrico che cambia l’IT”</em></strong></a><em>: </em>descrive i principi e i vantaggi di un orientamento di progettazione delle architetture IT che considera i dati come asset centrale e riusabile e le applicazioni come elementi effimeri che producono o consumano dati di interesse per l’intera azienda</li></ul><p>Negli articoli successivi tratteremo diversi aspetti che riteniamo interessanti per costruire piattaforme dati in grado di rispondere alle esigenze pressanti di un business che sta diventando sempre più data-driven.</p><p>Questo l’elenco dei prossimi articoli:</p><ul><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/ladattabilit%C3%A0-della-piattaforma-di-integrazione-in-un-modello-data-fabric-8fa3d76d9667"><strong><em>L’adattabilità della piattaforma di integrazione in un modello Data Fabric</em></strong></a><strong><em>”</em></strong><em>: </em>descrive un nuovo modello di piattaforma architetturale intelligente e automatizzata</li><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/il-domain-driven-design-applicato-ai-dati-per-una-maggiore-agilit%C3%A0-nella-progettazione-197823eac2a0"><strong><em>Il Domain Driven Design applicato ai dati per una maggiore agilità nella progettazione</em></strong></a><strong><em>”</em></strong><em>: </em>riporta i punti fondamentali del modello di sviluppo software <em>Domain Driven Design</em>, che ha influenzato la proposta di nuovi modelli organizzativi anche per il <em>Data Management</em></li><li><a href="https://medium.com/quantyca/il-data-mesh-e-la-spinta-verso-una-gestione-dati-distribuita-f7c069e80e59"><strong><em>“Il Data Mesh e la spinta verso una gestione dati distribuita”</em></strong></a>: descrive le ragioni che hanno contribuito alla proposta del paradigma <em>Data Mesh,</em> in favore di una gestione dei dati decentralizzata e domain-oriented per ottenere scalabilità organizzativa</li><li><a href="https://medium.com/quantyca/il-data-mesh-e-il-consumo-self-service-dei-dati-come-prodotti-920e60f8aae"><strong><em>“Il Data Mesh e il principio di consumo self-service dei dati come prodotti”</em></strong></a>: descrive la visione dei dati come prodotti, che formano una rete di <em>domain-oriented Data Product </em>e sono fruiti tramite una piattaforma self-service e un modello di governance federato;</li><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/la-data-strategy-come-motore-dellit-c6eca0321c03"><strong><em>La Data Strategy come motore dell’IT</em></strong></a><strong><em>”</em></strong><em>: </em>chiude la serie con un riassunto dei principi architetturali che riteniamo basilari per una strategia di <em>Data Management</em> efficace e una visione del ruolo dell’<em>Enterprise Architect</em> nel delineare l’evoluzione delle architetture dati</li></ul><h3>La Data Governance come strumento di controllo e insight sull’architettura IT</h3><p>Considerare i dati come asset e metterli in condivisione a livello di intera organizzazione implica la necessità di mantenere il controllo del ciclo di vita di questi ultimi: tanto più <strong>l’architettura è distribuita</strong> e <strong>l’organizzazione aziendale è complessa</strong>, tanto più è marcata <strong>l’esigenza di</strong> <strong>governo dei dati</strong>.</p><p>Infatti, mentre l’utilizzo dei <em>Data On The Inside</em> si esaurisce all’interno dell’applicazione che li gestisce, l’esposizione nel data layer dell’architettura aziendale dei <em>Data On The Outside</em> presuppone che <strong>attori diversi</strong> potenzialmente interagiscano con i dati esposti, siano essi altre applicazioni, team verticali di differenti linee di business, gruppi di analisti e data scientist, società partner o altri: il <strong>data layer</strong> è normalmente un <strong>elemento architetturale condiviso e multi-tenant</strong>.</p><p>Inoltre è altamente probabile che le esigenze di integrazione e le caratteristiche dell’architettura comportino la <strong>replicazione di uno stesso dataset</strong> in diverse copie, distribuite su diversi sistemi, infrastrutture, componenti tecnologiche; spesso le <strong>data pipeline</strong> che implementano i flussi dati prevedono il coinvolgimento di più job, ciascuno dei quali opera un particolare step di trasformazione sul dataset.</p><p>Uno scenario architetturale del genere richiede pertanto di raccogliere una <strong>base ricca ed organica di metadati </strong>che permettano di mantenere il governo su diversi aspetti della gestione dei data asset; alcuni esempi di tipologie di metadati che è consigliabile raccogliere sono descritti nelle sezioni seguenti.</p><h4>Business Glossary, Data Catalog e Data Classification</h4><p>L’attività di modellazione semantica dei data asset dà l’opportunità di definire un glossario, detto <strong><em>Business Glossary</em></strong>, in cui censire le <strong>entità di business</strong> di interesse aziendale e gli attributi elementari che le costituiscono: si tratta di concetti logici, inquadrati nel <strong>modello concettuale del business</strong> e agnostici rispetto ai dettagli tecnici e alla rappresentazione fisica che viene invece implementata sui sistemi.</p><p>Per fare un esempio, consideriamo questa volta il dominio del <em>Retail</em>, in cui il concetto di <em>Transazione di vendita</em> è uno degli elementi chiave del modello di business. Nel glossario semantico sarà definita un’entità per la transazione di vendita, che riporterà una descrizione espressa nel linguaggio dei termini comunemente usato dal team business, eventuali sinonimi utilizzati per riferirsi allo stesso concetto (aliases), eventuali etichette (tag) utili per arricchire la classificazione semantica dell’entità e altri metadati di interesse.</p><p>Inoltre, nel glossario si andranno a definire gli <strong>attributi</strong> specifici associati all’entità, indicando per ciascuno di essi il tipo logico (booleano, numerico, stringa…), eventuali vincoli che il valore assunto deve osservare (esempio: valore non negativo), l’espressione di calcolo qualora l’attributo fosse una metrica complessa, così come eventuali pattern che il valore deve rispettare (esempio: un numero fisso di caratteri). Per una <em>Transazione di vendita</em>, alcuni attributi comunemente definiti sono la data della transazione, il punto vendita di interesse, il cliente acquirente, l’eventuale tessera fedeltà usata, l’importo pagato, l’importo degli sconti applicati.</p><p>I data asset vengono poi rappresentati a <strong>livello fisico</strong> in più copie sotto forma di tabelle o <strong>strutture dati</strong> di altro tipo all’interno dei <strong>sistemi</strong> che compongono l’architettura IT aziendale: dal momento che i sistemi coinvolti sono molteplici e basati su tecnologie differenti, è consigliabile estrarre da essi i metadati relativi agli schemi, alle strutture dati, ai campi specifici, ai vincoli fisici e raccoglierli in un <strong>catalogo centralizzato</strong>, detto <strong><em>Data Catalog</em></strong>. Il catalogo può essere arricchito riportando anche le informazioni sugli utenti che hanno accesso ai sistemi o a determinate strutture dati.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/671/1*ytm-t2puNENmMAiuNpeMeA.jpeg" /><figcaption>Esempio semplificato di Business Glossary, Data Catalog e Data Classification per un dominio retail</figcaption></figure><p>Per garantire un pieno controllo dei dati gestiti e condivisi nell’architettura è utile effettuare una <strong>mappatura</strong> tra i concetti di business definiti nel glossario semantico e le corrispondenti rappresentazioni fisiche nelle strutture dati, registrate nel catalogo dati: una simile mappatura costituisce il processo di <strong><em>Data Classification</em></strong><em> </em>e<em> </em>può essere effettuata in modalità semiautomatica tramite un motore di valutazione di regole di classificazione e una successiva integrazione manuale<em>.</em></p><p>Considerando il numero potenziale di repliche di uno stesso data asset tra i vari sistemi o su più strutture dati all’interno di uno stesso sistema, la mappatura tra il mondo concettuale e il mondo fisico permette di mantenere una <strong>tracciabilità dei punti di utilizzo dei dati</strong> e di facilitare la scoperta, <strong>l’esplorazione</strong> e l’accesso in <strong>modalità self-service</strong> ai data asset di valore aziendale. Inoltre, saper identificare tempestivamente tutte le strutture dati in cui è rappresentato un certo tipo di informazione, come ad esempio i <em>Personally Identifiable Information (PII)</em> dei clienti, consente di rispondere agilmente a esigenze di compliance dettate dalle normative legate alla <em>Data Privacy, </em>come eventuali requisiti di anonimizzazione o cancellazione su finestre temporali più vecchie di un certo numero di mesi.</p><h4>Data Lineage</h4><p>I metadati raccolti nel glossario dei concetti semantici, nel catalogo delle strutture dati e la mappatura tra il mondo fisico e il mondo logico forniscono una conoscenza sulla situazione dei <strong>dati <em>at rest</em></strong>. Tuttavia, per rendere effettivamente accessibili i data asset ai vari consumatori vengono implementati diversi tipi di processi che hanno a che fare con i <strong>dati <em>in motion</em></strong><em>, </em>sia che si tratti di data pipeline che operano <strong><em>ETL/ELT</em></strong><em> </em>in modalità <em>batch</em>, sia che si tratti di flussi in real time di <strong><em>stream processing</em></strong>, di integrazione tramite <strong><em>API</em></strong> piuttosto che di accesso tramite <strong><em>layer di virtualizzazione</em></strong>.</p><p>Pertanto, la raccolta di metadati utili a <strong>fornire</strong> <strong>insight</strong> per il governo dei dati dovrebbe coprire anche l’aspetto del <strong><em>Data Lineage</em></strong>, per permettere di tracciare il percorso end-to-end di un <strong><em>datase</em>t</strong>, dal <em>data provider</em>, passando per i vari step di integrazione e trasformazione nel <em>data layer</em>, fino ai diversi <em>data consumer</em>, censendo tutte le applicazioni che sono coinvolte nella <strong>pipeline</strong> del flusso.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ICLLNx9ehopsW7IFPKm2Uw.jpeg" /><figcaption>Esempio semplificato di percorso end-to-end del flusso dati delle transazioni di vendita per un dominio retail</figcaption></figure><p>Il percorso tracciato può essere poi analizzato nel verso che va dalle sorgenti alle destinazioni (<em>forward lineage</em>) o in verso opposto (<em>backward lineage</em>). Il tracciamento del lineage dei dati è fondamentale per effettuare con efficacia delle <strong>analisi di impatto</strong> del cambiamento, nel momento in cui è necessario introdurre delle modifiche agli schemi e alle interfacce dei <strong><em>Data On The Outside</em></strong><em>, </em>che necessitano di identificare tutte le componenti applicative eventualmente impattate da monitorare ed eventualmente modificare.</p><p>Per favorire la raccolta di metadati utili ai fini del lineage, può essere conveniente introdurre nello schema dei dati elaborati dalla pipeline alcuni <strong>campi tecnici</strong> come, per esempio, il timestamp di elaborazione di ogni step di trasformazione, o arricchire il singolo record con un identificativo univoco che permetta poi di fare delle <strong>analisi di correlazione</strong> tra più copie dello stesso record in diversi sistemi.</p><h4>Data Quality</h4><p>Un altro aspetto da non sottovalutare riguarda la <strong>qualità</strong> dei <em>Data On The Outside</em> che vengono pubblicati nel data layer e distribuiti ai diversi consumatori. Un dato fornisce valore nel momento in cui è consistente, coerente con il contesto semantico di appartenenza, integro e aggiornato di frequente. Al contrario, data set di scarsa qualità possono essere origine di impatti negativi sul business, come ad esempio previsioni di vendita errate, performance di raccomandazione e personalizzazione dell’esperienza utente modeste o, nel caso di consumatori operazionali, azioni errate che possono portare a perdite di revenue o di reputazione per l’azienda. Si pensi alle conseguenze di un calcolo errato dello stock dei prodotti per un business di e-commerce: i clienti rischierebbero di vedere i propri ordini cancellati per mancanza effettiva della merce in magazzino e questa situazione sgradevole potrebbe portare a perdere clienti a favore dei competitor.</p><p>Pertanto, all’interno dei processi di Data Governance è auspicabile definire dei controlli di <strong><em>Data Quality</em></strong> da effettuare in modo periodico e automatico sui dataset, sulla base dei quali prevedere delle <strong>azioni di alert o di rimedio automatico</strong> in caso di situazioni problematiche.</p><p>Esempi di controlli di qualità che è utile implementare sono i seguenti:</p><ul><li>controlli di <strong>integrità referenziale</strong> tra fatti e dimensioni di un data warehouse;</li><li>controlli di <strong>quadratura</strong> tra una metrica calcolata e i dati di riferimento generati dalla sorgente;</li><li>controlli sulla <strong>frequenza</strong> di ricezione degli <strong>aggiornamenti</strong> dei dati dalla sorgente;</li><li>controlli di <strong>completezza</strong> di un master / reference data set;</li><li>controlli di <strong>compliance</strong> di un attributo rispetto agli invarianti di calcolo, ai vincoli e ai pattern definiti a livello semantico nel glossario di business ( correttezza valori numerici, controllo su valori ammessi di campi categorici…).</li></ul><p>Eseguire periodicamente i controlli di qualità permette di conservare i risultati in un database, abilitando la possibilità di effettuare <strong>analisi storiche</strong> tramite dashboard e di identificare trend positivi o negativi sulla qualità dei data asset condivisi, correlandoli con eventuali attività evolutive operate sulle pipeline dati.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KIp6ct9aZR2A4L0OAxxpCA.png" /><figcaption>Esempio di dashboard e analisi storiche sul trend dei controlli di qualità dei dati</figcaption></figure><h4>Altri metadati</h4><p>Un’area molto specifica è quella della <strong><em>Data Compliance</em></strong> e riguarda alcuni aspetti come il censimento del registro dei trattamenti sui dati, la definizione dei data subject e la notarizzazione dei consensi degli interessati all’utilizzo dei dati personali, che per alcune tipologie di dati sono richieste dalle normative sulla <strong><em>Data Privacy</em></strong>.</p><p>Inoltre, per ogni dataset pubblicato nel data layer, è utile tracciare informazioni riguardo la <strong><em>ownership</em></strong> del data asset, in termini di team o sotto-dominio di appartenenza e di applicazione provider, nonchè documentare all’interno di un <strong><em>data sharing agreement</em></strong>, per ciascun sistema consumatore che chiede la <strong>sottoscrizione</strong> al data set, le finalità specifiche e i vincoli con cui i dati vengono condivisi.</p><h4>Knowledge graph</h4><p>Per massimizzare la conoscenza estraibile dai metadati raccolti, è possibile organizzarli e tracciare le relazioni tra di essi in una rappresentazione a grafo, detta<strong> <em>knowledge graph</em></strong>, che permette una <strong>navigazione a 360°</strong> e una visualizzazione efficace di tutti gli aspetti di gestione dei data asset. Questo è uno dei driver più rilevanti a favore dell’adozione a livello aziendale di un <strong>tool centralizzato di Data Governance</strong> in cui salvare in modo integrato i metadati raccolti e supportarne facilmente la consultazione e l’aggiornamento.</p><p><a href="https://blindata.io/"><strong>Blindata</strong></a><strong> </strong>è una società che produce un’applicazione SaaS di Data Governance e Data Compliance. Un esempio della tipologia di visualizzazione dei metadati che si può ottenere sfruttando il knowledge graph è illustrato nella figura seguente (in cui viene mostrata la prospettiva del Data Lineage).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oHwYN8EykgkEJ4sgHyffqg.png" /><figcaption>Esempio di rappresentazione a grafo della prospettiva del Data Lineage estratto dall’applicazione Blindata</figcaption></figure><h4>I metadati abilitano il modello Data Fabric</h4><p>La possibilità di centralizzare in un unico strumento una base ricca e organica di metadati è il primo passo verso la creazione di un modello di piattaforma di integrazione intelligente, che mira ad una forte spinta verso l’automazione, detto <strong><em>Data Fabric</em></strong>, che discuteremo in dettaglio nel prossimo articolo.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e5e71af9162c" width="1" height="1" alt=""><hr><p><a href="https://medium.com/quantyca/lesigenza-di-governo-nella-gestione-dei-dati-e5e71af9162c">L’esigenza di governo nella gestione dei dati</a> was originally published in <a href="https://medium.com/quantyca">Quantyca</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L’approccio data-centrico che cambia l’IT]]></title>
            <link>https://medium.com/quantyca/lapproccio-data-centrico-che-cambia-l-it-fa33404a67c3?source=rss----20e59f853442---4</link>
            <guid isPermaLink="false">https://medium.com/p/fa33404a67c3</guid>
            <category><![CDATA[data]]></category>
            <category><![CDATA[data-centric]]></category>
            <category><![CDATA[enterprise-architecture]]></category>
            <category><![CDATA[data-management]]></category>
            <category><![CDATA[data-platforms]]></category>
            <dc:creator><![CDATA[Giulio Scotti]]></dc:creator>
            <pubDate>Thu, 28 Apr 2022 09:03:03 GMT</pubDate>
            <atom:updated>2022-07-20T12:36:48.158Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*gtJeCka-IbI3z1HfoX8scg.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@lukechesser?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Luke Chesser</a> on <a href="https://unsplash.com/s/photos/data-driven-business?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><h3>Abstract</h3><p>Questo è il secondo articolo di una serie di blog post finalizzata a trasmettere i punti salienti della visione delle architetture IT enterprise e del <em>Data Management </em>che, come <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a>, proponiamo ai nostri clienti.</p><p>Per chi non lo avesse letto, consiglio di leggere l’articolo introduttivo della serie, dal titolo <strong><em>“</em></strong><a href="https://medium.com/quantyca/i-principi-di-un-moderno-data-management-7f8da5df014a"><strong><em>I principi di un moderno Data Management</em></strong></a><strong><em>”</em></strong><em>,</em><strong><em> </em></strong>in cui abbiamo descritto i driver che spingono verso la ricerca di un cambio di paradigma nella progettazione delle architetture dati.</p><p>Negli articoli successivi tratteremo diversi aspetti che riteniamo interessanti per costruire piattaforme dati in grado di rispondere alle esigenze pressanti di un business che sta diventando sempre più data-driven.</p><p>Questo l’elenco dei prossimi articoli:</p><ul><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/lesigenza-di-governo-nella-gestione-dei-dati-e5e71af9162c"><strong><em>L’esigenza di governo nella gestione dei dati</em></strong></a><strong><em>”</em></strong><em>: </em>discute la necessità di costruire un framework di governance metadata-driven per mantenere il controllo della distribuzione dei dati nell’architettura enterprise</li><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/ladattabilit%C3%A0-della-piattaforma-di-integrazione-in-un-modello-data-fabric-8fa3d76d9667"><strong><em>L’adattabilità della piattaforma di integrazione in un modello Data Fabric</em></strong></a><strong><em>”</em></strong><em>: </em>descrive un nuovo modello di piattaforma architetturale intelligente e automatizzata</li><li><a href="https://medium.com/quantyca/il-domain-driven-design-applicato-ai-dati-per-una-maggiore-agilit%C3%A0-nella-progettazione-197823eac2a0"><strong><em>“Il Domain Driven Design applicato ai dati per una maggiore agilità nella progettazione”</em></strong></a><em>: </em>riporta i punti fondamentali del modello di sviluppo software <em>Domain Driven Design</em>, che ha influenzato la proposta di nuovi modelli organizzativi anche per il <em>Data Management</em></li><li><a href="https://medium.com/quantyca/il-data-mesh-e-la-spinta-verso-una-gestione-dati-distribuita-f7c069e80e59"><strong><em>“Il Data Mesh e la spinta verso una gestione dati distribuita”</em></strong></a>: descrive le ragioni che hanno contribuito alla proposta del paradigma <em>Data Mesh,</em> in favore di una gestione dei dati decentralizzata e domain-oriented per ottenere scalabilità organizzativa</li><li><a href="https://medium.com/quantyca/il-data-mesh-e-il-consumo-self-service-dei-dati-come-prodotti-920e60f8aae"><strong><em>“Il Data Mesh e il principio di consumo self-service dei dati come prodotti”</em></strong></a>: descrive la visione dei dati come prodotti, che formano una rete di <em>domain-oriented Data Product </em>e sono fruiti tramite una piattaforma self-service e un modello di governance federato;</li><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/la-data-strategy-come-motore-dellit-c6eca0321c03"><strong><em>La Data Strategy come motore dell’IT</em></strong></a><strong><em>”</em></strong><em>: </em>chiude la serie con un riassunto dei principi architetturali che riteniamo basilari per una strategia di <em>Data Management</em> efficace e una visione del ruolo dell’<em>Enterprise Architect</em> nel delineare l’evoluzione delle architetture dati</li></ul><h3>La spinta verso un nuovo paradigma data-centrico</h3><p>Nell’articolo precedente, <em>“</em><a href="https://medium.com/quantyca/i-principi-di-un-moderno-data-management-7f8da5df014a"><em>I principi di un moderno Data Management</em></a><em>”, </em>abbiamo descritto le sfide che l’IT si trova di fronte nella nuova era di digitalizzazione, caratterizzata da una produzione e un consumo di dati di volumi, varietà e finalità di utilizzo di gran lunga superiori al passato, oltre che dalla presenza, all’interno delle architetture enterprise, di un numero molto più rilevante di applicativi che devono cooperare. La <strong>necessità di razionalizzare e ottimizzare le integrazioni</strong> e di <strong>riutilizzare gli stessi dati</strong> per processi e finalità differenti impone un <strong>cambio di prospettiva</strong>, per garantire all’IT di spendere al meglio il budget a disposizione e rilasciare le funzionalità digitali data-driven nei tempi rapidi richiesti da un contesto di business sempre più competitivo e incerto, in cui la possibilità di sperimentare diventa un potenziale fattore importante di profitto.</p><p>Il cambio di prospettiva non può che partire dal riconoscere che il vero valore digitale di un’organizzazione è costituito dai dati che l’azienda produce, utilizza ed elabora. Le applicazioni, nell’implementare le funzionalità di business, sono certamente importanti ma, in un certo senso, anche effimere e sostituibili. <strong>I dati persistono</strong> al di là del ciclo di vita dei sistemi stessi e possono essere <strong>riutilizzati</strong> per <strong>molteplici scopi: </strong>sono a tutti gli effetti gli <strong>asset digitali aziendali</strong>. Come vale per tutti gli altri tipi di asset delle aziende tradizionali, i dati, per essere sfruttati al meglio, dovrebbero essere <strong>controllati</strong>, resi <strong>accessibili facilmente</strong> e in sicurezza e <strong>condivisi</strong> a livello di intera organizzazione, per abilitare processi diversi da quelli all’interno dei quali sono stati generati.</p><p>Il design di un’architettura IT aziendale deve partire dall’identificare quali sono i <strong>data asset </strong>di rilevo<strong> </strong>per l’azienda, mediante un’<strong>analisi</strong> approfondita del <strong>dominio di business</strong>, dei concetti e dei processi core e una conseguente <strong>modellazione semantica</strong> dei dati, con uno sforzo congiunto tra il personale del team business e lo staff IT. La scelta dei prodotti che implementano le applicazioni aziendali dovrebbe essere coerente con la <strong>strategia di gestione dei dati</strong> che si intende perseguire.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/331/1*8tSmXVcz8nJfE9bQkeLvRQ.jpeg" /><figcaption>I dati sono i veri asset aziendali, le applicazioni sono effimere</figcaption></figure><p>Un data asset core rappresenta, dal punto di vista logico e fisico, un concetto informativo di primaria importanza per il business dell’azienda. Ogni data asset è generato da parte di un’applicazione, che nel libro “<a href="https://learning.oreilly.com/library/view/data-management-at/9781492054771/"><em>Data Management At Scale</em></a>” è detta <strong><em>golden source</em></strong><em> </em>(o, alternativamente, <em>data provider</em>) del dato stesso. In quanto tale, l’applicazione è responsabile di produrre e condividere i dati, assicurarne la comprensibilità, la qualità e la consistenza, ma non ne è proprietaria esclusiva: i <strong>dati sono un bene condiviso</strong>, un asset aziendale, pertanto l’applicazione deve entrare in una <strong>prospettiva di cooperazione</strong> per favorirne l’accesso, l’utilizzo, l’integrazione e la distribuzione ad altre applicazioni nel modo più efficiente ed efficace.</p><p>In termini concreti, questo significa che l’applicazione deve fornire delle <strong>interfacce</strong> (chiamate anche <strong><em>data endpoint</em></strong>) facilmente accessibili, sicure e auto descrittive per permettere di <strong>estrarre i dati in un formato aperto </strong>secondo gli <strong>standard</strong> più comunemente usati nelle tecniche di data management moderne: infatti, i data asset non devono rimanere confinati all’interno delle applicazioni, come <em>by product, </em>ma devono essere fisicamente portati al centro dell’architettura, devono risiedere nel<strong> <em>data layer</em></strong>. Inoltre, le applicazioni di dominio (<em>system of records</em>) non dovrebbero ricoprire il ruolo di hub di elaborazione, trasferimento o distribuzione di dati ad altri sistemi: queste non sono le attività per cui tali applicazioni sono ottimizzate e rischiano di degradarne le performance per le finalità operazionali critiche per il business, che sono invece i compiti primari che le applicazioni dovrebbero assolvere.</p><p>La <strong>nuova prospettiva</strong> proposta viene definita <strong><em>data-centrica</em></strong>. Il “<a href="http://www.datacentricmanifesto.org/"><em>Data Centric Manifesto</em></a><em>” </em>illustra in modo chiaro i principi alla base dell’orientamento data-centrico. La tabella seguente, presente nel <em>Manifesto</em>, riassume le differenze tra un approccio application-centrico, che rappresenta lo stato dell’arte per diverse aziende, e un approccio data-centrico, che dovrebbe invece essere la direzione da perseguire per l’evoluzione presente e futura.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/847/1*NFsM2fLgI2KyJ9yjqYUe5A.png" /><figcaption>Conseguenze di un approccio application-centrico vs data-centrico. Fonte: <a href="http://www.datacentricmanifesto.org/principles/">Data Centric Manifesto</a>.</figcaption></figure><p>Possiamo riassumere i punti salienti dicendo che un <strong>approccio data-centrico</strong> di design delle architetture enterprise permette di <strong>abbassare i costi di integrazione</strong> e del cambiamento, rendendo <strong>sostenibili i progetti IT</strong> e abbassando il <strong>rischio di investimento</strong>; il data-centrismo favorisce inoltre l’adattabilità delle architetture aziendali, rendendole pronte ad <strong>evolvere rapidamente</strong> in risposta ad un contesto di business altamente variabile e incerto e permette di <strong>estrarre dai dati un valore strategico e trasversale</strong> per l’azienda, da sfruttare come elemento differenziante rispetto ai competitor.</p><p>In un’architettura pensata con un paradigma data centrico, i <strong>processi di offloading </strong>dei dati dalle applicazioni sorgenti sono impostati non con l’obiettivo di alimentare un sistema consumatore specifico per soddisfare le esigenze di un particolare caso d’uso di cui è stata fatta richiesta all’IT nel momento in cui è emersa l’esigenza, quanto piuttosto di estrarre e mettere a disposizione i dati su una <strong>piattaforma condivisa</strong> con un <strong>tracciato e un formato sufficientemente generico</strong> da rispondere alle aspettative di <strong>applicazioni differenti</strong>, che in qualunque momento possano richiedere di utilizzare i dati, in un’ottica di <strong>sottoscrizione</strong>. Nella prospettiva descritta, il <strong>design del modello</strong> dati e delle integrazioni è orientato più al significato e al <strong>valore del dato</strong> di per sè, rispetto che ai requisiti di un particolare use case.</p><p>In questo modo, si evita di moltiplicare l’implementazione dei processi (e di conseguenza i costi) di estrazione dalle sorgenti per ogni necessità differente di utilizzo degli stessi <strong>dati</strong>: questi ultimi sono già <strong>a disposizione sulla piattaforma di integrazione</strong>, a cui un potenziale nuovo sistema può agganciarsi per fruirne.</p><h3>Data On The Outside versus Data On The Inside</h3><p>Pat Helland, nel suo whitepaper intitolato <a href="http://cidrdb.org/cidr2005/papers/P12.pdf"><em>“Data on the Outside versus Data on the Inside”</em></a>, mette in luce la differenza tra le caratteristiche del <strong>modello dati interno di un’applicazione</strong>, a cui fa riferimento con il termine di “<strong><em>Data On the Inside”</em></strong><em>, </em>e le caratteristiche dei <strong>dati di interesse generale</strong> che un’applicazione dovrebbe mettere a disposizione degli altri sistemi IT, detti “<strong><em>Data On The Outside”</em></strong><em>.</em></p><p>La maggior parte delle <strong>applicazioni software</strong> moderne è generalmente caratterizzata da un’architettura interna a livelli, detta <strong><em>layered architecture</em></strong><em>, </em>in cui si distinguono il livello più alto, detto di <strong><em>presentation</em></strong><em>, </em>costituito dall’interfaccia utente, il livello di <strong><em>business</em></strong><em>, </em>che contiene le logiche funzionali, e infine il livello di <strong><em>persistence</em></strong><em>, </em>detto anche <em>livello dati, </em>che implementa il modello dati interno dell’applicazione in un <strong>database dedicato</strong>. Quest’ultimo è ad <strong>uso privato dell’applicazione</strong> e, di conseguenza, viene progettato secondo il formato di rappresentazione dati e la tecnologia di data store più congeniale alle logiche funzionali che l’applicativo implementa. Si tratta dei <strong><em>Data On the Inside</em></strong><em>.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/251/1*G-udHs-XIh-9Ovz6WEtWng.jpeg" /><figcaption>Architettura a livelli di un’applicazione software: il livello di persistenza costituisce il modello dei Data On The Inside, ad uso privato dell’applicazione</figcaption></figure><p>A livello concreto, questo significa che il software engineer, nella fase di design di un’applicazione, sceglie se rappresentare i dati in un modello document-oriented, in uno schema relazionale piuttosto che in un altro formato, che grado di normalizzazione adottare, quali tipi di dato utilizzare tra quelli messi a disposizione dal DBMS scelto e quali campi tecnici introdurre, in funzione esclusivamente delle esigenze dei layer superiori dell’applicazione, che tipicamente avranno necessità di creare dati, leggerli, modificarli o cancellarli, molto spesso secondo il modello <a href="https://www.codecademy.com/articles/what-is-crud"><strong><em>CRUD</em></strong></a>. Nel caso in cui si utilizzi un data store relazionale, solitamente le modifiche nel livello dati sono gestite dall’applicazione con un modello di <strong><em>consistenza transazionale</em></strong><em> </em><strong><em>(</em></strong><a href="https://en.wikipedia.org/wiki/ACID"><strong><em>ACID</em></strong></a><strong><em>)</em></strong><em>; </em>inoltre, il layer delle <strong><em>Application Programming Interface (API)</em></strong><em>, </em>esposte dal livello di business, maschera i dettagli del modello dati all’esterno, secondo i buoni principi di <em>information hiding</em> ed <em>encapsulation</em>.</p><p>La mentalità application-centrica che si è consolidata negli anni ha portato i software architect e i software engineer a concentrare la maggior parte degli sforzi di progettazione sui <em>Data on the Inside </em>e sui layer applicativi, come se la responsabilità dell’applicazione si esaurisse all’interno del suo stesso perimetro e si limitasse a soddisfare al meglio i requisiti di dominio per cui è stata realizzata.</p><p>Secondo quanto discusso in precedenza, al giorno d’oggi una prospettiva simile inizia a mostrare i suoi limiti: la <strong>necessità di integrazione</strong> tra le applicazioni, l’<strong>esigenza di condivisione e riuso</strong> dei data asset core di importanza strategica per l’azienda sono inevitabili. Per questo motivo, l’attività di sviluppo e di design di un’applicazione moderna dovrebbe considerare come uno dei punti di maggior valore la modellazione semantica e fisica dei <strong>dati</strong> che dovranno essere <strong>messi a disposizione</strong> <strong>per l’integrazione</strong> con gli altri sistemi. Tali dati costituiscono i <strong><em>Data On The Outside</em></strong>: al contrario dei <em>Data on The Inside, </em>non si tratta di dati ad uso privato ed esclusivo dell’applicazione, ma di <strong>dati condivisi</strong> con il resto dell’architettura IT, pertanto è necessario che siano rappresentati in un <strong>formato</strong> orientato alle esigenze dei consumatori, <strong>autodescrittivo</strong> e aperto, facilmente comprensibile e che siano resi fruibili in modo efficace tramite <strong>diversi pattern di accesso</strong>. Un’applicazione che funge da <strong><em>data provider</em></strong> di certi dati <strong>è responsabile</strong> <em>(accountable) </em>della consistenza, della qualità e della sicurezza dei <strong><em>Data On The Outside</em></strong><em> </em>che espone al mondo esterno.</p><p>Come esempio, consideriamo i dati delle prenotazioni di un’azienda di viaggi, il cui ciclo di vita è gestito da servizi di back-end del portale web aziendale: ipotizziamo che una prenotazione venga rappresentata all’interno del layer di persistenza dell’applicazione con un modello relazionale, tramite una struttura di “testata” con le informazioni generali della prenotazione, una o più strutture di dettaglio in base al tipo di soluzioni (alloggi, trasporti, altri servizi…) inserite nella prenotazione, in relazione N:1 con la tabella di testata, contenenti diversi attributi specifici del tipo di soluzione. Considerando la totalità degli attributi rappresentati, probabilmente non tutti sono di interesse a livello aziendale al di fuori dell’applicazione web, per abilitare altri processi.</p><p>Pertanto, fare un’adeguata <strong>modellazione dei <em>Data On The Outside</em></strong><em> </em>richiede prima di tutto di porsi quesiti come i seguenti: che cos’è una <em>Prenotazione</em> dal punto di vista logico di business? Quali attributi semantici basilari sono di rilievo trasversale per l’azienda? Che significato hanno? Che tipo di valori possono assumere? Quali sono le regole invarianti che gli attributi devono garantire? Questo tipo di analisi non dovrebbe essere portata avanti considerando le esigenze specifiche di un unico sistema consumatore, come può essere il data warehouse, la <em>Business Intelligence</em>, o le richieste del team di data science, al contrario dovrebbe tenere un approccio più generale, finalizzato ad identificare le informazioni importanti per un qualunque processo aziendale che ne possa far richiesta.</p><p>Una volta completata la modellazione semantica e definito il set di informazioni da rendere accessibili per le integrazioni, si passano in rassegna aspetti più tecnici: ad esempio, a prescindere dalla rappresentazione relazionale del modello interno, si potrebbe valutare di esporre ogni prenotazione ai sistemi esterni come unico oggetto document-oriented, con le informazioni generali al livello più alto e le entry di dettaglio rappresentate su livelli innestati, scegliendo JSON come formato di rappresentazione e mappando i nomi dei campi relazionali del modello <em>Data On The Inside </em>con <strong>nomi comprensibili e agnostici</strong> dalle specificità dell’applicazione, da utilizzare nei <em>Data On The Outside </em>esposti.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/411/1*BonilxpRjx9S6fVZGyf6iQ.jpeg" /><figcaption>Nel design di un’applicazione, buona parte dell’effort dovrebbe essere concentrato sui Data On The Outside</figcaption></figure><p>A differenza del modello interno dei <em>Data On The Inside, </em>su cui l’applicazione mantiene totale autonomia e libero arbitrio nell’effettuare modifiche o evolutive, le <strong>interfacce</strong> che espongono i <strong><em>Data On The Outside</em></strong><em> </em>al resto dell’architettura dovrebbero rispettare delle <strong>regole di evolvibilità</strong> concordate a livello di <strong>governance aziendale</strong> e garantire determinati <strong>livelli di servizio </strong>definiti in documenti detti <strong><em>data</em> <em>delivery contract</em></strong><em>.</em></p><p>Nella nuova visione data-centrica, in base a quanto discusso, un’applicazione non solo mantiene la sua importanza funzionale, ma soprattutto assume rilevanza nel suo ruolo di <strong><em>data provider</em></strong><em>, </em>di produttore di asset digitali afferenti ad un determinato ambito del dominio aziendale.</p><p>A questo punto sorge però una domanda: come l’applicazione può esporre in modo ottimale e funzionale ai consumatori i dati core di cui è responsabile, per portarli al centro dell’architettura? Quali tecnologie e metodologie si rendono necessarie?</p><p>Per rispondere è necessario introdurre i concetti di <strong><em>Data Governance</em></strong> e <strong><em>Data Fabric</em></strong>, che tratteremo nei prossimi due articoli.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fa33404a67c3" width="1" height="1" alt=""><hr><p><a href="https://medium.com/quantyca/lapproccio-data-centrico-che-cambia-l-it-fa33404a67c3">L’approccio data-centrico che cambia l’IT</a> was originally published in <a href="https://medium.com/quantyca">Quantyca</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[I principi di un moderno Data Management]]></title>
            <link>https://medium.com/quantyca/i-principi-di-un-moderno-data-management-7f8da5df014a?source=rss----20e59f853442---4</link>
            <guid isPermaLink="false">https://medium.com/p/7f8da5df014a</guid>
            <category><![CDATA[data-strategy]]></category>
            <category><![CDATA[data-driven]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[data-management]]></category>
            <category><![CDATA[data-architecture]]></category>
            <dc:creator><![CDATA[Giulio Scotti]]></dc:creator>
            <pubDate>Thu, 14 Apr 2022 07:58:03 GMT</pubDate>
            <atom:updated>2022-07-20T12:36:24.408Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tAgO_0s1leDsONXdj_oH8g.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@wocintechchat?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Christina @ wocintechchat.com</a> on <a href="https://unsplash.com/s/photos/it-applications?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><h3>Abstract</h3><p>Questo articolo costituisce l’introduzione di una serie di blog post finalizzata a trasmettere i punti salienti della visione delle architetture IT enterprise e del <em>Data Management </em>che, come <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a>, proponiamo ai nostri clienti.</p><p>Negli articoli successivi tratteremo diversi aspetti che riteniamo interessanti per costruire piattaforme dati in grado di rispondere alle esigenze pressanti di un business che sta diventando sempre più data-driven.</p><p>Questo l’elenco dei prossimi articoli:</p><ul><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/lapproccio-data-centrico-che-cambia-l-it-fa33404a67c3"><strong><em>L’approccio data-centrico che cambia l’IT</em></strong></a><strong><em>”</em></strong>: sostiene la visione dei dati come asset condivisi attorno a cui costruire le architetture enterprise</li><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/lesigenza-di-governo-nella-gestione-dei-dati-e5e71af9162c"><strong><em>L’esigenza di governo nella gestione dei dati</em></strong></a><strong><em>”</em></strong><em>: </em>discute la necessità di costruire un framework di governance metadata-driven per mantenere il controllo della distribuzione dei dati nell’architettura enterprise</li><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/ladattabilit%C3%A0-della-piattaforma-di-integrazione-in-un-modello-data-fabric-8fa3d76d9667"><strong><em>L’adattabilità della piattaforma di integrazione in un modello Data Fabric</em></strong></a><strong><em>”</em></strong><em>: </em>descrive un nuovo modello di piattaforma architetturale intelligente e automatizzata</li><li><a href="https://medium.com/quantyca/il-domain-driven-design-applicato-ai-dati-per-una-maggiore-agilit%C3%A0-nella-progettazione-197823eac2a0"><em>“</em><strong><em>Il Domain Driven Design applicato ai dati per una maggiore agilità nella progettazione”</em></strong></a><em>: </em>riporta i punti fondamentali del modello di sviluppo software <em>Domain Driven Design</em>, che ha influenzato la proposta di nuovi modelli organizzativi anche per il <em>Data Management</em></li><li><a href="https://medium.com/quantyca/il-data-mesh-e-la-spinta-verso-una-gestione-dati-distribuita-f7c069e80e59"><strong><em>“Il Data Mesh e la spinta verso una gestione dati distribuita”</em></strong></a>: descrive le ragioni che hanno contribuito alla proposta del paradigma <em>Data Mesh,</em> in favore di una gestione dei dati decentralizzata e domain-oriented per ottenere scalabilità organizzativa</li><li><a href="https://medium.com/quantyca/il-data-mesh-e-il-consumo-self-service-dei-dati-come-prodotti-920e60f8aae"><strong><em>“Il Data Mesh e il principio di consumo self-service dei dati come prodotti”</em></strong></a>: descrive la visione dei dati come prodotti, che formano una rete di <em>domain-oriented Data Product </em>e sono fruiti tramite una piattaforma self-service e un modello di governance federato;</li><li><strong><em>“</em></strong><a href="https://medium.com/quantyca/la-data-strategy-come-motore-dellit-c6eca0321c03"><strong><em>La Data Strategy come motore dell’IT</em></strong></a><strong><em>”</em></strong><em>: </em>chiude la serie con un riassunto dei principi architetturali che riteniamo basilari per una strategia di <em>Data Management</em> efficace e una visione del ruolo dell’<em>Enterprise Architect</em> nel delineare l’evoluzione delle architetture dati</li></ul><h3>Le sfide dell’IT nell’era dei dati</h3><p>Nella mia esperienza come Data Architect in <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a>, ho l’occasione di conoscere svariate realtà aziendali, più o meno mature dal punto di vista della trasformazione digitale.</p><p>In generale lo stato di avanzamento di un’azienda nel processo di trasformazione digitale è direttamente proporzionale alla concezione che l’organizzazione ha del ruolo dell’IT: le aziende in ritardo considerano ancora la funzione IT come<strong> centro di costo</strong>, al contrario le imprese leader considerano l’IT come <strong>funzione di business</strong> alla pari delle altre, come abilitatore di vantaggio competitivo.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1001/1*zQ82rbdd_ascsoT6WzbnrA.png" /><figcaption>Il posizionamento differente del ruolo dell’IT a seconda del grado di maturazione digitale di un’azienda</figcaption></figure><p>La capacità dell’IT di fornire valore strategico può dipendere da diversi fattori, uno dei quali è il grado di modernità ed efficacia dell’architettura dati e applicativa. La maggior parte delle aziende non native digitali ha ereditato negli anni una strategia IT che si può definire <strong><em>application-centrica</em></strong>: l’organizzazione ha scelto di implementare soluzioni custom o acquistare prodotti di mercato dai vendor più affermati per rispondere alle funzionalità digitali richieste dal dominio di business (come la necessità di implementare un sistema <em>ERP</em>, un sistema di gestione del magazzino, un software di cassa, un sistema di controllo qualità o di monitoraggio degli impianti produttivi). Il <strong>design interno</strong> dei vari livelli (<em>presentation layer, business layer, persistence layer</em>) che costituiscono le applicazioni è stato comunemente il fattore primario considerato nella <strong>progettazione dell’architettura IT</strong>, dalla scelta degli stili architetturali alla scelta degli stack tecnologici e delle infrastrutture a supporto. In quest’ottica i <strong>dati</strong> erano considerati un <strong><em>by-product</em></strong> delle applicazioni, un elemento funzionale a mantenere lo stato applicativo e a supportare le logiche di processo.</p><p>Una strategia di questo genere era più che giustificata nella prima era di digitalizzazione, nella quale le applicazioni necessarie all’azienda erano relativamente poche: in un simile scenario, il contributo richiesto all’IT era, in primo luogo, di fornire supporto digitale ai processi aziendali core (ad esempio digitalizzare la gestione del magazzino, delle commesse ecc…). Pertanto, l’obiettivo primario era fondare un’architettura IT basata su <strong>applicazioni robuste ed affidabili</strong> nel svolgere il proprio <strong>compito operativo</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/521/1*lZz7pTgwsdvoPosD4tDRKQ.png" /><figcaption>Scenario IT application-centrico ereditato dalla prima era di digitalizzazione</figcaption></figure><p>Gli applicativi aziendali, per supportare alcuni processi, richiedevano comunque un minimo di <strong>integrazione a livello di servizi</strong>: per adempiere a questa esigenza, si è consolidato negli anni il modello <strong>S<em>ervice Oriented Architecture (SOA)</em></strong>, basato sui sistemi di <strong><em>Enterprise Service Bus (ESB)</em>.</strong></p><p>Oltre all’esigenza operazionale di digitalizzare i processi di business, era stato compreso fin da subito anche il valore dell’analytics e della <strong><em>Business Intelligence</em></strong><em>, </em>come area funzionale a supporto dei processi di decision-making aziendali. Tuttavia, essendo relativamente limitate le applicazioni sorgenti di dati e avendo incentrato le piattaforme analitiche dell’epoca su un unico data store centralizzato costituito dal <strong>data warehouse</strong>, le integrazioni rimanevano in un numero contenuto e venivano progettate secondo uno stile di <strong><em>Extract, Transform and Load (ETL)</em></strong> point-to-point, dalle applicazioni sorgenti al DWH target.</p><p>Nella nuova era di digitalizzazione tipica degli ultimi anni, l’esigenza non è più quella di digitalizzare i processi core, quanto piuttosto di usare il digitale per creare <strong>nuovi modelli di business</strong>. Il numero e la varietà delle sorgenti dati e delle applicazioni utilizzatrici, così come la pletora di finalità possibili di utilizzo dei dati per scopi operazionali e analitici, sono aumentate esponenzialmente: questo fenomeno ha reso le integrazioni, che prima erano considerate di secondo ordine, un aspetto di centrale importanza.</p><p>Infatti, nell’ultimo ventennio lo scenario è radicalmente cambiato: l’avvento del business online, la diffusione delle applicazioni mobile, la necessità di fornire all’utente più touch point con il brand aziendale su canali differenti, la personalizzazione dell’esperienza utente e gli investimenti sui sistemi di engagement, i progressi significativi fatti nell’area dell’intelligenza artificiale e della data science, la necessità sempre più spinta di<strong> integrare gli applicativi e i dati aziendali</strong>, come ad esempio per la realizzazione delle <em>customer data platform</em>, hanno portato a rivedere le scelte alla base delle architetture IT.</p><p>I <strong>modelli IT tradizionali</strong> che affidavano le attività di integrazione a team centrali, quali il team SOA per i processi operazionali e il team DWH per il mondo analitico, hanno iniziato a vacillare, in quanto questi team sono presto diventati dei <strong>colli di bottiglia</strong> che rallentano la capacità di delivery dei servizi digitali.</p><p>Alla luce di questo fatto, è il momento di cambiare prospettiva, gli strumenti tecnologici per farlo sono disponibili, quello che occorre è modificare radicalmente la visione sulla strategia digitale. Ci possono essere diverse vie, ma un tratto comune che si osserva è che le aziende più mature nella trasformazione digitale hanno iniziato un percorso per cercare diversi modelli di organizzazione verso un <strong>trend data centrico</strong>.</p><p>Questo implica interrogarsi su che valore hanno i dati prodotti e consumati da un’azienda all’interno dei processi digitali, al di là del loro utilizzo ai fini dei processi stessi e del ciclo di vita delle applicazioni che li producono o li consumano: come è possibile spendere al meglio il budget IT per costruire una <strong>piattaforma dati moderna, scalabile e versatile</strong>, che offra all’azienda nuovi asset duraturi e riusabili, da sfruttare per trarne vantaggio competitivo?</p><p>Il rischio di non affrontare questi temi nel modo corretto è di accumulare <strong>debito tecnologico</strong>: i prodotti software selezionati, tradizionali o moderni che siano, diventano con buona probabilità dei <strong><em>legacy</em></strong>, che tendono ad accentrare all’interno di essi sempre più funzionalità e dati, raggiungendo con buona probabilità livelli di <strong>complessità e costi di manutenzione</strong> insostenibili, al punto di condizionare e rallentare le scelte future sull’evoluzione dell’architettura.</p><p>Dal lato loro, i <strong>vendor</strong> di applicazioni enterprise spingono in questa direzione, per accentuare il <strong><em>lock-in</em></strong> dell’azienda cliente sul prodotto e garantirsi una fonte di revenue maggiore, fornendo piattaforme sempre più estese e apparentemente auto-consistenti, costruite attorno alle funzionalità core del prodotto stesso. Esempi di tali sistemi sono anche alcune piattaforme cloud native, che hanno sostituito in molte aziende i sistemi <em>ERP</em> e <em>CRM</em> tradizionali, ma che comunque fondano il loro business sull’attrarre il cliente a rimanere legato alla suite offrendo moduli fortemente integrati tra di loro e funzionalità di analytics on top della piattaforma centrale, offerta con modelli <strong><em>Platform as a Service(PaaS)</em></strong> o <strong><em>Software as a Service(SaaS)</em></strong>.</p><p>Tuttavia, nella realtà delle cose si osserva che non esiste un prodotto in grado di soddisfare bene tutte le esigenze digitali di un’azienda, pertanto <strong>l’integrazione non è una scelta, ma una necessità</strong>.</p><p>Le conseguenze del debito tecnologico accumulato e dell’approccio application-centrico vengono pagate nel momento in cui si presenta la necessità di integrare le soluzioni software per realizzare nuovi servizi data-driven. In quel momento ci si rende conto che si ha spesso a che fare con diversi <strong>data</strong> <strong>silos</strong> che è difficile far comunicare.</p><p>Il documento “<a href="https://www.mulesoft.com/lp/reports/connectivity-benchmark"><em>2022 Connectivity benchmark report</em></a><em>”</em> di Mulesoft ha evidenziato che i <strong>costi di integrazione</strong> <strong>assorbono più di 1/3 della spesa IT</strong> annuale nel mondo. Non deve pertanto sorprendere il fatto che si osservi una quantità ingiustificabile di progetti IT che eccedono il budget iniziale di ordini di grandezza e che immancabilmente sforano le deadline. Sempre secondo il report, infatti, nel 2021 la percentuale di progetti che non sono stati consegnati in tempo è del 52%.</p><p>Del resto, la richiesta di nuove funzionalità e di servizi digitali è sempre più pressante (nel 2021 il report stima una crescita della domanda del 40%), il budget IT cresce ma in modo non proporzionale alla domanda e gran parte di esso viene inevitabilmente investito in attività di integrazione, per cui il risultato è una difficoltà di delivery dei servizi. In un contesto competitivo altamente variabile e incerto, un fattore determinante di successo è dato non tanto da un un’economia di scala ma da un’<strong><em>economia di velocità</em></strong>: essere veloci nel rispondere ai cambiamenti delle esigenze di business, al variare delle priorità delle evolutive in backlog, poter adattare modalità e finalità di utilizzo dei dati in tempi brevi e cambiare agilmente la direzione strategica sono aspetti di fondamentale importanza.</p><p>In aggiunta ai costi diretti, è doveroso considerare anche la perdita indiretta che un’azienda subisce se non sfrutta al meglio il valore potenziale dei dati. Infatti, se questi rimangono confinati all’interno dei database privati delle singole applicazioni e, per ogni necessità esterna all’applicazione, bisogna mettere in opera una nuova soluzione di integrazione ad-hoc con il sistema consumatore, è difficile riutilizzare i dati per abilitare <strong>servizi data-driven</strong> e applicazioni analitiche avanzate (casi d’uso molto richiesti oggigiorno, come monitoraggio in real time dei processi, previsioni e modelli di machine learning, identificazione di frodi, sistemi di raccomandazione, customer data platform, solo per citarne alcuni).</p><p>Pertanto è necessario rivedere le priorità che diamo nella progettazione delle architetture aziendali. Buona parte dello sforzo di design di un’architettura IT dovrebbe essere dedicato alla <strong>strategia di gestione dei dati</strong>: i componenti nell’architettura che salvano, elaborano, orchestrano e distribuiscono i dati sono quelli che avranno il peso specifico più determinante nelle scelte di evoluzione. Infatti, uno dei fattori primari che si considerano nel valutare migrazioni di prodotti o revisioni architetturali è l’incidenza della <strong><em>Data Gravity: </em></strong>tipicamente migrare una funzionalità software in un’altra applicazione è un’attività meno onerosa che spostare grossi volumi di dati in un nuovo sistema, che solitamente comporta la necessità di gestire i costi di trasferimento, la compatibilità dei modelli, l’allineamento continuo durante il transitorio e la gestione del caricamento iniziale.</p><p>Dopo questa breve introduzione alle sfide che l’IT si trova a dover affrontare nell’era moderna, nei prossimi articoli di questa serie cercheremo di delineare i <strong>pillar</strong> su cui si basano la <strong>visione architetturale e di data management</strong> che, come <a href="https://www.linkedin.com/company/quantyca/"><strong>Quantyca</strong></a>, proponiamo ai clienti per rispondere alle loro necessità digitali. Ogni realtà aziendale ha il suo contesto e le sue esigenze peculiari, pertanto non esiste una strategia unica e perfetta per ogni organizzazione, al contrario l’architettura IT ottimale per un’azienda è spesso riflesso dell’organizzazione e della cultura aziendale: esistono però dei buoni principi che tracciano la direzione da seguire nell’evolvere l’architettura dati, per raggiungere l’agilità necessaria per la richiesta digitale di oggi e di domani.</p><p>In questa serie di blog post inizieremo illustrando il valore del <strong>principio di centricità dei dati</strong>, sostenendo l’approccio proposto dal <a href="http://www.datacentricmanifesto.org/principles/"><em>Data Centric Manifesto</em></a>, in cui i dati sono considerati come asset condivisi e riusabili a livello di intera organizzazione, che oltrepassano il perimetro di una singola applicazione. Vedremo poi la differenza tra i concetti di <em>Data On The Inside</em> e <em>Data On The Outside</em>, che pone le basi per gli stili di integrazione moderni. Continueremo poi il percorso ponendo l’attenzione sul <strong>principio di governo</strong> di un’architettura IT, entrando nel merito delle tematiche specifiche di <em>Data Governance</em> e di automazione metadata-driven. Concluderemo parlando del<strong> principio di adattabilità</strong> che, sotto l’aspetto tecnologico e architetturale trova concretizzazione nella proposta dei modelli di <em>Data Fabric</em> e <em>Data Mesh</em>. Quest’ultimo, in particolare, sfruttando l’influenza rilevante del <em>Domain Driven Design</em> sul mondo dati, aggiunge un’ulteriore dimensione di adattabilità, proponendo modelli organizzativi federati e decentralizzati, per massimizzare la rapidità di delivery dei progetti di data management.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7f8da5df014a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/quantyca/i-principi-di-un-moderno-data-management-7f8da5df014a">I principi di un moderno Data Management</a> was originally published in <a href="https://medium.com/quantyca">Quantyca</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Come catturare le scie luminose prodotte dai dati con SingleStore]]></title>
            <link>https://medium.com/quantyca/come-catturare-le-scie-luminose-prodotte-dai-dati-con-singlestore-501a25795605?source=rss----20e59f853442---4</link>
            <guid isPermaLink="false">https://medium.com/p/501a25795605</guid>
            <category><![CDATA[htap]]></category>
            <category><![CDATA[storage]]></category>
            <category><![CDATA[realtime]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[analytics]]></category>
            <dc:creator><![CDATA[Pietro La Torre]]></dc:creator>
            <pubDate>Fri, 11 Dec 2020 10:07:34 GMT</pubDate>
            <atom:updated>2020-12-11T10:07:34.756Z</atom:updated>
            <content:encoded><![CDATA[<p>Prima o poi tutti i fotografi si cimentano nell’immortalare scie luminose sfruttando le luci di auto o altre fonti artificiali nella notte. Aumentando il tempo di esposizione della macchina fotografica, ogni fonte luminosa lascia una traccia del proprio movimento. Giocando con i tempi di scatto e con il movimento dei soggetti si possono produrre immagini bellissime e surreali.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Vep9eSFWNg8ATscW" /><figcaption>Photo by <a href="https://unsplash.com/@timaesthetic?utm_source=medium&amp;utm_medium=referral">Tim Rüßmann</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Le scie luminose possono rappresentare il concetto di flusso di dati o quello di real-time: anche l’informazione più microscopica, se raccolta in modo opportuno e poi trasformata, insieme a tantissime altre può produrre risultati esaltanti. Se pensiamo a tutti i dati prodotti dalle applicazioni e alle opportunità che possono derivare dal loro sfruttamento, chi non vorrebbe catturare le scie luminose lasciate dai dati?</p><p>E’ con questa immagine in mente che vi invito a leggere questo blogpost che parla di real-time analytics, dei diversi volti che assumono i dati oggi e di come evolvono le tecnologie per far fronte a nuovi requisiti creando nuove opportunità. In particolare parleremo di <strong><em>SingleStore</em></strong> (fino a qualche settimana fa noto come <em>MemSQL</em>) e di come si sia affermato tra le tecnologie <em>HTAP</em>, anello di congiunzione tra tecnologie <em>OLTP</em> e <em>OLAP</em>, che permettono l’implementazione di casi d’uso di tipo <em>operational</em> e <em>real-time analytics</em>.</p><h3>Introduzione</h3><p>Negli ultimi 40 anni si è affermata la best-practice di implementare use-case analitici su data store separati da quelli adottati per fornire supporto operazionale/transazionale. Questa scelta è stata condizionata dalle performance limitate dei sistemi tradizionali, che rendeva impossibile concentrare volumi elevati di letture e di scritture nello stesso perimetro.</p><p>Questo è vero ancora oggi: nella maggior parte dei casi si impiegano database disegnati ed ottimizzati per elaborazioni transazionali (<em>OLTP</em>) per workload di tipo operazionale e si utilizzano tecnologie di tipo <em>OLAP </em>per BI e workload analitici.</p><h3>Dati Operazionali e Analitici: due facce della stessa medaglia</h3><p>Ultimamente quando si parla di <strong><em>Data Dichotomy </em></strong>si pone l’accento su una dimensione attorno alla quale i dati sono distinguibili: dati operazionali e dati analitici.</p><p>I dati di tipo <em>operazionale</em> servono agli scopi del business permettendo il funzionamento di applicativi e servizi in genere. Sono organizzati tipicamente in <em>Row Store </em>e direttamente su di essi si appoggiano le applicazioni che eseguono accessi puntuali per leggere/scrivere informazioni. Per questo motivo è fondamentale che siano ottimizzati per garantire alti throughput (in particolare per la scrittura) e per sostenere elevata concorrenza. Spesso questi dati sono chiamati <em>“data on the inside”</em> intendendo che questa è la porzione contenuta nel servizio stesso ed esposta solo se necessario via <em>API </em>per stabilire cosa far vedere e a chi. Ci sono diverse tipologie di prodotti tra cui scegliere per questa tipologia di dati: dai classici <em>DB relazionali </em>ai <em>DB a grafo</em>, per casi d’uso dove privilegiare le relazioni tra entità, a quelli <em>NoSQL </em>per maggiore flessibilità e per il supporto all’out-scaling, oppure ancora ai <em>Document Store</em> per gestire dati semi-strutturati. Tra le tecnologie in gioco ci sono grandi player storici come <em>Oracle, PostgreSQL o Microsoft SQL Server</em>, a cui si aggiungono prodotti più recenti che presidiano particolari sotto-aree come <em>Elasticsearch, Redis, Neo4j o MongoDB</em>. A questi si affiancano le offerte dei vari cloud provider tra cui <em>Amazon RDS, Google Cloud SQL o Microsoft Azure SQL</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/658/1*yHF8svdRCkRpbYlIHPGogw.png" /><figcaption><strong>Operational Data e tecnologie a supporto</strong></figcaption></figure><p>Sull’altra faccia della medaglia ci sono i dati di tipo <em>analitico</em>, che nascono come supporto alla BI e quindi con l’obiettivo di calcolare KPI allo scopo di migliorare processi aziendali. Sono organizzati tipicamente in <em>Column Store </em>e permettono l’interrogazione di grandi volumi di dati con profondità storica. Sono quindi pensati per sostenere elevati throughput di lettura e bassa latenza. Questi dati rientrano nei <em>“data on the outside”</em>, trattandosi di informazioni che sono scambiate tra più componenti tra loro indipendenti: cioè avviene attraverso la propagazione di eventi, lo scambio di file o l’integrazione dei dati in tabelle. Tra i tipi di prodotti che trattano questa categoria di dati ci sono gli <em>object store</em> (soprattutto per raccogliere dati <em>raw</em> costruendo dei <em>data lake</em>), i database analitici (che ottimizzano il formato dei dati per l’interrogazione via SQL) o gli <em>streams </em>(per la propagazione delle informazioni introducendo un disaccoppiamento tra chi produce e chi consuma). Tra le tecnologie citiamo come data warehouse <em>Teradata </em>e <em>Vertica</em>, come <em>Data Platform </em>si affermano invece<em> Cloudera </em>e <em>Snowflake</em> e naturalmente non mancano i prodotti dei cloud provider tra cui <em>Amazon Redshift, Google BigQuery e Azure Synapse Analytics</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/673/1*QkkTHJ9Ecl7vNPVOUAli4w.png" /><figcaption><strong>Analytical Data e tecnologie a supporto</strong></figcaption></figure><h3>Integration</h3><p>I dati fluiscono tra questi due mondi andando dai sistemi operazionali a quelli analitici. Questo può avvenire in due modalità:</p><ul><li><em>via batch</em>, trasferendo i dati in modo asincrono e processandoli in lotti che sono disponibili sul target con un ritardo nell’ordine delle ore.</li><li><em>in streaming</em>, propagando i dati in modo continuo (o quasi) eseguendo dei micro-batch e riducendo il ritardo nell’ordine dei minuti.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/803/1*r9l216WbOd6St7-In7bHxA.png" /><figcaption>Modalità di ingestion e freschezza dei dati analitici</figcaption></figure><p>Non è escluso naturalmente anche un ciclo di ritorno in cui alcuni dati analitici sono portati sui sistemi OLTP per il loro utilizzo all’interno delle applicazioni (es. app che riporta statistiche settimanali/mensili).</p><p>Tuttavia questo fenomeno migratorio dei dati consuma del tempo e il tempo è denaro: i casi d’uso analitici hanno dei veri e propri requisiti temporali per poter garantire un azione contestuale che porti valore. In base a quanto tempo si è disposti ad attendere per l’elaborazione di un insight si possono distinguere varie casistiche a cui corrispondono diversi stack tecnologici: si parla di <em>finestra di reattività.</em></p><p>Siamo in presenza di <strong><em>Strategic Analytics</em></strong> quando il tempo che intercorre tra la produzione di un insight e l’azione è compreso tra mesi e anni: ad esempio se si registrano incrementi delle richieste di mobili, si decide di espandere la linea di produzione. Oppure quando questo intervallo è compreso tra minuti e mesi si parla di <strong><em>Performance Analytics</em></strong>: un caso tipico è una previsione di incremento delle vendite a cui corrisponde l’azione di incrementare le scorte. Per queste prime due categorie di analytics i sistemi tradizionali di BI calzano alla perfezione: sia i <em>Data Warehouse</em> che i <em>Data Lake</em> sono adeguati: si preferirà uno all’altro in funzione del volume dei dati e del loro formato. Il tutto viene reso possibile attraverso una fitta rete di flussi di data integration che raccolgono i dati dai sistemi sorgente e li depositano su questi storage.</p><p>E quando i requisiti temporali sono più stretti quali sono gli scenari che si prospettano?</p><p>Si parla di <strong><em>Operational Analytics</em></strong> quando la reattività è compresa tra i secondi e i minuti: importante ad esempio per sistemi di vendita online nel momento in cui i profitti sono inferiori agli obiettivi per correggere i prezzi on-the-fly in funzione del volume delle richieste. Mentre per requisiti ancora più stringenti, inferiori al secondo o al massimo nell’ordine dei secondi, si parla di <strong><em>Real-time Analytics</em></strong>: ad esempio durante lo shopping online se il cliente inserisce nel carrello un prodotto si fa <em>recommendation</em> di un prodotto correlato oppure si pensi all’integrazione con sistemi di natural language, processing, di image recognition o di fraud detection che devono reagire in modo tempestivo. Per sostenere queste due categorie di <em>analytics</em> i sistemi tradizionali non sono più adeguati.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*swWEWo8nVYMQ7bPgcAKdig.png" /></figure><p>Perchè? Proprio per via di come tali sistemi sono strutturati a basso livello: non riescono a rispondere a entrambi i requisiti richiesti, fast ingestion e bassa latenza per query analitiche. Infatti i <em>Row Store</em> supportano fast ingestion trattando i dati nel loro formato nativo senza applicare alcuna ottimizzazione a livello di encoding o compression, ma proprio per questo motivo non sono adeguati per workload analitici. Al contrario i <em>Column Store</em> sono adeguati a workload analitici ma se ricevono grossi volumi di dati in ingresso a distanza troppo ravvicinata vedono un degrado considerevole delle performance di lettura a causa delle operazioni necessarie alla compaction e all’ottimizzazione di tutti i dati ricevuti nel frattempo.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/657/1*5X9OPxamkjJDYusBM7CNow.png" /></figure><p>Fortunatamente, negli ultimi 5 anni si è affermato un nuovo tipo di soluzione che cerca di colmare questo buco tecnologico. Si tratta dei sistemi <strong><em>HTAP</em></strong> (<em>Hybrid Transactional and Analytical Processing</em>) o <strong><em>HOAP</em></strong> (privilegiando il termine <em>Operational</em> a <em>Transactional</em>, per non escludere sistemi NoSQL e non relazionali).</p><p>I prodotti che rientrano in questa categoria sono molteplici: a partire da <strong><em>SAP Hana</em></strong>, pioniere sul mercato, e continuando con prodotti <em>NewSQL</em> (che portano la scalabilità dei sistemi <em>NoSQL</em> per workload <em>OLTP</em> pur continuando a garantire le proprietà <em>ACID</em> dei sistemi tradizionali). Tra questi spicca <strong><em>SingleStore</em></strong>, di cui parleremo tra poco. Hanno introdotto il supporto a questo tipo di workload anche alcuni sistemi documentali e database <em>NoSQL</em> come <strong><em>Redis Labs </em></strong>e<strong><em> Aerospike</em></strong> o <em>In-Memory Computing Platform</em> come <strong><em>GridGain</em></strong>.</p><p>Tuttavia <strong><em>SingleStore</em></strong><em> </em>rispetto a <em>SAP Hana</em> e ad altri prodotti blasonati ha un <strong><em>TCO</em></strong> decisamente più basso mentre rispetto ai NoSQL ha evidentemente il notevole vantaggio di supportare il linguaggio SQL.</p><p>Inoltre un altro aspetto da considerare nel confronto tra prodotti documentali e <strong><em>SingleStore </em></strong>è la flessibilità nella definizione di <strong><em>single view</em></strong>.<strong><em> </em></strong>Infatti, nonostante i documentali permettano ormai di creare<em> cross-reference</em> tra più elementi, quando le viste coinvolgono più di un paio di entità o richiedono interrogazioni complesse ci si scontra presto con un degrado delle performance di aggiornamento delle <em>single view </em>(che può superare la decina di secondi).</p><blockquote>Un esempio di vista complessa? ottenere il dettaglio di un cliente che fa 4/5 visite al mese in un negozio e per ogni visita fa uno scontrino da almeno 20 prodotti di categoria X, con le relative promozioni utilizzate.</blockquote><blockquote>Entità coinvolte: cliente, negozio, scontrino, prodotti, promozioni</blockquote><p>Naturalmente anche i big player come <strong><em>Oracle</em></strong> e <strong><em>SQL Server</em></strong> non sono rimasti a osservare e anche loro hanno previsto copertura per questi workload. Tuttavia <strong><em>SingleStore</em> </strong>prevale anche in questo caso dal momento che essendo stato realizzato nativamente per workload HTAP raggiunge performance migliori a parità di risorse computazionali e quindi con TCO inferiore.</p><p>Per approfondire il confronto tra <strong><em>SingleStore</em></strong> e i competitor si rimanda a <a href="https://www.singlestore.com/comparisons">questo link</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-iWQvBocSxayGx89LTrhyA.png" /></figure><p>Una precisazione è d’obbligo: questo tipo di sistemi non entra in competizione con i prodotti <em>OLAP</em>. Infatti lo use-case primario su cui si fondano i sistemi <em>HTAP</em> è il supporto al <em>real-time analytics</em> sui dati operazionali, per individuare insight a partire dati prodotti dalle applicazioni prima ancora che questi vengano estratti e trasferiti sul <em>Data Warehouse</em>. Tuttavia dal momento che sempre più vendors di storage <em>OLTP</em> annunciano o aspirano ad annunciare l’apertura a workload di tipo <em>HTAP</em>, ci si chiede se avrà ancora senso in futuro fare una distinzione tra <em>OLTP </em>e <em>HTAP</em>. Si stima che nel 2021 i workload di tipo <em>HTAP</em> costituiranno oltre il 40% dei nuovi workload di tipo operazionale (come incremento sugli anni precedenti).</p><h3>Overview di SingleStore</h3><p>SingleStore si posiziona a pieno titolo tra le tecnologie <em>HTAP</em> e questo grazie principalmente a 3 features:</p><ul><li><em>Fast Data Ingest</em></li><li><em>Low Latency Queries</em></li><li><em>High Concurrency</em></li></ul><p>Grazie a queste features permette un’alimentazione in real-time garantendo la fruibilità del dato in pochi istanti con tempi di lettura ridotti e costanti anche in presenza di elevata concorrenza, soddisfando quindi i requisiti per use case di tipo <em>Operational </em>e<em> Real-Time Analytics</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/685/1*4ky5jTQQ537Cehj6i4o6qQ.png" /><figcaption>le 3 feature principali di Singlestore</figcaption></figure><p>Queste features sono sorrette a livello tecnico da un <strong>utilizzo efficiente della memoria</strong>, che sfrutta sia il disco che la memoria volatile, da un’<strong>architettura distribuita e scalabile orizzontalmente</strong> e da un’<strong>interfaccia relazionale</strong> verso utenti e applicazioni basata su linguaggio SQL e <strong>binary compliant con <em>MySQL</em></strong> (la connessione a <em>SingleStore</em> via <em>JDBC</em> avviene con driver <em>MySQL</em>)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/531/1*6d3ZoOgKSTnfXMzmDKiT_w.png" /><figcaption>Caratteristiche ad alto livello dell’architettura</figcaption></figure><p>A livello fisico i dati sono organizzabili su due tipologie di storage:</p><ul><li><em>In-Memory RowStore</em>, particolarmente indicato per l’ingestion di stream di dati ed elaborazioni real-time</li><li><em>ColumnStore</em> che sfrutta la capacità di dischi fisici, più adatto all’interrogazione di grosse moli di dati storici</li></ul><p>La tipologia di storage viene scelta in fase di creazione di una tabella e i dati possono fluire tra le tabelle (e quindi gli storage corrispondenti) attraverso le <a href="https://docs.singlestore.com/v7.1/key-concepts-and-features/pipelines/pipelines-overview/"><strong><em>pipeline</em></strong></a>: per sfruttare il formato più efficiente in ogni situazione.</p><p><em>SingleStore</em> ha avviato ormai da diversi mesi <a href="https://www.singlestore.com/blog/memsql-singlestore-then-there-was-one/">un progetto chiamato <em>Universal Storage</em></a> con cui sta cercando sempre più di far convergere questi due formati. Lavorando in tal senso, la versione 7.1 ha escogitato diverse soluzioni, tra cui citiamo:</p><ul><li>la possibilità di consentire al <em>RowStore</em> di gestire un volume di dati molto superiore alla quantità di RAM disponibile, riducendo il TCO e preservando le performance. Questo grazie soprattutto alla compressione di valori <em>NULL</em>, che permette di risparmiare molta memoria per dataset sparsi.</li><li>il supporto ad accessi puntuali per il <em>ColumnStore</em> per sostenere workload con elevata concorrenza di read/write, introducendo <em>Hash Indexes, Row-Level Locking e Subsegment Access</em>.</li></ul><p>L’ingestion dei dati può avvenire via <em>streaming</em> o attraverso l’esecuzione di <em>batch</em>. Mentre le tipologie di dati supportati spaziano dal <em>chiave-valore</em>, ai formati semi-strutturati come <em>JSON</em> e <em>Avro</em>, ai dati <em>geo-spaziali</em> e alle <em>time-series</em>. Inoltre <em>SingleStore</em> può essere usato ovunque: dal deploy on-premise, all’utilizzo di container su <em>Kubernetes</em> oppure ancora in modalità <em>SaaS</em> (con la versione <a href="https://www.singlestore.com/managed-service/"><strong><em>SingleStore Managed</em></strong></a>).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/987/1*-KqBU8cytcIiFHPHT-lxfg.png" /><figcaption>SingleStore Overview</figcaption></figure><p>Con queste caratteristiche ha tutte le carte in regola per coprire sia use-case analitici che operazionali. E’ evidente quindi come siano tante le tipologie di situazioni in cui si può impiegare <em>SingleStore</em>: di seguito si tratterà un primo set di use case che ruotano attorno al concetto di omnicanalità e all’architettura del Digital Integration Hub. Per chi fosse curioso di scoprirne altri, vi invito a registrarvi <a href="https://sites.google.com/quantyca.it/singlestoremanypurposes/home-page">a questo link</a> dove troverete il webinar che abbiamo fatto di recente con Quantyca: al suo interno parliamo anche dell’adozione di <em>SingleStore</em> per costruire un <em>feature store</em> per modelli di <em>machine learning</em> o ancora per generare <em>single view</em> all’interno di un <em>serving layer</em>.</p><h3>Qualche use case a proposito di Digital Integration Hub</h3><p>Ultimamente quando si parla di omnicanalità e viene sempre più spesso citato il <em>Digital Integration Hub </em>(<em>DIH</em>). Infatti il <em>DIH</em> è un pattern architetturale con cui è possibile raccogliere in real-time dati provenienti da più sistemi, senza sovraccaricare questi ultimi, e renderli fruibili a una fitta rete di micro-servizi esposti via API che li adattano alle esigenze degli utenti finali per costruire piattaforme omnicanale. Tuttavia, questa architettura non può gravare sulle spalle dei sistemi legacy sottostanti:</p><ul><li>la maggior parte di questi sistemi può essere già a corto di risorse</li><li>tipicamente non si tratta di sistemi in grado di scalare orizzontalmente</li><li>i costi di licenza o legati al consumo di risorse sono elevati</li></ul><p>La scelta critica per implementare questa architettura è quindi la scelta dello storage per costruire le <em>single view, </em>asset logici con cui interagiscono micro-servizi e applicazioni di real-time analytics, e la loro alimentazione a partire dai sistemi sottostanti. Questo layer deve poter garantire supporto OLAP e OLTP, ingestion e consumo in real-time ed essere capace di scalare orizzontalmente per far fronte a volumi crescenti di dati o di consumers. Il tutto riducendo il più possibile il TCO.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/456/1*16UOQoXRWQ_KUcSuVIfcOw.png" /><figcaption>Architettura Digital Integration Hub (le componenti in gioco sono colorate)</figcaption></figure><p>Con questa architettura si può rispondere a uno scenario molto diffuso: risolvere i limiti del pattern di <em>Event Sourcing</em> per i micro-servizi. Questo pattern prevede che ad ogni modifica ai dati corrisponda la produzione di un evento sul data bus e che ogni consumer interessato debba ricevere tutto lo storico di eventi per saper ricostruire lo stato in un dato istante temporale. Se da un lato questo approccio va bene per scenari complessi, dall’altro è eccessivo richiedere la riproduzione di tutti gli eventi a un micro-servizio che avesse bisogno solo di un accesso puntuale a una porzione dei dati. Per ovviare a questo limite si può impiegare il pattern del DIH introducendo <em>SingleStore</em> come <em>High Performance Data Store</em> che consuma tutti gli eventi prodotti dai micro-servizi creando uno stato condiviso accessibile a tutti. A questo punto i <a href="https://thenewstack.io/miniservices-a-realistic-alternative-to-microservices/">mini-servizi</a> (chiamati così perchè condividono il data store) che hanno bisogno di fare un’accesso puntuale possono semplicemente interrogare <em>SingleStore</em> via SQL. Questo inoltre semplifica scenari come il calcolo di metriche cross-entità o l’aggregazione di dati in una singola entità, che richiederebbero diversi sforzi in assenza dello store condiviso e del supporto SQL.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/361/1*da1zvaQp2q20N7x75I0hKg.png" /><figcaption>Mini-servizi</figcaption></figure><p>Un’altra casistica in cui il <em>DIH</em> può venire in nostro soccorso è quella della modernizzazione dei sistemi legacy: attraverso l’integrazione dei dati prodotti da essi in un’architettura che li renda fruibili ad altri sistemi senza impatti sul legacy stesso. Questo è possibile collegando un <em>Change Data Capture</em> al transaction log dei sistemi legacy e riproducendo tutti gli eventi sul Data Bus. In dati sono scodati in real-time dal bus e salvati sull’<em>High Performance Data Store</em> da cui poi i micro-servizi possono leggere le informazioni. I micro-servizi che hanno anche l’esigenza di modificare i dati pubblicano eventi sul Data Bus, da cui verranno scodati ed eseguiti in modo asincrono i “command” (seguendo il pattern <em>CQRS</em>) da parte del sistema legacy. I dati modificati seguiranno poi il percorso già descritto. In questo modo si genera un loop di modifica e propagazione dell’informazione che genera una <em>finestra di incosistenza eventuale</em>: letture intercorse prima del termine del loop si baserebbero su dati consistenti ma non ancora aggiornati. E’ fondamentale quindi la scelta di un prodotto che garantisca fast intestion e bassa latenza per ridurre l’ampiezza di questa finestra. <em>SingleStore</em> risulta quindi perfetto per lo scopo.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/508/1*ijSIIU1ElRzzD-n3Wl0SqQ.png" /><figcaption>Legacy Modernization</figcaption></figure><p>Un’ultima situazione che si cita è quella relativa alla gestione delle informazioni provenienti da sensori <em>IoT</em>. Anche in questo caso gli eventi sono raccolti sul Data Bus, per disaccoppiare produttori e consumatori sia in termini temporali (ritmi diversi tra chi scrive e chi legge) che spaziali (evitando connessioni punto punto tra sistemi). Dal Bus gli eventi sono poi propagati sull’<em>High Performance Data Store</em> dove si possono attuare sia analisi classiche di BI, sia algoritmi di <em>real-time analytics</em>, ad esempio per generare delle azioni correttive sui sensori. Ancora una volta <em>SingleStore</em> calza perfettamente come data store da impiegare per questo caso d’uso grazie alla sua capacità di scalare orizzontalmente e alla fast-ingestion. Inoltre in questo contesto, grazie al supporto per le <a href="https://docs.singlestore.com/v7.1/guides/use-memsql/develop/functional-extensions/analyzing-time-series-data/analyzing-time-series-data/">time-series</a> e per le <a href="https://docs.singlestore.com/v7.1/reference/sql-reference/geospatial-functions/geospatial-functions/">funzioni geo-spaziali</a>, permette lo sviluppo di applicazioni avanzate con sforzo minimo.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/437/1*D26MiaUKhleUM--LkPWA1g.png" /><figcaption>IoT</figcaption></figure><h3>Integrazioni con altri prodotti</h3><p>Tra le integrazioni con prodotti di terze parti vale la pena citare:</p><ul><li><strong>Confluent Kafka</strong>. Integrazione possibile in modalità pull, con le <a href="https://docs.singlestore.com/v7.1/guides/use-memsql/load-data/kafka/kafka-extractor/">Pipeline di SingleStore</a>, o in modalità push, attraverso il <a href="https://www.confluent.io/hub/memsql/memsql-kafka-connector">Connector di Confluent per Singlestore</a></li><li><strong>Spark</strong>. Utilizzando un connettore ad-hoc che supporta la traduzione delle operazioni fatte sui dataframe in SQL e il push-down della computazione su SingleStore. A <a href="https://memsql.wistia.com/medias/lubjdif5lv?elqTrackId=4597a505d79c4b34aae7072909b60f64&amp;elq=e43b17f3981840e7bbd6a43e9d3614f4&amp;elqaid=1296&amp;elqat=1&amp;elqCampaignId=">questo link</a> potete trovare un webinar sul tema.</li><li><strong>Talend</strong>. Attraverso <a href="https://docs.singlestore.com/v7.1/third-party-integrations/connecting-to-talend-memsql-connector/">un set di componenti ad-hoc</a></li><li><strong>Strumenti di BI</strong> in genere. Utilizzando il driver jdbc di MySQL</li></ul><h3>Conclusioni</h3><p>Le società stanno sempre più prediligendo soluzioni di analytics avanzato per il supporto a decisioni strategiche agendo in misura sempre crescente sulla riduzione della <em>finestra di reattività .</em></p><p>I prodotti emergenti di tipo <em>HTAP</em> permettono di coprire quello che era un punto cieco, fare analytics subsecond, e rispondere a domande che prima non potevano essere espresse. Sono tanti gli use-case che possono trarre vantaggio da queste nuove soluzioni. Grazie a tecnologie come <em>SingleStore</em>, sorgono nuove opportunità per rispondere meglio e più in fretta alle esigenze analitiche e per rispondere quindi più efficacemente a decisioni importanti per il business.</p><p>Spero che questo blogpost vi sia piaciuto e abbia fatto luce sugli aspetti fondamentali di <em>SingleStore</em>, dei contesti in cui impiegarlo e delle sfide che permette di risolvere. Se vi è piaciuto lasciate qualche clap per farmelo sapere e state sintonizzati sul profilo ufficiale di Quantyca su <a href="https://www.linkedin.com/company/quantyca/">linkedin</a> e qui su <a href="https://medium.com/quantyca">medium</a>.</p><p>Per chi è interessato <a href="https://sites.google.com/quantyca.it/singlestoremanypurposes/home-page">a questo link</a> potete iscrivervi al webinar che parla dei temi citati in questo blogpost e di altri ancora.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=501a25795605" width="1" height="1" alt=""><hr><p><a href="https://medium.com/quantyca/come-catturare-le-scie-luminose-prodotte-dai-dati-con-singlestore-501a25795605">Come catturare le scie luminose prodotte dai dati con SingleStore</a> was originally published in <a href="https://medium.com/quantyca">Quantyca</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Designing Serverless Web Applications with Amazon Web Services]]></title>
            <link>https://medium.com/quantyca/designing-serverless-web-applications-with-amazon-web-services-1ccad3099d91?source=rss----20e59f853442---4</link>
            <guid isPermaLink="false">https://medium.com/p/1ccad3099d91</guid>
            <category><![CDATA[web-applications]]></category>
            <category><![CDATA[dev]]></category>
            <category><![CDATA[amazon-web-services]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[aws]]></category>
            <dc:creator><![CDATA[Stefano Stasuzzo]]></dc:creator>
            <pubDate>Tue, 17 Nov 2020 08:48:04 GMT</pubDate>
            <atom:updated>2020-11-17T08:48:03.999Z</atom:updated>
            <content:encoded><![CDATA[<p>Hello everyone! I’m <a href="https://www.linkedin.com/in/stefano-stasuzzo-03819b53/">Stefano</a>, a Data Engineer at <a href="https://www.linkedin.com/company/quantyca/">Quantyca</a> — an IT consulting company — and every day I am committed to facing new technological challenges in data management, system integration, Big Data architectures, and software development.</p><p>In this post, I will explain what <strong><em>serverless computing</em></strong><em> is </em>and how to design a <strong><em>serverless</em></strong><em> </em><strong><em>architecture</em></strong> using Amazon Web Services (AWS) tools. In the first chapter, we will introduce the concept of serverless computing and list the advantages and disadvantages of this approach. In the second part, we will explore a typical three-tier architecture and which AWS services we can implement based on our needs. Finally, I will describe the sequence diagram of a simple use case implemented with some AWS serverless services.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*rhPEtZ7enArFpX5G" /><figcaption>Photo by <a href="https://unsplash.com/@jxndreas?utm_source=medium&amp;utm_medium=referral">Andreas Kind</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>What Is Serverless Computing?</h3><p>Serverless computing is a method of providing backend services on an “as used” basis. Serverless architecture allows users to write and implement code without having to worry about the underlying infrastructure. However, despite the name, serverless does not mean that the code runs without servers, but it means that the concerns about the server management disappear for developers. For this reason, in this architectural paradigm, there is no need to purchase, rent, or provision servers in advance in order to host and execute the server-side code.</p><p><strong>Traits of serverless architectures:</strong></p><ul><li><strong><em>Low barrier-to-entry:</em></strong> it’s relatively straightforward to start getting your code running in a serverless architecture.</li><li><strong><em>Hostless:</em> </strong>there are no servers to work with, this brings a significantly less operational overhead on their maintenance.</li><li><strong><em>Stateless:</em> </strong>the compute containers running your code will automatically be created and destroyed by your platform hence you can’t store anything in memory.</li><li><strong><em>Elasticity: </em></strong>this means there is no need for the manual management of resources, and that many challenges in resource allocation disappear.</li><li><strong><em>Distributed:</em> </strong>since<strong> </strong>deployment units are very small, serverless architecture is intrinsically distributed.</li><li><strong><em>Event-driven:</em> </strong>this paradigm promotes production, detection, consumption, and reaction to events and as a result, there will be a low level of coupling between the components of the architecture.</li></ul><p><strong>Limitations</strong> <strong>of serverless architectures:</strong></p><ul><li><strong><em>Vendor control:</em> </strong>with any outsourcing strategy you are giving up control of some of your system to a third-party vendor and such lack of control may manifest as system downtime, unexpected limits, cost changes, loss of functionality, and more.</li><li><strong><em>Vendor lock-in:</em> </strong>almost certainly Serverless features from one vendor will be implemented differently by another vendor. So, if you want to switch vendors you’ll probably need to change your operational tools, your code and, your design or architecture.</li><li><strong><em>Startup latency:</em> </strong>cold starts may add latency to an invocation.</li><li><strong><em>Execution duration:</em> </strong>the duration of executions can be limited.</li><li><strong><em>Unpredictable cost:</em></strong> since the majority of services are pay-per-use, it’s difficult to predict the final cost.</li><li><strong><em>Testing and debugging: </em></strong>since everything is and runs in the cloud, there is no local environment to test and debug the developed code.</li><li><strong><em>Monitoring and observability:</em> </strong>the choice of adopting an architecture where services are decoupled leads to significant difficulty in monitoring and observing what is happening in the system.</li></ul><h3>Three-Tier Serverless Architecture With Amazon Web Services</h3><p>In this section, I describe how AWS’s serverless services can be used to change the way you design three-tier architectures and implement popular patterns such as microservices, mobile backends, and Single-Page Applications. In order to give readers a more complete view of this type of architecture, some AWS non-serverless — but widely used — services will also be described.</p><p>A three-tier application generally consists of the following components:</p><ol><li><strong><em>Presentation Tier:</em></strong> it<strong> </strong>is<strong> </strong>a component that users directly interact with (Mobile App UI, Web Pages, etc.)</li><li><strong><em>Logic Tier:</em> </strong>it<strong> </strong>contains the<strong> </strong>application Business Logic (data processing, database operations, etc.)</li><li><strong><em>Data Tier:</em> </strong>it<strong> </strong>storages media (Databases, Object Stores, Caches, File Systems, etc.) and hold the data relevant to the application.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/951/1*gdL6VKoEX_k4vRLi5k6GMQ.png" /></figure><h4><strong>Presentation Tier</strong></h4><p>The presentation tier is responsible for interacting with the logic tier via the endpoints exposed over the internet. Any client or device can communicate with these endpoints, giving your presentation tier the flexibility to take many forms (Desktop Applications, Mobile Apps, Web Pages, IoT devices, etc.). Depending on your requirements, your presentation tier can use the following AWS serverless offerings:</p><ul><li><strong>Amazon Cognito </strong>is a serverless user identity and data synchronization service that allows you to add user sign-up, sign-in, and access control to your web and mobile apps quickly and easily.</li><li><strong>Amazon Simple Storage Service (S3) </strong>allows you to serve static websites, such as single-page applications, directly from an S3 bucket without requiring the provision of a web server.</li><li><strong>AWS Amplify </strong>is a static web hosting service that accelerates the application release cycle by providing a simple CI / CD workflow for building and deploying static web applications.</li><li><strong>Amazon CloudFront</strong> is a content delivery service that uses Amazon’s global network of edge locations as connection points for clients using your API. This helps decrease the response latency of your API.</li></ul><h4>Logic Tier</h4><p>The logic tier of the three-tier architecture is where the business logic is implemented. You can design a serverless logic tier by adopting these services:</p><ul><li><strong>Amazon API Gateway </strong>is a fully managed service that makes it easy for developers to create, publish, maintain, monitor, and secure APIs at any scale. Clients integrate with the APIs exposed via API Gateway using standard HTTPS requests. API Gateway allows you also to associate a method with a Lambda function, so when you call that endpoint, API Gateway invokes the related Lambda function.</li><li><strong>AWS Lambda </strong>is a serverless computing service that allows you to run arbitrary code functions in any of the supported languages without provisioning, managing, or scaling servers. Lambda functions can perform any kind of computing task, from serving web pages and processing streams of data to calling APIs and integrating with other AWS services. You can use an AWS Lambda when: tasks run for a short time; tasks are self-contained; you need to decouple your application modules due to different levels of workload.</li><li><strong>Amazon Elastic Computing Service (ECS)</strong> is a highly scalable, fast, container management service that makes it easy to run, stop, and manage containers on a cluster. Your containers are defined in a Task Definition which you use to run individual tasks or as a service. Within an ECS cluster, you can adopt both <strong>AWS Fargate </strong>that<strong> </strong>is the serverless compute engine for containers and <strong>Amazon Elastic Compute Cloud (EC2) </strong>where you have complete control over your computing resources.</li></ul><h4><strong>Data Tier</strong></h4><p>AWS offers a number of serverless and non-serverless data stores that you can use to compose a serverless data tier of your application.</p><p>These are <strong><em>serverless</em></strong> data storage options:</p><ul><li><strong>Amazon Simple Storage Service (S3) </strong>is an <em>object-oriented</em> storage service that offers scalability, data availability, security, and performance.</li><li><strong>Amazon Aurora </strong>is a <em>relational</em> database that combines the performance and availability of traditional databases (e.g. MySQL and PostgreSQL) with the simplicity and cost-effectiveness of open source databases.</li><li><strong>Amazon DynamoDB </strong>is a fast and flexible <em>non-relational</em> (NoSQL), <em>key-value</em>, and <em>document</em> database. It is a fully managed, serverless, multi-region, multi-master, durable database with built-in security, backup and restore, and in-memory caching for internet-scale applications.</li><li><strong>Amazon Athena</strong> is an interactive query service that makes it easy to analyze data in Amazon S3 using standard SQL.</li><li><strong>Amazon Redshift Spectrum </strong>is a serverless feature of Amazon Redshift. It is a query processing engine that allows to join data that sits in Amazon S3 with data in Amazon Redshift.</li></ul><p>These are<strong><em> non-serverless</em></strong> data storage options:</p><ul><li><strong>Amazon Relational Database Service (RDS) </strong>is a managed web service that makes it easier to set up, operate, and scale a relational database using any of the available engines (Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle, and SQL Server) and running on several different database instance types that are optimized for memory, performance, or I/O.</li><li><strong>Amazon Redshift </strong>is a fast, fully managed, data warehouse service that makes it simple and cost-effective to efficiently analyze all your data using your existing business intelligence tools (optimized for datasets ranging from a few hundred gigabytes to a petabyte).</li><li><strong>Amazon ElastiCache </strong>makes it easy to set up, manage, and scale distributed in-memory cache environments. It is a fully managed deployment of <em>Redis</em> or <em>Memcached</em>.</li></ul><h4><strong>Logging And Monitoring</strong></h4><ul><li><strong>CloudWatch </strong>is a monitoring and management service that provides data and insights for AWS, hybrid, and on-premises applications and infrastructure resources. CloudWatch enables you to monitor your complete stack (applications, infrastructure, and services) and leverage alarms, logs, and events data to take automated actions.</li></ul><h3>Web Application — Simple Use Case</h3><p>In this section, I want to propose a serverless design and five AWS serverless services that can be used to implement a very simple Web Application.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/691/1*qgJYQ2kGViWi-9RzfXdatQ.png" /></figure><p>These are the steps and the AWS services proposed:</p><ol><li>The Client, via the specific URL, retrieves the static content of the Web Page located in an <strong><em>Amazon</em></strong><em> </em><strong><em>S3 Bucket</em></strong>.</li><li>The authentication of users is through <strong><em>Amazon</em></strong><em> </em><strong><em>Cognito</em> </strong>which manages both the sign-up and the login.</li><li>In order to get dynamic content, the request passes through the <strong><em>Amazon</em></strong><em> </em><strong><em>API Gateway.</em></strong></li><li>The request is authenticated with <strong><em>Amazon Cognito.</em></strong></li><li>After request authentication, <strong><em>Amazon</em></strong><em> </em><strong><em>API Gatewa</em>y</strong> invokes the <strong><em>AWS</em></strong><em> </em><strong><em>Lambda</em></strong> related to the specific endpoint.</li><li>The <strong><em>AWS</em></strong><em> </em><strong><em>Lambda</em></strong> implements Business Logic. When it is invoked, it processes the request and according to its purpose, it can create, retrieve, update, delete objects on a database, and make some computations over the data. In our example, the <strong><em>AWS Lambda</em></strong> interacts with<em> </em><strong><em>Amazon</em></strong><em> </em><strong><em>DynamoDB.</em> </strong>Finally, it is also in charge of preparing the response.</li><li>The response computed by the <strong><em>AWS</em></strong><em> </em><strong><em>Lambda</em></strong> is returned through the <strong><em>Amazon</em></strong><em> </em><strong><em>API Gateway</em></strong> to the Client that made the request.</li></ol><h3>Conclusion</h3><p>The serverless approach can answer many of the architectural and operational questions, simplifying the life of developers as well as the operational team. In the previous chapter, we have seen that with only five AWS serverless services — and zero effort for managing and tuning the infrastructure— is possible to have an up and running Web Application. Anyway, adopting a serverless architecture is not the solution to all our problems. The decision to move to serverless should involve a careful analysis of business and technical requirements, taking into account all the pros and cons.</p><h3>References</h3><ol><li><a href="https://martinfowler.com/articles/serverless.html">Mike Roberts (2018). <em>Serverless Architectures.</em></a></li><li><a href="https://www.thoughtworks.com/insights/blog/traits-serverless-architecture">Wisen Tanasa (2019). <em>The traits of serverless architectures.</em></a></li><li><a href="https://docs.aws.amazon.com/"><em>Amazon Web Services documentation</em></a></li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1ccad3099d91" width="1" height="1" alt=""><hr><p><a href="https://medium.com/quantyca/designing-serverless-web-applications-with-amazon-web-services-1ccad3099d91">Designing Serverless Web Applications with Amazon Web Services</a> was originally published in <a href="https://medium.com/quantyca">Quantyca</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>