SlideShare a Scribd company logo
Ingestion nel datalake
passando tramite API
Managament senza
utilizzo di codice
Thanks to
AGENDA
• Presentazione
• Architettura Big Data
• Data Ingestion
• Configurazione Event Hubs
• Configurazione Api Management
• Q&A
• Chi sono: Marco Caruso
Presentazione
Chi sono
• Enterprise Architect e Technology Advisor
• 20 anni di esperienza nel IT
• Oltre 23 certificazioni Microsoft
https://www.linkedin.com/in/carusomarco/
@MarcoCaruso79
mcaruso79@hotmail.com
Architettura di Riferimento Big Data
Data Ingestion
Data Repository
Data Process
Data Analytics
Data Visualization MULTI-LAYER
L’architettura è progettata su più layer logici che
permette di essere:
• Scalabile
• Modulare
• Performante
• Quello su cui ci focalizziamo in questo sessione è il Data
Ingestion
Data ingestion cos’è?
•«E’ la capacità di acquisire dati in tempo reale o in batch; è la
capacità di conservare e accedere a dati strutturati, semi
strutturati e non strutturati nel formato originario in cui sono
prodotti e tramite un sistema di ruoli configurabile;»
• E’ il primo livello dell’architetture Big Data
• Come tutti i layer anche questo è fondamentale e spesso viene
tralasciato
Architettura Big Data batch su Azure
SFTP e Others
DataFactory
Datalake
Databricks
SQL Datawarehouse
PowerBI
Data
sources
Data
repository
Data Process
Data
Ingestion
Data analytics
Data
Visualization
Architettura in Real Time o Near Real Time
• Se voglio esporre i miei servizi per dare un API in Real Time o Near Real
Time cosa devo fare senza modificare il data process?
• Attivare due servizi
• Event Hubs e API Management
Architettura Big Data Real Time su Azure
SFTP e Others
DataFactory
Databricks
SQL Datawarehouse
PowerBI
Data
sources
Data
repository
Data Process
Data
Ingestion
Data analytics
Data
Visualization
Event Hubs API Management
Generic Datasources
Senza utilizzo di codice
• La modifica all’architettura nella fase di data ingestion non comporta lo sviluppo di
codice ma soltanto la configurazione dei servizi.
• Questo semplifica l’acquisizione dei dati da più fonti e con protocolli diversi
• Andrà creato soltanto uno script lato Data process(DataBricks, Datalake Analytics) per i
file .avro
Avro Schemas
“An easy way to explore Avro files is by using
the Avro Tools jar from Apache. You can also
use Apache Drill for a lightweight SQL-driven
experience or Apache Spark to perform complex
distributed processing on the ingested data.”
Configurazione Event Hubs
• Abilitare il capture(non disponibile nel piano basic):
• Impostare ogni quanti minuti si devono ricevere i messaggi
• L’impostazione sulle dimensioni del messaggio
• Può essere selezionato sia il Datalake gen1 che il Datalake gen2(Azure
Storage)
• Il formato con il quale va a scrivere nel datalake ci sono tre opzioni
1. {Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute
}/{Second}
2. {Year}/{Month}/{Day}/{Namespace}/{EventHub}/{PartitionId}/{Hour}/{Minute
}/{Second}
3. {Year}/{Month}/{Day}/{Hour}/{Namespace}/{EventHub}/{PartitionId}/{Minute
}/{Second}
• Es opzione1: mystorage/ingestiondatalake_dev/0/2019/11/29/17/11/30
• Impostare i permessi per accesso e scrittura
Event Hubs Permessi
• Per poter richiamare i servizi dell’Event Hubs c’è bisogno di impostare le firme
di accesso condiviso che sono il meccanismo di sicurezza principale per la
messaggistica. La firma di accesso condiviso consente inoltre l'accesso al bus di
servizio(event hubs) in base alle regole di autorizzazione configurate in uno in
un'entità di messaggistica. Una regola di autorizzazione ha un nome(es.
RootEH), è associata a diritti specifici e include una coppia di chiavi di
crittografia.
• I diritti assegnati dalla regola del criterio possono essere una combinazione di:
• Send: permette di inviare messaggi all'entità
• Listen: permette di essere in ascolto (inoltro) o di ricevere (coda,
sottoscrizioni) e di tutta la gestione correlata ai messaggi
• Manage: conferisce il diritto di gestire la topologia dello spazio dei nomi,
incluse la creazione e l'eliminazione di entità
• Il diritto Manage include i diritti Send e Receive.
Demo Event Hubs
Event Hubs Rest API
• E’ possibile richiamare i servizi rest dell’Event Hubs per scrivere e leggere.
• Per farlo bisogna utilizzare l’uri:
• <namespaceName>.servicebus.windows.net/
• Per poter usare questi servizi è necessario:
• Sostituire {api-version} con "2014-01" nell’ URL.
• Sostituire {servicebusNamespace} con il namespace ottenuto dal portale di azure.
• Sostituire {eventHubPath} con il path del vostro Event Hub.
• Sostituire {publisherName} con il nome del vostro publisher.
• Sostituire {partitionId} con l’ID della partizione del vostro Event Hub.
• Impostare il Content-Type header in “ application/atom+xml;type=entry;charset=utf-8”
• Impostare l’Authorization header con SAS token
SAS Token 1/2
• Cos’è il SAS Token?
• «Una firma di accesso condiviso=Security Access Signature(SAS), è il meccanismo di sicurezza
principale per la messaggistica del bus di servizio e fornisce accesso delegato sicuro alle risorse
nell'account di archiviazione»
• Il token è una stringa generata sul lato client. Dopo aver creato un token SAS, è possibile
distribuirla alle applicazioni client che richiedono l'accesso alle risorse nell'account di
archiviazione.
• Il token viene generato creando una stringa nel formato seguente:
SharedAccessSignature sig=<signature-string>&se=<expiry>&skn=<keyName>&sr=<URL-
encoded-resourceURI>
• se : istante di scadenza del token. Valore intero che riflette i secondi trascorsi dalle 00:00:00
UTC del 1 ° gennaio 1970 (epoca UNIX) quando il token scade.
• skn : nome della regola di autorizzazione.
• sr : URI della risorsa a cui si ha accesso.
• sig : firma
• Signature-string:signature-string è il codice hash SHA-256 calcolato in base all'URI della risorsa
SAS Token 2/2
• La generazione del SAS Token è possibile farlo con qualsiasi linguaggio:
• PowerShell, Bash, C#, Java, Node.js, Phyton ecc.
• Bisogna sostituire:
• Uri: url dell’event hubs es. «eventhubdl.servicebus.windows.net/»
• Access Policy: la policy di lettura e scrittura, es. «RootEH»
• Access Policy Key: la chiave primaria
• Expires: il tempo che deve durare il token
Esempio Powershell SAS Token
• [Reflection.Assembly]::LoadWithPartialName("System.Web")| out-null
• $URI="eventhubdl.servicebus.windows.net/"
• $Access_Policy_Name="RootEH"
• $Access_Policy_Key="2xdcNPjP5iIcA2r4Co3zVCAjOwOO0IxaoPDAHXK8WYk="
• $Expires=([DateTimeOffset]::Now.ToUnixTimeSeconds())+5000
• $SignatureString=[System.Web.HttpUtility]::UrlEncode($URI)+ "`n" + [string]$Expires
• $HMAC = New-Object System.Security.Cryptography.HMACSHA256
• $HMAC.key = [Text.Encoding]::ASCII.GetBytes($Access_Policy_Key)
• $Signature = $HMAC.ComputeHash([Text.Encoding]::ASCII.GetBytes($SignatureString))
• $Signature = [Convert]::ToBase64String($Signature)
• $SASToken = "SharedAccessSignature sr=" + [System.Web.HttpUtility]::UrlEncode($URI) +
"&sig=" + [System.Web.HttpUtility]::UrlEncode($Signature) + "&se=" + $Expires + "&skn=" +
$Access_Policy_Name
• $SASToken
Demo SAS Token
Perché anche API Management?
• Permette di creare un canale che faccia da Gateway per tutte le comunicazioni
real time o near real time
• Protocollo standard Rest
• Monitoraggio incorporato
• Versioning API
• Gestione di profili e policy per singolo utente/gruppo
• Maggiore sicurezza:
• Ci permette di non esporre le chiavi dell’event hub
• Centralizzazione dell’autenticazione e autorizzazione su standard Oauth o
OpenId
Configurazione Api Management
• Dopo aver creato la nostra api bisogna:
• Modificare l’url dell’Api con l’url del namespace dell’eventhubs:es.
https://eventhubdl.servicebus.windows.net
• Creare una policy di Inbound impostando le regole che servono a richiamare i
servizi Rest dell’event hubs come spiegato precedentemente.
• in particolare:
• <rewrite-uri template>: path dell’event hub esempio /datalake/messages
• <set-query-parameter name=«timeout»> esempio 60(secondi)
• <set-query-parameter name=«api-version»> 2014-01
• <set-header name=«Content-Type»> application/atom+xml;type=entry;charset=utf-8;
• <set-header name=«Authorization»> <value><![CDATA[SharedAccessSignature
sr=eventhubdl.servicebus.windows.net%2f&sig=p3PpKLqt82JYnHunIOH%2brmdlVvOsY
9Oc0yMsg%2bbK%2fms%3d&se=1574643752&skn=RootEH]]></value>
Demo Api Management
Conclusioni
• Le architetture Big Data stanno avendo sempre più diffusione e il data ingestion
in «Real Time» sempre più usato senza dimenticare quello in modalità batch.
• Inserire più layer per non far accedere direttamente ai dati, aumenta di molto la
sicurezza e la modularità dell’architettura.
• Capire a fondo come funziona event hubs permette di avere più soluzioni e
semplifica la creazione di architetture complesse
• La configurazione dei servizi può risultare un po’ difficoltosa ma poi da i suoi
frutti in termini di produttività
Question Time
Q&A
Thank You!!!
Thanks to

More Related Content

Similar to Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Managament senza utilizzo di codice

Simple Cloud API: accesso semplificato al cloud computing
Simple Cloud API: accesso semplificato al cloud computingSimple Cloud API: accesso semplificato al cloud computing
Simple Cloud API: accesso semplificato al cloud computing
Francesca1980
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applicationsDotNetCampus
 
Azure Logic Apps
Azure Logic AppsAzure Logic Apps
Azure Logic Apps
Marco Parenzan
 
What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012
Andrea Dottor
 
Azure functions
Azure functionsAzure functions
Azure functions
Andrea Tosato
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloud
Riccardo Zamana
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
opencityplatform
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Par-Tec S.p.A.
 
Azure Saturday Pordenone 2018 IoT real time processing for lazy developer
Azure Saturday Pordenone 2018 IoT real time processing for lazy developerAzure Saturday Pordenone 2018 IoT real time processing for lazy developer
Azure Saturday Pordenone 2018 IoT real time processing for lazy developer
Alessio Biasiutti
 
Visual Studio Performance Tools
Visual Studio Performance ToolsVisual Studio Performance Tools
Visual Studio Performance Tools
Andrea Tosato
 
Kubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposalKubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposal
Giuliano Latini
 
Azure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDBAzure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDB
Davide Benvegnù
 
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-servicePower BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Marco Pozzan
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client
Sabino Labarile
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-maxDotNetCampus
 
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
DotNetCampus
 
Signal r to the-max
Signal r to the-maxSignal r to the-max
Signal r to the-maxDotNetCampus
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
Massimo Bonanni
 
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
Team per la Trasformazione Digitale
 
OCP Paas_ultima
OCP Paas_ultimaOCP Paas_ultima
OCP Paas_ultima
opencityplatform
 

Similar to Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Managament senza utilizzo di codice (20)

Simple Cloud API: accesso semplificato al cloud computing
Simple Cloud API: accesso semplificato al cloud computingSimple Cloud API: accesso semplificato al cloud computing
Simple Cloud API: accesso semplificato al cloud computing
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applications
 
Azure Logic Apps
Azure Logic AppsAzure Logic Apps
Azure Logic Apps
 
What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloud
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studio
 
Azure Saturday Pordenone 2018 IoT real time processing for lazy developer
Azure Saturday Pordenone 2018 IoT real time processing for lazy developerAzure Saturday Pordenone 2018 IoT real time processing for lazy developer
Azure Saturday Pordenone 2018 IoT real time processing for lazy developer
 
Visual Studio Performance Tools
Visual Studio Performance ToolsVisual Studio Performance Tools
Visual Studio Performance Tools
 
Kubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposalKubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposal
 
Azure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDBAzure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDB
 
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-servicePower BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-max
 
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
 
Signal r to the-max
Signal r to the-maxSignal r to the-max
Signal r to the-max
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
 
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Tras...
 
OCP Paas_ultima
OCP Paas_ultimaOCP Paas_ultima
OCP Paas_ultima
 

More from azuredayit

Azure Day Rome Reloaded 2019 - ML.NET Model Lifecycle with Azure DevOps
Azure Day Rome Reloaded 2019 - ML.NET Model Lifecycle with Azure DevOpsAzure Day Rome Reloaded 2019 - ML.NET Model Lifecycle with Azure DevOps
Azure Day Rome Reloaded 2019 - ML.NET Model Lifecycle with Azure DevOps
azuredayit
 
Azure Day Rome Reloaded 2019 - Reactive Systems with Event Grid
Azure Day Rome Reloaded 2019 - Reactive Systems with Event GridAzure Day Rome Reloaded 2019 - Reactive Systems with Event Grid
Azure Day Rome Reloaded 2019 - Reactive Systems with Event Grid
azuredayit
 
Azure Day Rome Reloaded 2019 - Building serverless microservices in azure
Azure Day Rome Reloaded 2019 - Building serverless microservices in azureAzure Day Rome Reloaded 2019 - Building serverless microservices in azure
Azure Day Rome Reloaded 2019 - Building serverless microservices in azure
azuredayit
 
Azure Day Rome Reloaded 2019 - Cloud Journey – FastTrack for Azure
Azure Day Rome Reloaded 2019 - Cloud Journey – FastTrack for AzureAzure Day Rome Reloaded 2019 - Cloud Journey – FastTrack for Azure
Azure Day Rome Reloaded 2019 - Cloud Journey – FastTrack for Azure
azuredayit
 
Azure Day Rome Reloaded 2019 - Azure: a cloud with a purpose
Azure Day Rome Reloaded 2019 - Azure: a cloud with a purposeAzure Day Rome Reloaded 2019 - Azure: a cloud with a purpose
Azure Day Rome Reloaded 2019 - Azure: a cloud with a purpose
azuredayit
 
Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...
Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...
Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...
azuredayit
 
Azure Day Rome Reloaded 2019 - Azure Sentinel: set up automated threat respon...
Azure Day Rome Reloaded 2019 - Azure Sentinel: set up automated threat respon...Azure Day Rome Reloaded 2019 - Azure Sentinel: set up automated threat respon...
Azure Day Rome Reloaded 2019 - Azure Sentinel: set up automated threat respon...
azuredayit
 
Azure Day Rome Reloaded 2019 - Azure Application Insights Overview
Azure Day Rome Reloaded 2019 - Azure Application Insights OverviewAzure Day Rome Reloaded 2019 - Azure Application Insights Overview
Azure Day Rome Reloaded 2019 - Azure Application Insights Overview
azuredayit
 
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKSAzure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
azuredayit
 
Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...
Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...
Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...
azuredayit
 
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...
azuredayit
 
Azure Day Rome 2019 Reloaded - Effettuare il provisioning su Azure utilizzand...
Azure Day Rome 2019 Reloaded - Effettuare il provisioning su Azure utilizzand...Azure Day Rome 2019 Reloaded - Effettuare il provisioning su Azure utilizzand...
Azure Day Rome 2019 Reloaded - Effettuare il provisioning su Azure utilizzand...
azuredayit
 
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
azuredayit
 
Azure Day Rome Reloaded 2019 - Azure Cognitive Search Deep Dive
Azure Day Rome Reloaded 2019 - Azure Cognitive Search Deep DiveAzure Day Rome Reloaded 2019 - Azure Cognitive Search Deep Dive
Azure Day Rome Reloaded 2019 - Azure Cognitive Search Deep Dive
azuredayit
 

More from azuredayit (14)

Azure Day Rome Reloaded 2019 - ML.NET Model Lifecycle with Azure DevOps
Azure Day Rome Reloaded 2019 - ML.NET Model Lifecycle with Azure DevOpsAzure Day Rome Reloaded 2019 - ML.NET Model Lifecycle with Azure DevOps
Azure Day Rome Reloaded 2019 - ML.NET Model Lifecycle with Azure DevOps
 
Azure Day Rome Reloaded 2019 - Reactive Systems with Event Grid
Azure Day Rome Reloaded 2019 - Reactive Systems with Event GridAzure Day Rome Reloaded 2019 - Reactive Systems with Event Grid
Azure Day Rome Reloaded 2019 - Reactive Systems with Event Grid
 
Azure Day Rome Reloaded 2019 - Building serverless microservices in azure
Azure Day Rome Reloaded 2019 - Building serverless microservices in azureAzure Day Rome Reloaded 2019 - Building serverless microservices in azure
Azure Day Rome Reloaded 2019 - Building serverless microservices in azure
 
Azure Day Rome Reloaded 2019 - Cloud Journey – FastTrack for Azure
Azure Day Rome Reloaded 2019 - Cloud Journey – FastTrack for AzureAzure Day Rome Reloaded 2019 - Cloud Journey – FastTrack for Azure
Azure Day Rome Reloaded 2019 - Cloud Journey – FastTrack for Azure
 
Azure Day Rome Reloaded 2019 - Azure: a cloud with a purpose
Azure Day Rome Reloaded 2019 - Azure: a cloud with a purposeAzure Day Rome Reloaded 2019 - Azure: a cloud with a purpose
Azure Day Rome Reloaded 2019 - Azure: a cloud with a purpose
 
Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...
Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...
Azure Day Rome Reloaded 2019 - Getting Started with Unity, AR/VR and Azure Co...
 
Azure Day Rome Reloaded 2019 - Azure Sentinel: set up automated threat respon...
Azure Day Rome Reloaded 2019 - Azure Sentinel: set up automated threat respon...Azure Day Rome Reloaded 2019 - Azure Sentinel: set up automated threat respon...
Azure Day Rome Reloaded 2019 - Azure Sentinel: set up automated threat respon...
 
Azure Day Rome Reloaded 2019 - Azure Application Insights Overview
Azure Day Rome Reloaded 2019 - Azure Application Insights OverviewAzure Day Rome Reloaded 2019 - Azure Application Insights Overview
Azure Day Rome Reloaded 2019 - Azure Application Insights Overview
 
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKSAzure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
 
Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...
Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...
Azure Day Rome Reloaded 2019 - Python, Azure Cosmos DB, Docker and Azure Cont...
 
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...
 
Azure Day Rome 2019 Reloaded - Effettuare il provisioning su Azure utilizzand...
Azure Day Rome 2019 Reloaded - Effettuare il provisioning su Azure utilizzand...Azure Day Rome 2019 Reloaded - Effettuare il provisioning su Azure utilizzand...
Azure Day Rome 2019 Reloaded - Effettuare il provisioning su Azure utilizzand...
 
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
 
Azure Day Rome Reloaded 2019 - Azure Cognitive Search Deep Dive
Azure Day Rome Reloaded 2019 - Azure Cognitive Search Deep DiveAzure Day Rome Reloaded 2019 - Azure Cognitive Search Deep Dive
Azure Day Rome Reloaded 2019 - Azure Cognitive Search Deep Dive
 

Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Managament senza utilizzo di codice

  • 1. Ingestion nel datalake passando tramite API Managament senza utilizzo di codice
  • 3. AGENDA • Presentazione • Architettura Big Data • Data Ingestion • Configurazione Event Hubs • Configurazione Api Management • Q&A
  • 4. • Chi sono: Marco Caruso Presentazione Chi sono • Enterprise Architect e Technology Advisor • 20 anni di esperienza nel IT • Oltre 23 certificazioni Microsoft https://www.linkedin.com/in/carusomarco/ @MarcoCaruso79 mcaruso79@hotmail.com
  • 5. Architettura di Riferimento Big Data Data Ingestion Data Repository Data Process Data Analytics Data Visualization MULTI-LAYER L’architettura è progettata su più layer logici che permette di essere: • Scalabile • Modulare • Performante • Quello su cui ci focalizziamo in questo sessione è il Data Ingestion
  • 6. Data ingestion cos’è? •«E’ la capacità di acquisire dati in tempo reale o in batch; è la capacità di conservare e accedere a dati strutturati, semi strutturati e non strutturati nel formato originario in cui sono prodotti e tramite un sistema di ruoli configurabile;» • E’ il primo livello dell’architetture Big Data • Come tutti i layer anche questo è fondamentale e spesso viene tralasciato
  • 7. Architettura Big Data batch su Azure SFTP e Others DataFactory Datalake Databricks SQL Datawarehouse PowerBI Data sources Data repository Data Process Data Ingestion Data analytics Data Visualization
  • 8. Architettura in Real Time o Near Real Time • Se voglio esporre i miei servizi per dare un API in Real Time o Near Real Time cosa devo fare senza modificare il data process? • Attivare due servizi • Event Hubs e API Management
  • 9. Architettura Big Data Real Time su Azure SFTP e Others DataFactory Databricks SQL Datawarehouse PowerBI Data sources Data repository Data Process Data Ingestion Data analytics Data Visualization Event Hubs API Management Generic Datasources
  • 10. Senza utilizzo di codice • La modifica all’architettura nella fase di data ingestion non comporta lo sviluppo di codice ma soltanto la configurazione dei servizi. • Questo semplifica l’acquisizione dei dati da più fonti e con protocolli diversi • Andrà creato soltanto uno script lato Data process(DataBricks, Datalake Analytics) per i file .avro
  • 11. Avro Schemas “An easy way to explore Avro files is by using the Avro Tools jar from Apache. You can also use Apache Drill for a lightweight SQL-driven experience or Apache Spark to perform complex distributed processing on the ingested data.”
  • 12. Configurazione Event Hubs • Abilitare il capture(non disponibile nel piano basic): • Impostare ogni quanti minuti si devono ricevere i messaggi • L’impostazione sulle dimensioni del messaggio • Può essere selezionato sia il Datalake gen1 che il Datalake gen2(Azure Storage) • Il formato con il quale va a scrivere nel datalake ci sono tre opzioni 1. {Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute }/{Second} 2. {Year}/{Month}/{Day}/{Namespace}/{EventHub}/{PartitionId}/{Hour}/{Minute }/{Second} 3. {Year}/{Month}/{Day}/{Hour}/{Namespace}/{EventHub}/{PartitionId}/{Minute }/{Second} • Es opzione1: mystorage/ingestiondatalake_dev/0/2019/11/29/17/11/30 • Impostare i permessi per accesso e scrittura
  • 13. Event Hubs Permessi • Per poter richiamare i servizi dell’Event Hubs c’è bisogno di impostare le firme di accesso condiviso che sono il meccanismo di sicurezza principale per la messaggistica. La firma di accesso condiviso consente inoltre l'accesso al bus di servizio(event hubs) in base alle regole di autorizzazione configurate in uno in un'entità di messaggistica. Una regola di autorizzazione ha un nome(es. RootEH), è associata a diritti specifici e include una coppia di chiavi di crittografia. • I diritti assegnati dalla regola del criterio possono essere una combinazione di: • Send: permette di inviare messaggi all'entità • Listen: permette di essere in ascolto (inoltro) o di ricevere (coda, sottoscrizioni) e di tutta la gestione correlata ai messaggi • Manage: conferisce il diritto di gestire la topologia dello spazio dei nomi, incluse la creazione e l'eliminazione di entità • Il diritto Manage include i diritti Send e Receive.
  • 15. Event Hubs Rest API • E’ possibile richiamare i servizi rest dell’Event Hubs per scrivere e leggere. • Per farlo bisogna utilizzare l’uri: • <namespaceName>.servicebus.windows.net/ • Per poter usare questi servizi è necessario: • Sostituire {api-version} con "2014-01" nell’ URL. • Sostituire {servicebusNamespace} con il namespace ottenuto dal portale di azure. • Sostituire {eventHubPath} con il path del vostro Event Hub. • Sostituire {publisherName} con il nome del vostro publisher. • Sostituire {partitionId} con l’ID della partizione del vostro Event Hub. • Impostare il Content-Type header in “ application/atom+xml;type=entry;charset=utf-8” • Impostare l’Authorization header con SAS token
  • 16. SAS Token 1/2 • Cos’è il SAS Token? • «Una firma di accesso condiviso=Security Access Signature(SAS), è il meccanismo di sicurezza principale per la messaggistica del bus di servizio e fornisce accesso delegato sicuro alle risorse nell'account di archiviazione» • Il token è una stringa generata sul lato client. Dopo aver creato un token SAS, è possibile distribuirla alle applicazioni client che richiedono l'accesso alle risorse nell'account di archiviazione. • Il token viene generato creando una stringa nel formato seguente: SharedAccessSignature sig=<signature-string>&se=<expiry>&skn=<keyName>&sr=<URL- encoded-resourceURI> • se : istante di scadenza del token. Valore intero che riflette i secondi trascorsi dalle 00:00:00 UTC del 1 ° gennaio 1970 (epoca UNIX) quando il token scade. • skn : nome della regola di autorizzazione. • sr : URI della risorsa a cui si ha accesso. • sig : firma • Signature-string:signature-string è il codice hash SHA-256 calcolato in base all'URI della risorsa
  • 17. SAS Token 2/2 • La generazione del SAS Token è possibile farlo con qualsiasi linguaggio: • PowerShell, Bash, C#, Java, Node.js, Phyton ecc. • Bisogna sostituire: • Uri: url dell’event hubs es. «eventhubdl.servicebus.windows.net/» • Access Policy: la policy di lettura e scrittura, es. «RootEH» • Access Policy Key: la chiave primaria • Expires: il tempo che deve durare il token
  • 18. Esempio Powershell SAS Token • [Reflection.Assembly]::LoadWithPartialName("System.Web")| out-null • $URI="eventhubdl.servicebus.windows.net/" • $Access_Policy_Name="RootEH" • $Access_Policy_Key="2xdcNPjP5iIcA2r4Co3zVCAjOwOO0IxaoPDAHXK8WYk=" • $Expires=([DateTimeOffset]::Now.ToUnixTimeSeconds())+5000 • $SignatureString=[System.Web.HttpUtility]::UrlEncode($URI)+ "`n" + [string]$Expires • $HMAC = New-Object System.Security.Cryptography.HMACSHA256 • $HMAC.key = [Text.Encoding]::ASCII.GetBytes($Access_Policy_Key) • $Signature = $HMAC.ComputeHash([Text.Encoding]::ASCII.GetBytes($SignatureString)) • $Signature = [Convert]::ToBase64String($Signature) • $SASToken = "SharedAccessSignature sr=" + [System.Web.HttpUtility]::UrlEncode($URI) + "&sig=" + [System.Web.HttpUtility]::UrlEncode($Signature) + "&se=" + $Expires + "&skn=" + $Access_Policy_Name • $SASToken
  • 20. Perché anche API Management? • Permette di creare un canale che faccia da Gateway per tutte le comunicazioni real time o near real time • Protocollo standard Rest • Monitoraggio incorporato • Versioning API • Gestione di profili e policy per singolo utente/gruppo • Maggiore sicurezza: • Ci permette di non esporre le chiavi dell’event hub • Centralizzazione dell’autenticazione e autorizzazione su standard Oauth o OpenId
  • 21. Configurazione Api Management • Dopo aver creato la nostra api bisogna: • Modificare l’url dell’Api con l’url del namespace dell’eventhubs:es. https://eventhubdl.servicebus.windows.net • Creare una policy di Inbound impostando le regole che servono a richiamare i servizi Rest dell’event hubs come spiegato precedentemente. • in particolare: • <rewrite-uri template>: path dell’event hub esempio /datalake/messages • <set-query-parameter name=«timeout»> esempio 60(secondi) • <set-query-parameter name=«api-version»> 2014-01 • <set-header name=«Content-Type»> application/atom+xml;type=entry;charset=utf-8; • <set-header name=«Authorization»> <value><![CDATA[SharedAccessSignature sr=eventhubdl.servicebus.windows.net%2f&sig=p3PpKLqt82JYnHunIOH%2brmdlVvOsY 9Oc0yMsg%2bbK%2fms%3d&se=1574643752&skn=RootEH]]></value>
  • 23. Conclusioni • Le architetture Big Data stanno avendo sempre più diffusione e il data ingestion in «Real Time» sempre più usato senza dimenticare quello in modalità batch. • Inserire più layer per non far accedere direttamente ai dati, aumenta di molto la sicurezza e la modularità dell’architettura. • Capire a fondo come funziona event hubs permette di avere più soluzioni e semplifica la creazione di architetture complesse • La configurazione dei servizi può risultare un po’ difficoltosa ma poi da i suoi frutti in termini di produttività