Come costruire un PoC IoT completo: gestione allarmi, device heartbeat, real-time. L'intera soluzione sarà costruita utilizzando la piattaforma Cloud Microsoft (Stream Analytics, Logic Apps, SQL Database, Power BI, Dynamics 365).
Il tutto in 1 ora e come sempre scrivendo meno codice possibile!
Structured Streaming è il modulo di Stream Processing costruito sul motore Spark SQL. In poche parole garantisce l'esecuzione di un messaggio esattamente una volta, è scalabile e fault-tolerant. È possibile definire le analisi stream nello stesso modo in cui si definirebbe un calcolo batch sui dati usando i Dataset/DataFrame API in Scala, Java, Python or R utilizzando l'engine SQL di Spark.
Durante la sessione vedremo un'overview delle funzionalità e un esempio di di come sia possibile eseguire l'ingestion dei dati con Event Hub (Kafka enabled) eseguire un'analisi con Spark e salvare i risultati su Cosmos DB.
SQL Server Data Virtualization with polybaseGianluca Hotz
Demos: https://github.com/ghotz/Presentations/tree/master/SQL%20Start%202020/Demos
Event site: https://www.sqlstart.it/2020
Vimeo: https://vimeo.com/ugiss/polybase
Polybase è la tecnologia introdotta con SQL Server 2016 per eseguire query distribuite in ambienti eterogenei. Inizialmente con un supporto di sistemi esterni limitato, in SQL Server 2019 è stato esteso per supportare non solo Hadoop e SQL Server in tutte le declinazioni, tra cui Azure SQL Data Warehouse, ma anche Teradata, Oracle, MongoDB e sistemi generici accessibili via ODBC. In questa sessione vedremo come funziona il meccanismo di integrazione dal punto di vista tecnico con qualche esempio pratico.
Youtube: https://www.youtube.com/watch?v=3hpPpK-qUM0
In questa sessione vedremo una panoramica delle soluzioni SQL Server IaaS e PaaS disponibili in AWS e come affrontare al meglio una migrazione verso tali ambienti.
Structured Streaming è il modulo di Stream Processing costruito sul motore Spark SQL. In poche parole garantisce l'esecuzione di un messaggio esattamente una volta, è scalabile e fault-tolerant. È possibile definire le analisi stream nello stesso modo in cui si definirebbe un calcolo batch sui dati usando i Dataset/DataFrame API in Scala, Java, Python or R utilizzando l'engine SQL di Spark.
Durante la sessione vedremo un'overview delle funzionalità e un esempio di di come sia possibile eseguire l'ingestion dei dati con Event Hub (Kafka enabled) eseguire un'analisi con Spark e salvare i risultati su Cosmos DB.
SQL Server Data Virtualization with polybaseGianluca Hotz
Demos: https://github.com/ghotz/Presentations/tree/master/SQL%20Start%202020/Demos
Event site: https://www.sqlstart.it/2020
Vimeo: https://vimeo.com/ugiss/polybase
Polybase è la tecnologia introdotta con SQL Server 2016 per eseguire query distribuite in ambienti eterogenei. Inizialmente con un supporto di sistemi esterni limitato, in SQL Server 2019 è stato esteso per supportare non solo Hadoop e SQL Server in tutte le declinazioni, tra cui Azure SQL Data Warehouse, ma anche Teradata, Oracle, MongoDB e sistemi generici accessibili via ODBC. In questa sessione vedremo come funziona il meccanismo di integrazione dal punto di vista tecnico con qualche esempio pratico.
Youtube: https://www.youtube.com/watch?v=3hpPpK-qUM0
In questa sessione vedremo una panoramica delle soluzioni SQL Server IaaS e PaaS disponibili in AWS e come affrontare al meglio una migrazione verso tali ambienti.
SQL Server Failover Cluster Instances con Amazon FSx in AWSGianluca Hotz
Implementare un cluster di SQL Server in modalità AlwaysOn Failover Cluster Instances (FCI) con Amazon Web Services (AWS). In particolare, utilizzando il servizio Amazon EC2 per l’esecuzione delle istanze SQL Server, e il servizio Amazon FSx for Windows File Server per gestire lo storage condiviso, ed implementare una architettura distribuita multi-AZ.
Cloud storage in azienda: perche` Riak ci e` piaciutoBioDec
La realizzazione di un software per l'automazione di un processo di
lavoro ha portato all'implementazione di un sistema di storage in
grado di gestire imponenti flussi di dati (raw data, immagini...).
Il core del sistema di archiviazione e` il database NoSql Riak. A
quasi un anno dall'entrata in produzione, tale configurazione si e`
confermata robusta e performante (vengono acquisiti in modo
ridondato centinaia di migliaia di files ogni mese, realizzando un
archivio permanente in costante crescita dell'ordine di terabytes).
Nel corso dell'intervento verranno mostrate le motivazioni che hanno
portato a questa scelta.
Oltre ad una rapida panoramica volta ad illustrare le funzionalita`
di Riak si intende condividere in modo pratico il know-how acquisito
ripercorrendo le problematiche riscontrate durante il setup, la
configurazione e la gestione di un cluster Riak (ambienti di
sviluppo e produzione, ottimizzazioni, deploy del cluster, backup,
disaster recovery, ...).
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 1MongoDB
MongoDB Atlas è il servizio DBaaS (Database-as-a-Service) che ti consente distribuire, gestire e scalare un database MongoDB in ambiente cloud con pochi clic.
SQL Server Failover Cluster Instances con Azure Managed DisksGianluca Hotz
Youtube: https://www.youtube.com/watch?v=dgyXkN3FVb4
Come implementare un cluster di SQL Server AlwaysOn Failover Cluster Instances (FCI) con Azure Managed Disks.
Azure Saturday Pordenone 2018 IoT real time processing for lazy developerAlessio Biasiutti
In this session I explained how to develop a IoT E2E solution writing as less code as possible. I designed the solution using Azure Event Hub, Azure Service Bus, Azure Logic Apps e Azure SQL Database
SQL Saturday 871 - Sardegna 2019 - SQL Server DR on AzureMarco Obinu
Slides presented at SQL Saturday 871, regarding DR technologies for SQL Server using Azure as a secondary datacenter. Slides includes demo videos on how to extend an existing SQL FCI to Azure with Basic Availabity Groups.
Demo scripts available at https://github.com/OmegaMadLab/FCI_and_AG
Full session recording available at https://www.youtube.com/watch?v=s8TmM-0E9sQ
Vieni a scoprire Cloud Native PostgreSQL (CNP), l’operatore per Kubernetes, direttamente da coloro che lo hanno ideato e lo sviluppano in EDB.
CNP facilita l’integrazione di database PostgreSQL con le tue applicazioni all’interno di cluster Kubernetes e OpenShift Container Platform di RedHat, grazie alla sua gestione automatica dell’architettura primario/standby che include: self-healing, failover, switchover, rolling update, backup, ecc.
Durante il webinar affronteremo i seguenti punti:
- DevOps e Cloud Native
- Introduzione a Cloud Native PostgreSQL
- Architetture
- Caratteristiche principali
- Esempi di uso e configurazione
- Kubernetes, Storage e Postgres
- Demo
- Conclusioni
Un gioco senza un backend in Internet non è più pensabile. Un backend in Internet senza Azure nemmeno. Quali sono i servizi necessari per costruire un backend di un videogioco? Vediamo quali...
Sempre più aziende guardano con interesse a registri distribuiti e tecnologie Blockchain per non dover dipendere da entità centralizzate di controllo e verifica. Tuttavia, il settore è ancora in continua evoluzione e l’adozione di questo tipo di approccio potrebbe essere eccessivo per molti sistemi che sono ancora per loro natura centralizzati, e la cui riscrittura risulterebbe in investimenti importanti. In questa sessione vedremo una tecnologia antimanomissione dei dati introdotta recentemente in Azure SQL Database.
Azure Data Factory: l'evoluzione della specie della data integrationRoberto Messora
Microsoft definisce Azure Data Factory come un servizio gestito di hybrid data integration, una descrizione fin troppo generica per una delle componenti più importanti della cloud data platform.
In questa sessione entreremo nel merito delle funzionalità offerte da Data Factory, degli scenari di data integration supportati e delle opzioni di security soprattutto in contesti ibridi cloud/on-premise.
Scopriremo che trasferire e trasformare dati nel cloud può essere semplice e relativamente poco costoso.
SQL Server Failover Cluster Instances con Amazon FSx in AWSGianluca Hotz
Implementare un cluster di SQL Server in modalità AlwaysOn Failover Cluster Instances (FCI) con Amazon Web Services (AWS). In particolare, utilizzando il servizio Amazon EC2 per l’esecuzione delle istanze SQL Server, e il servizio Amazon FSx for Windows File Server per gestire lo storage condiviso, ed implementare una architettura distribuita multi-AZ.
Cloud storage in azienda: perche` Riak ci e` piaciutoBioDec
La realizzazione di un software per l'automazione di un processo di
lavoro ha portato all'implementazione di un sistema di storage in
grado di gestire imponenti flussi di dati (raw data, immagini...).
Il core del sistema di archiviazione e` il database NoSql Riak. A
quasi un anno dall'entrata in produzione, tale configurazione si e`
confermata robusta e performante (vengono acquisiti in modo
ridondato centinaia di migliaia di files ogni mese, realizzando un
archivio permanente in costante crescita dell'ordine di terabytes).
Nel corso dell'intervento verranno mostrate le motivazioni che hanno
portato a questa scelta.
Oltre ad una rapida panoramica volta ad illustrare le funzionalita`
di Riak si intende condividere in modo pratico il know-how acquisito
ripercorrendo le problematiche riscontrate durante il setup, la
configurazione e la gestione di un cluster Riak (ambienti di
sviluppo e produzione, ottimizzazioni, deploy del cluster, backup,
disaster recovery, ...).
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 1MongoDB
MongoDB Atlas è il servizio DBaaS (Database-as-a-Service) che ti consente distribuire, gestire e scalare un database MongoDB in ambiente cloud con pochi clic.
SQL Server Failover Cluster Instances con Azure Managed DisksGianluca Hotz
Youtube: https://www.youtube.com/watch?v=dgyXkN3FVb4
Come implementare un cluster di SQL Server AlwaysOn Failover Cluster Instances (FCI) con Azure Managed Disks.
Azure Saturday Pordenone 2018 IoT real time processing for lazy developerAlessio Biasiutti
In this session I explained how to develop a IoT E2E solution writing as less code as possible. I designed the solution using Azure Event Hub, Azure Service Bus, Azure Logic Apps e Azure SQL Database
SQL Saturday 871 - Sardegna 2019 - SQL Server DR on AzureMarco Obinu
Slides presented at SQL Saturday 871, regarding DR technologies for SQL Server using Azure as a secondary datacenter. Slides includes demo videos on how to extend an existing SQL FCI to Azure with Basic Availabity Groups.
Demo scripts available at https://github.com/OmegaMadLab/FCI_and_AG
Full session recording available at https://www.youtube.com/watch?v=s8TmM-0E9sQ
Vieni a scoprire Cloud Native PostgreSQL (CNP), l’operatore per Kubernetes, direttamente da coloro che lo hanno ideato e lo sviluppano in EDB.
CNP facilita l’integrazione di database PostgreSQL con le tue applicazioni all’interno di cluster Kubernetes e OpenShift Container Platform di RedHat, grazie alla sua gestione automatica dell’architettura primario/standby che include: self-healing, failover, switchover, rolling update, backup, ecc.
Durante il webinar affronteremo i seguenti punti:
- DevOps e Cloud Native
- Introduzione a Cloud Native PostgreSQL
- Architetture
- Caratteristiche principali
- Esempi di uso e configurazione
- Kubernetes, Storage e Postgres
- Demo
- Conclusioni
Un gioco senza un backend in Internet non è più pensabile. Un backend in Internet senza Azure nemmeno. Quali sono i servizi necessari per costruire un backend di un videogioco? Vediamo quali...
Sempre più aziende guardano con interesse a registri distribuiti e tecnologie Blockchain per non dover dipendere da entità centralizzate di controllo e verifica. Tuttavia, il settore è ancora in continua evoluzione e l’adozione di questo tipo di approccio potrebbe essere eccessivo per molti sistemi che sono ancora per loro natura centralizzati, e la cui riscrittura risulterebbe in investimenti importanti. In questa sessione vedremo una tecnologia antimanomissione dei dati introdotta recentemente in Azure SQL Database.
Azure Data Factory: l'evoluzione della specie della data integrationRoberto Messora
Microsoft definisce Azure Data Factory come un servizio gestito di hybrid data integration, una descrizione fin troppo generica per una delle componenti più importanti della cloud data platform.
In questa sessione entreremo nel merito delle funzionalità offerte da Data Factory, degli scenari di data integration supportati e delle opzioni di security soprattutto in contesti ibridi cloud/on-premise.
Scopriremo che trasferire e trasformare dati nel cloud può essere semplice e relativamente poco costoso.
Azure Synapse Analytics for your IoT SolutionsMarco Parenzan
Let's find out in this session how Azure Synapse Analytics, with its SQL Serverless Pool, ADX, Data Factory, Notebooks, Spark can be useful for managing data analysis in an IoT solution.
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-serviceMarco Pozzan
Power BI Dataflow è il componente di trasformazione dei dati in Power BI. È un processo di Power Query che viene eseguito nel cloud. Bene, questa potrebbe non sembrare una funzionalità molto nuova, giusto? Quindi cosa c'è di nuovo con Dataflow? Le risposte alle vostre domande saranno nella mia sessione :-)
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
Pirma parte del seminario su NoSQL al DiTeDi di Udine del 15/12/2012. Affrontato il caso di studio di un'architettura enterprise, basata su datastore relazionali (PostgreSQL) e non (CouchDB, MongoDB, Redis e OrientDB).
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
Questa sessione affronta come implementare, mantenere e far evolvere soluzioni sviluppate su Azure SQL Database, attraverso l’utilizzo degli strumenti SQL Sever Management Studio e Visual Studio. Attraverso esempi e casi reali, saranno illustrate la versatilità, potenza e affidabilità del database come servizio nel cloud.
Lezione tenuta nel corso di Mobile and Cyber Physical Systems della Laurea Magistrale di Informatica a Pisa.
- Le App per l'integrazione con altri servizi: ThingTweet e ThingHTTPi
- Le App per l'innesco di azioni: TimeControl, TweetControl e React
- Esercizi pratici in Python
L'Internet of Things è una realtà e primo o dopo avrà il suo impatto significativo nelle nostre aziende.
E a quel punto, i device saranno un asset di cui gestire il lifetime, alla pari dei nostri server, reti e cloud.
Azure IoT è la piattaforma su cui possiamo sviluppare la nostra soluzione IoT e cerchiamo di comprendere cosa significa amministrare un parco device.
Alcuni temi: protocolli di comunicazione e sicurezza del device e della comunicazione. Provisioning dei device. Gestione e monitoraggio dei dispositivi. Strumenti ed API a disposizione per l'IT Pro.
Power Platform: AI Builder la democratizzazione di AIAlessio Biasiutti
L'utilizzo dell'intelligenza artificiale fa crescere molto di più i fatturati delle aziende che la utilizzano rispetto a quelle che non lo stanno facendo. La mancanza di competenze in azienda è quindi un freno alla crescita. AI Builder è la risposta code-less alla creazione di modelli di AI
è possible rinoscere e contare oggetti inquadrati con una telecamera connessa ad Rasperry PI e visualizzare i risultati in una dashbaord realtime di Power BI? Certo che sì anche se non siete dei data scientist!
Azure Stream Analytics è un motore serverless che permette l'analisi dei dati in tempo reale di più flussi simultanei. Durante la sessione vedremo un esempio di come sia possibile determinare situazioni di allarme e notificarle via email.
Costruire un PoC IoT completo: gestione allarmi, device heartbeat, real-time e batch analysis e integrazione con Dynamics 365. L'intera soluzione sarà costruita utilizzando la piattaforma Cloud Microsoft (Stream Analytics, Logic Apps, SQL Database, Power BI, Dynamics 365).
Il tutto in 1 ora e come sempre scrivendo meno codice possibile!
3. #iotsatpn
Cosa serve per una soluzione IoT?
Cold Path Analytics
Find insights over historical data
Hot Path Analytics
Real-time monitoringIoT Hub
Event HubField
Gateway
Things Insights Actions
Manage
View and manage
solutions
Business Integration
Connect to business
process
Storage
6. #iotsatpn
Event Hub
▪ Dimensione messaggio 256K-1M
(dedicated)
▪ Protocolli
▪ HTTPS: overhead ogni invio dati (TLS)
migliore per invio dati non frequente.
▪ AMQP: inizializzazione sessione pesante ma
performance migliori per invio dati frequenti
▪ Capture file su Storage Account o su Data
Lake Store
▪ Streaming Unit
▪ Ingress Fino a 1MB/sec o 1000 eventi/sec
▪ Egress Fino a 2MB/sec o 4096 eventi/sec
▪ Retention: 1-7 giorni
7. #iotsatpn
Event Hub
• Partitions:
• Permettano di scalare orizzontalmente.
• Un event receiver per ogni partizione
• Numero fisso alla creazione tra 2 e 32
• Impostazione solo in fase di creazione
• Partition key:
• Assegnato dal publisher viene utilizzato per inviare i dati
sempre alla stessa partizione
• Nessun valore Round Robin
• Consumer Group:
• Uno per applicazione receiver
• Checkpoint
• Responsabilità del receiver eseguire commit dell’ultima
posizione letta
14. #disatpn#iotsatpn
Reference Data
• Servono per correlare i dati in input con anagrafiche / tabelle e sono blob
caricati in memoria una sola volta
• Pattern devices/{date}/{time}/device-list.csv
• Il file viene preso in considerazione non prima di date / time specificati
• Ci sono modifiche -> nuovo blob
• CSV / JSON (UTF-8)
• Max 300MB per 6 SU
• Attenzione:
• Deve esiste un file di reference valido / non vuoto quando lo stream parte
• Vengono considerate come date / time quelle specificate nel nome del blob
• Un nuovo blob deve avere un date time maggior del precedente
• Quando create un file usate un tempo futuro
15. #iotsatpn
Reference data SQL Database (preview)
• Al posto di blob possono essere usate tabelle (vivamente consigliate le temporali)
• Query Snapshot
• Query delta (opzionale)
• I dati (inserted e deleted) vengono uniti allo snapshot precedente
• Aggiornamento:
• Once
• Periodico
• Periodico con delta
• È necessario associare uno storage account al Job
• Gli snapshots di fatto sono dei reference data di tipo blob creati da StreamAnalytics
• Non servono unit aggiuntive
• Vanno bene qualunque versione di SQL Database
16. #disatpn#iotsatpn
Job
• Si possono definire più query nello
stesso job (attenzione alla scalabilità)
• Ogni query può combinare più input e
inviare dati ad un output
• È possibile dividere query complesse in
step (WITH)
• Massimo 100kb di query
• JOIN, LEFT JOIN, UNION, GROUP BY
SELECT
Make,
System.TimeStamp AS Time,
COUNT(*) AS [Count]
INTO
AlertOutput
FROM
Input TIMESTAMP BY Time
GROUP BY
Make,
TumblingWindow(second, 10)
HAVING
[Count] >= 3
17. #disatpn#iotsatpn
Output
Data Lake Store
SQL Database (NO SQL Server su VM)
Blob Storage
Table Storage
Cosmos DB
ServiceBus Queue / Topic
Event Hub
Functions
Power BI Max 60 outputs
IngestionActionPres.
18. #iotsatpn
Novità - Repartitioning
• Permette di partizionare flussi che
non sono partizionati naturalmente
secondo schemi ottimali
(PartitionId)
• Funziona moltobene quando si
partiziona per una chiave
• Molto indicato per output su SQL
Database (8 writers sono l’ideale)
SELECT * INTO [output] FROM [input] PARTITION BY DeviceID INTO 10
19. #iotsatpn
Novità – Custom Deserializer (Private preview)
• Standard Serilizer
• Format: CSV / JSON / Avro
• Compression: Gzip, Deflate
• Encoding: UTF-8
• Se non bastasse? Formati binari? Codifiche diverse?
• In Visual Studio saranno disponibili (solo per chi ha la preview abilitata)
• un nuovo template progetto
• un SDK installabile tramite nuget
• La DLL generata dovrà essere caricata nello storage account (e impacchetta secondo
uno schema di directory predefinito)
• L’input dovrà dichiarare il nome libreria e il nome classe
• Run locally di Visual Studio funziona già da subito
20. #iotsatpn
Novità - Formato Parquet (Private preview)
• Output Blob Storage anche in formato
Parquet
• Formato colonnare
• Ottimo per analisi big data con Hive e
Spark
• Batch 2000-10.000 righe
• Timeout (1 minuto – 2 ore)
• Limiti durante questa preview
• No compression
• Alcuni tipi non supportati (array of array…)
• Solo Cloud No Edge
22. #iotsatpn
Alarm detection - Lag
• Recuperare valori / eventi passati
• offset: quale evento nel passato recuperare
• partition by: chiave di aggregazzione dei dati
• limit duration: finestra temporale massima da considerare
• when: condizioni di filtro
LAG(<scalar_expression >, [<offset >], [<default>])
OVER ([PARTITION BY <partition key>] LIMIT DURATION(<unit>, <length>)
[WHEN boolean_expression])
LAG(reading) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1)
WHEN devicetype = 'thermostat')
23. #iotsatpn
Device Heartbeat
• Il mio device sta mandando dati?
• Problemi
• Finestre temporali ampie
• Frequenze diverse tra i vari dispositivi
• Stream Analytics supporta left join solo verso reference data (a noi servirebbe il contrario)
• Soluzione
• Salvare «abbastanza» frequentemente (finestre temporali piccole) chi sta inviando dati
• Salvare i dati all’interno di SQL Database (Output solo in Insert!)
• Query che confronta chi non sta mandando dati
• Schedulazione query con Logic Apps
• Alternative a SQL Database
• Table Storage o Cosmos DB UPSERT Nativo
• Tabelle in memory di SQL Database (solo dal tier Premium)
25. #iotsatpn
Service Bus (Topic)
• Preferibile usare Topic e non queue
• Il Bus può ricevere dati da Stream
Analytics ma anche da l’altre
(future) applicazioni
• La gestione dell’evento può essere
fatta anche da altri applicazioni
aziendali: CRM, ERP, …
• Supporta AMQP
• Messaggi sono filtrabili
26. #iotsatpn
Azure Logic Apps
• Visual design delle
integrazioni
• Orchestrazione di workflow
di integrazioni anche
complessi
• Monitorare l’avanzamento
dei processi
• Reagire ad eventi
• Reagire a messaggi
• Gestire le ricorrenze
30. #iotsatpn
Power BI
• Power BI Pro per visualizzare dati all’interno dell’azienda
• Pricing per utente
• Power BI Embedded per fornire dati all’esterno (no società del gruppo)
• Pricing per potenza di calcolo nodo
• Streaming Dataset
• Dataset creato alla prima ricezione di un dato
• 1,000,000 rows per ora
• 15KB per pacchetto
• 1 una chiamata all’API per secondo
32. #iotsatpn
Considerazioni finali
• Un po’di codice SQL
• qualche stored procedure, trigger, ASA Stream Job
• Una manciata di C#
• Gateway
• Costi della soluzione
Componente Costo mensile
Azure Stream Analytics 73,87
Azure SQL Database 4,13
Azure Service Bus Standard 8,27
Azure Logic Apps (stima) 1,00
Power BI Pro (per utente) 8,40
95,67