SlideShare a Scribd company logo
1 of 19
Download to read offline
Partita IVA e Codice Fiscale: 12938200156
C.C.I.A.A. Milano n.1599095
Registro Imprese 12938200156
Capitale Sociale € 2.418.433,00 i.v.
Sede Legale e Unità Operativa
Via Alfredo Campanini, 6
20124 Milano
Tel: +39 02.66.732.1 – Fax: +39 02.66.732.300
Unità Operativa
Via Cristoforo Colombo, 163
00147 Roma
Tel: +39 06.9826.9600 – Fax: +39 06.9826.9680
Daniele Marcocci, Senior System Engineer
Oracle MySQL Day Milano, 8 Novembre 2018
MySQL e le architetture a microservizi
Un caso concreto: il progetto MyLeaf
3
Contesto di riferimento: la Smart Agriculture 4.0
Smart Agriculture
Rendere più efficace, efficiente e intelligente, la produzione agricola attraverso l’utilizzo delle più
moderne tecnologie, rese disponibili agli utenti con interfacce semplici e di immediata comprensione,
offrendo anche degli strumenti a supporto delle decisioni.
A breve termine:
• Monitoraggio dei fattori critici di successo (fattori determinanti della produzione)
• Riduzione dei costi di produzione (risparmio idrico, energetico, trattamenti, logistica)
• Riduzione dell’impatto ambientale (riduzione dei trattamenti e spreco delle risorse)
• Miglioramento della qualità e la quantità del prodotto (salute delle piante e dell’ambiente di coltivazione)
• Semplificazione del processo produttivo (automazione delle attività, sistemi di allarmistica)
A medio termine:
• Storicizzazione ed analisi intelligente dei dati
• Predizione di malattie ed infezioni
• Tracciabilità dei prodotti e delle attività
OBIETTIVI DEL PROGETTO MYLEAF
4
Panoramica funzionale
DataLog & Sensori DataWay Interfaccia utente
multipiattaforma
Piattaforma cloud
5
Alcuni numeri
Settore Ettari
Kiwi 22.000
Nocciolo 70.000
Olivicolo 1.165.458
Viticolo 410.000
TOTALE 1.667.458
Basiamoci sui dati ufficiali Istat relativi alla produzione
nei settori target: Kiwi, Nocciolo, Olivicolo, Viticolo
Parametri di riferimento
• Installazione consigliata: 1 dispositivo per ogni ettaro
di coltivazione
• Frequenza trasmissione dati: 5 minuti
• Trasmissioni: 1.667.458 * 288 = 480M scritture giornaliere database (30-40% workload totale db)
• Transazioni: Trasmissioni * 8 segnali = 3.840M
• Operazioni stimate: ~45k/sec
Facciamo due conti…
6
Esigenze e benefici dell’adozione di MySQL in ambito container
▶ La piattaforma ha necessità di un elevata scalabilità e disponibilità dei dati che viene
soddisfatta dall’elasticità di MySQL nel mondo container.
▶ La piattaforma richiede molte più letture dei dati rispetto alle scritture, pertanto viene
utilizzata la tecnologia di replica dei dati accendendo nuovi container con i dati in read-only in
base al carico.
▶ La decisione di utilizzare l’architettura a microservizi implementa intrinsecamente la sicurezza
e la modularità di tutto l’ambiente.
▶ L’architettura a microservizi su container permette ad ogni singolo componente di scalare in
maniera del tutto automatica per non avere impatti sul servizio erogato.
▶ Tutte le transazioni all’interno della piattaforma vengono gestite da un bus di comunicazione
basato su code, nello specifico tramite un cluster RabbitMQ, anche esso erogato sotto forma di
container.
7
Architettura software
Trasmissione dati
MySQL Read-only
MySQL Read-only
MySQL Read-only
MySQL Read-only
MySQL Read-only
MySQL Read-only
MySQL Primary
MySQL Primary
Lettura dati
NOTIFICATION
MANAGER
DATA PROCESSING
THRESHOLD
MANAGER
INFLUXDB
TIMESERIES
WEBAPP
ALARM PROCESSOR
BI
ML
8
Dashboard web
9
Controllo delle soglie in tempo reale
Per offrire il servizio di controllo dei dati, per il superamento delle soglie di guardia e per la gestione dei relativi
trigger (allarmi, automazioni), il microservizio preposto a questa funzione necessita di continue letture della base
dati offerta dai container MySQL.
ESEMPIO LETTURE MASSIVE
10
Esempio di utilizzo della piattaforma
Applicazione demo
12
Voting APP – Descrizione del progetto e obiettivi
Per dimostrare i benefici dell'approccio container+microservizi abbiamo predisposto un'applicazione
demo che registra le votazioni e le rende fruibili tramite un semplice portale web
Tecnologie utilizzate:
• PHP per il portale web
• RedisDB: Key-Value storage per la registrazione temporanea dei voti
• NodeJS: elaborazione dei voti e scrittura su database
• MySQL InnoDB Cluster: installazione in alta affidabilità di MySQL per la registrazione dei risultati
13
MySQL InnoDB Cluster
MySQL InnoDB Cluster fornisce una soluzione completa di alta affidabilità per MySQL. Permette di definire un cluster
tollerante ai problemi sulle singole istanze attraverso i seguenti strumenti:
• MySQL Shell, include delle AdminAPI che permettono di configurare e gestire un gruppo di almeno tre istanze
mysql server.
• MySQL Group Replication, fornisce un meccanismo di replica dei dati nel cluster con il failover automatico in
caso di problemi ad un istanza.
• MySQL Router, connette le applicazioni in modo trasparente alle istanze server eliminando la necessità di
esporre il data layer alla rete client.
Client app
MySQL
Connector
MySQL
Router
MySQL Shell
Cluster
Admin
Primary
Instance
R/W
Primary
Instance
R/W
Primary
Instance
R/W
MySQL Servers
14
Voting-APP - Architettura Logica del software
Web
Yii2/php
redis
Nodejs
Worker
mysql-1 mysql-2 mysql-3
MySQL InnoDB Cluster
MySQL Router
Registrazione del
voto su redis
Lettura del voto
dalla lista redis Scrittura del risultato su MySQL
Lettura risultati votazione
15
Voting-APP - Architettura logica dell’infrastruttura
Host external network
Docker front-end network
Docker Engine
MySQL-1 Redis
PHP
frontend
Nodejs
worker
Docker back-end network
MySQL-2 MySQL-3
MySQL
Router
Nodejs
worker
8080
6446
RW
6447
RO
It's demo time!
17
MySQL 8 X Protocol – SQL e NoSQL nella stessa sessione
import mysqlx
import requests
import random
session = mysqlx.get_session("mysqlx://root:root@docker.parteclab.ovh:33060")
schema = session.get_schema('demo')
# create collection
schema.drop_collection('democoll')
collection = schema.create_collection('democoll’)
def collection_op():
# fetch document from online example site
res = requests.get("https://jsonplaceholder.typicode.com/users").json()
collection.add(res).execute()
# add and retrieve documents
result = collection.find().execute()
docs = result.fetch_all()
def sql_op():
# recreate table demo.testsql
session.sql("drop table if exists demo.testsql").execute()
session.sql("create table demo.testsql (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50))").execute()
result = collection.find().execute().fetch_all()
session.start_transaction()
# add random documents
for k in result:
if (1 + random.randint(1,999)) % 2 != 0:
print k
session.sql("insert into demo.testsql values (DEFAULT, '%s')" % k['name']).execute()
session.commit()
if __name__ == "__main__":
collection_op()
sql_op()
session.close()
18
Un’ultima cosa…
Inquadrate il QR Code con il vostro smartphone
o visitate http://bit.ly/2M5KbUH e compilate il
form: i primi 50 riceveranno un Key-Charge!
Venite a trovarci prima di andare via per
ritirare il vostro gadget!
Sede Legale e Unità Operativa
Via Alfredo Campanini, 6
20124 Milano
Tel: +39 02.66.732.1 – Fax: +39 02.66.732.300
Unità Operativa
Via Cristoforo Colombo, 163
00147 Roma
Tel: +39 06.9826.9600 – Fax: +39 06.9826.9680
Grazie per l’attenzione!

More Related Content

Similar to MySQL Day Milano 2018 - MySQL e le architetture a microservizi

Smau Padova 2011 Leonardo Torretta - virtualizzazione
Smau Padova 2011 Leonardo Torretta - virtualizzazioneSmau Padova 2011 Leonardo Torretta - virtualizzazione
Smau Padova 2011 Leonardo Torretta - virtualizzazioneSMAU
 
MySQL Day Milano 2018 - Le architetture a microservizi
MySQL Day Milano 2018 - Le architetture a microserviziMySQL Day Milano 2018 - Le architetture a microservizi
MySQL Day Milano 2018 - Le architetture a microserviziPar-Tec S.p.A.
 
Progea Cloud - Databoom Ita
Progea Cloud - Databoom ItaProgea Cloud - Databoom Ita
Progea Cloud - Databoom ItaSimona Giosa
 
Cloud Storage, Gestire i propri costi facendo leva sui servizi di cloud priva...
Cloud Storage, Gestire i propri costi facendo leva sui servizi di cloud priva...Cloud Storage, Gestire i propri costi facendo leva sui servizi di cloud priva...
Cloud Storage, Gestire i propri costi facendo leva sui servizi di cloud priva...VMEngine
 
Virtualizzazione&Cloud Computing
Virtualizzazione&Cloud ComputingVirtualizzazione&Cloud Computing
Virtualizzazione&Cloud ComputingVMEngine
 
Fly Together the TIM DIgital Transformation
Fly Together the TIM DIgital TransformationFly Together the TIM DIgital Transformation
Fly Together the TIM DIgital TransformationMarco Daccò
 
7° CLOUD WEBINAR - 20141218 - Servizi Cloud Gestiti su piattaforma Softlayer
7° CLOUD WEBINAR - 20141218 - Servizi Cloud Gestiti su piattaforma Softlayer7° CLOUD WEBINAR - 20141218 - Servizi Cloud Gestiti su piattaforma Softlayer
7° CLOUD WEBINAR - 20141218 - Servizi Cloud Gestiti su piattaforma SoftlayerServiceCloud - Esprinet
 
Babel presenta: Opsview
Babel presenta: OpsviewBabel presenta: Opsview
Babel presenta: OpsviewBabel
 
Digital Integration Hub per il monitoraggio in near-real time della logistica...
Digital Integration Hub per il monitoraggio in near-real time della logistica...Digital Integration Hub per il monitoraggio in near-real time della logistica...
Digital Integration Hub per il monitoraggio in near-real time della logistica...confluent
 
Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution...
 Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution... Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution...
Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution...festival ICT 2016
 
Workshop Smau Milano 2016 (BMAN)
Workshop Smau Milano 2016 (BMAN)Workshop Smau Milano 2016 (BMAN)
Workshop Smau Milano 2016 (BMAN)Sascia Morelli
 
2° CLOUD WEBINAR - 20141113 - Come generare margini elevati con servizi di ba...
2° CLOUD WEBINAR - 20141113 - Come generare margini elevati con servizi di ba...2° CLOUD WEBINAR - 20141113 - Come generare margini elevati con servizi di ba...
2° CLOUD WEBINAR - 20141113 - Come generare margini elevati con servizi di ba...ServiceCloud - Esprinet
 
Maticmind Proactive Monitoring
Maticmind Proactive MonitoringMaticmind Proactive Monitoring
Maticmind Proactive MonitoringMaticmind
 
ESB e Architetture per l'Interoperabilità
ESB e Architetture per l'InteroperabilitàESB e Architetture per l'Interoperabilità
ESB e Architetture per l'InteroperabilitàCommit University
 
Smau Milano 2016 - Sascia Morelli
Smau Milano 2016 - Sascia MorelliSmau Milano 2016 - Sascia Morelli
Smau Milano 2016 - Sascia MorelliSMAU
 
Luca De Vincenti, Microsoft - SMAU Bologna 2017
Luca De Vincenti, Microsoft - SMAU Bologna 2017Luca De Vincenti, Microsoft - SMAU Bologna 2017
Luca De Vincenti, Microsoft - SMAU Bologna 2017SMAU
 
Cloudup, cloud server al minuto
Cloudup, cloud server al minutoCloudup, cloud server al minuto
Cloudup, cloud server al minutoENTER S.r.l.
 
Short Brocade Presentation
Short Brocade PresentationShort Brocade Presentation
Short Brocade PresentationLeonardo Antichi
 

Similar to MySQL Day Milano 2018 - MySQL e le architetture a microservizi (20)

Smau Padova 2011 Leonardo Torretta - virtualizzazione
Smau Padova 2011 Leonardo Torretta - virtualizzazioneSmau Padova 2011 Leonardo Torretta - virtualizzazione
Smau Padova 2011 Leonardo Torretta - virtualizzazione
 
MySQL Day Milano 2018 - Le architetture a microservizi
MySQL Day Milano 2018 - Le architetture a microserviziMySQL Day Milano 2018 - Le architetture a microservizi
MySQL Day Milano 2018 - Le architetture a microservizi
 
Progea Cloud - Databoom Ita
Progea Cloud - Databoom ItaProgea Cloud - Databoom Ita
Progea Cloud - Databoom Ita
 
Cloud Storage, Gestire i propri costi facendo leva sui servizi di cloud priva...
Cloud Storage, Gestire i propri costi facendo leva sui servizi di cloud priva...Cloud Storage, Gestire i propri costi facendo leva sui servizi di cloud priva...
Cloud Storage, Gestire i propri costi facendo leva sui servizi di cloud priva...
 
Virtualizzazione&Cloud Computing
Virtualizzazione&Cloud ComputingVirtualizzazione&Cloud Computing
Virtualizzazione&Cloud Computing
 
Fly Together the TIM DIgital Transformation
Fly Together the TIM DIgital TransformationFly Together the TIM DIgital Transformation
Fly Together the TIM DIgital Transformation
 
Brochure 2014 - Unified Management Platform
Brochure 2014 - Unified Management PlatformBrochure 2014 - Unified Management Platform
Brochure 2014 - Unified Management Platform
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
7° CLOUD WEBINAR - 20141218 - Servizi Cloud Gestiti su piattaforma Softlayer
7° CLOUD WEBINAR - 20141218 - Servizi Cloud Gestiti su piattaforma Softlayer7° CLOUD WEBINAR - 20141218 - Servizi Cloud Gestiti su piattaforma Softlayer
7° CLOUD WEBINAR - 20141218 - Servizi Cloud Gestiti su piattaforma Softlayer
 
Babel presenta: Opsview
Babel presenta: OpsviewBabel presenta: Opsview
Babel presenta: Opsview
 
Digital Integration Hub per il monitoraggio in near-real time della logistica...
Digital Integration Hub per il monitoraggio in near-real time della logistica...Digital Integration Hub per il monitoraggio in near-real time della logistica...
Digital Integration Hub per il monitoraggio in near-real time della logistica...
 
Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution...
 Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution... Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution...
Nuvole e metallo: Infrastruttura e servizi Cloud based - by Hosting Solution...
 
Workshop Smau Milano 2016 (BMAN)
Workshop Smau Milano 2016 (BMAN)Workshop Smau Milano 2016 (BMAN)
Workshop Smau Milano 2016 (BMAN)
 
2° CLOUD WEBINAR - 20141113 - Come generare margini elevati con servizi di ba...
2° CLOUD WEBINAR - 20141113 - Come generare margini elevati con servizi di ba...2° CLOUD WEBINAR - 20141113 - Come generare margini elevati con servizi di ba...
2° CLOUD WEBINAR - 20141113 - Come generare margini elevati con servizi di ba...
 
Maticmind Proactive Monitoring
Maticmind Proactive MonitoringMaticmind Proactive Monitoring
Maticmind Proactive Monitoring
 
ESB e Architetture per l'Interoperabilità
ESB e Architetture per l'InteroperabilitàESB e Architetture per l'Interoperabilità
ESB e Architetture per l'Interoperabilità
 
Smau Milano 2016 - Sascia Morelli
Smau Milano 2016 - Sascia MorelliSmau Milano 2016 - Sascia Morelli
Smau Milano 2016 - Sascia Morelli
 
Luca De Vincenti, Microsoft - SMAU Bologna 2017
Luca De Vincenti, Microsoft - SMAU Bologna 2017Luca De Vincenti, Microsoft - SMAU Bologna 2017
Luca De Vincenti, Microsoft - SMAU Bologna 2017
 
Cloudup, cloud server al minuto
Cloudup, cloud server al minutoCloudup, cloud server al minuto
Cloudup, cloud server al minuto
 
Short Brocade Presentation
Short Brocade PresentationShort Brocade Presentation
Short Brocade Presentation
 

More from Par-Tec S.p.A.

RHACS: creare, distribuire ed eseguire applicazioni cloud native in modo più ...
RHACS: creare, distribuire ed eseguire applicazioni cloud native in modo più ...RHACS: creare, distribuire ed eseguire applicazioni cloud native in modo più ...
RHACS: creare, distribuire ed eseguire applicazioni cloud native in modo più ...Par-Tec S.p.A.
 
MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...
MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...
MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...Par-Tec S.p.A.
 
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...Par-Tec S.p.A.
 
Webinar 18 novembre 2021 - Dall’endpoint protection al servizio gestito: come...
Webinar 18 novembre 2021 - Dall’endpoint protection al servizio gestito: come...Webinar 18 novembre 2021 - Dall’endpoint protection al servizio gestito: come...
Webinar 18 novembre 2021 - Dall’endpoint protection al servizio gestito: come...Par-Tec S.p.A.
 
MySQL Day 2021 Digital Edition - Da Percona e MariaDB a MySQL: vantaggi e str...
MySQL Day 2021 Digital Edition - Da Percona e MariaDB a MySQL: vantaggi e str...MySQL Day 2021 Digital Edition - Da Percona e MariaDB a MySQL: vantaggi e str...
MySQL Day 2021 Digital Edition - Da Percona e MariaDB a MySQL: vantaggi e str...Par-Tec S.p.A.
 
Webinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo moderno
Webinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo modernoWebinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo moderno
Webinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo modernoPar-Tec S.p.A.
 
MySQL Day 2020 Digital Edition - Come proteggere al meglio un database MySQL
MySQL Day 2020 Digital Edition - Come proteggere al meglio un database MySQLMySQL Day 2020 Digital Edition - Come proteggere al meglio un database MySQL
MySQL Day 2020 Digital Edition - Come proteggere al meglio un database MySQLPar-Tec S.p.A.
 
Webinar 6 ottobre 2020 - Sicurezza e Compliance a misura di RPA
Webinar 6 ottobre 2020 - Sicurezza e Compliance a misura di RPAWebinar 6 ottobre 2020 - Sicurezza e Compliance a misura di RPA
Webinar 6 ottobre 2020 - Sicurezza e Compliance a misura di RPAPar-Tec S.p.A.
 
MySQL Day Milano 2019 - Da MySQL 5.7 a MySQL 8.0
MySQL Day Milano 2019 - Da MySQL 5.7 a MySQL 8.0MySQL Day Milano 2019 - Da MySQL 5.7 a MySQL 8.0
MySQL Day Milano 2019 - Da MySQL 5.7 a MySQL 8.0Par-Tec S.p.A.
 
MySQL Day Milano 2019 - Il backup non ammette ignoranza
MySQL Day Milano 2019 - Il backup non ammette ignoranzaMySQL Day Milano 2019 - Il backup non ammette ignoranza
MySQL Day Milano 2019 - Il backup non ammette ignoranzaPar-Tec S.p.A.
 
Open Source Day 2019 - Cosa puoi fare con Ansible in 1200 secondi?
Open Source Day 2019 - Cosa puoi fare con Ansible in 1200 secondi?Open Source Day 2019 - Cosa puoi fare con Ansible in 1200 secondi?
Open Source Day 2019 - Cosa puoi fare con Ansible in 1200 secondi?Par-Tec S.p.A.
 
Forum ICT Security 2019 - L’Identity Governance come difesa dagli insider thr...
Forum ICT Security 2019 - L’Identity Governance come difesa dagli insider thr...Forum ICT Security 2019 - L’Identity Governance come difesa dagli insider thr...
Forum ICT Security 2019 - L’Identity Governance come difesa dagli insider thr...Par-Tec S.p.A.
 
MySQL Day Roma 2019 - Da MySQL 5.7 a MySQL 8.0
MySQL Day Roma 2019 - Da MySQL 5.7 a MySQL 8.0MySQL Day Roma 2019 - Da MySQL 5.7 a MySQL 8.0
MySQL Day Roma 2019 - Da MySQL 5.7 a MySQL 8.0Par-Tec S.p.A.
 
C&CNR2019 - Containers Landscape Review
C&CNR2019 - Containers Landscape ReviewC&CNR2019 - Containers Landscape Review
C&CNR2019 - Containers Landscape ReviewPar-Tec S.p.A.
 
C&CNR2019 - Cloud-Native Landscape Review
C&CNR2019 - Cloud-Native Landscape ReviewC&CNR2019 - Cloud-Native Landscape Review
C&CNR2019 - Cloud-Native Landscape ReviewPar-Tec S.p.A.
 
Open Source Day 2018 - OpenShift accelera la digital transformation di SIAE
Open Source Day 2018 - OpenShift accelera la digital transformation di SIAEOpen Source Day 2018 - OpenShift accelera la digital transformation di SIAE
Open Source Day 2018 - OpenShift accelera la digital transformation di SIAEPar-Tec S.p.A.
 
Open Source Day 2018 - Caso Cliente INAIL: Soluzioni e competenze che abilita...
Open Source Day 2018 - Caso Cliente INAIL: Soluzioni e competenze che abilita...Open Source Day 2018 - Caso Cliente INAIL: Soluzioni e competenze che abilita...
Open Source Day 2018 - Caso Cliente INAIL: Soluzioni e competenze che abilita...Par-Tec S.p.A.
 
Forum ICT Security 2018 - Il GDPR applicato al settore del retail: il caso di...
Forum ICT Security 2018 - Il GDPR applicato al settore del retail: il caso di...Forum ICT Security 2018 - Il GDPR applicato al settore del retail: il caso di...
Forum ICT Security 2018 - Il GDPR applicato al settore del retail: il caso di...Par-Tec S.p.A.
 
Dynatrace Perform Roma 2018 - Red Hat OpenShift: i container per il mondo ent...
Dynatrace Perform Roma 2018 - Red Hat OpenShift: i container per il mondo ent...Dynatrace Perform Roma 2018 - Red Hat OpenShift: i container per il mondo ent...
Dynatrace Perform Roma 2018 - Red Hat OpenShift: i container per il mondo ent...Par-Tec S.p.A.
 
Container e DevOps al servizio dei cittadini: il caso di INAIL
Container e DevOps al servizio dei cittadini: il caso di INAILContainer e DevOps al servizio dei cittadini: il caso di INAIL
Container e DevOps al servizio dei cittadini: il caso di INAILPar-Tec S.p.A.
 

More from Par-Tec S.p.A. (20)

RHACS: creare, distribuire ed eseguire applicazioni cloud native in modo più ...
RHACS: creare, distribuire ed eseguire applicazioni cloud native in modo più ...RHACS: creare, distribuire ed eseguire applicazioni cloud native in modo più ...
RHACS: creare, distribuire ed eseguire applicazioni cloud native in modo più ...
 
MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...
MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...
MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...
 
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...
 
Webinar 18 novembre 2021 - Dall’endpoint protection al servizio gestito: come...
Webinar 18 novembre 2021 - Dall’endpoint protection al servizio gestito: come...Webinar 18 novembre 2021 - Dall’endpoint protection al servizio gestito: come...
Webinar 18 novembre 2021 - Dall’endpoint protection al servizio gestito: come...
 
MySQL Day 2021 Digital Edition - Da Percona e MariaDB a MySQL: vantaggi e str...
MySQL Day 2021 Digital Edition - Da Percona e MariaDB a MySQL: vantaggi e str...MySQL Day 2021 Digital Edition - Da Percona e MariaDB a MySQL: vantaggi e str...
MySQL Day 2021 Digital Edition - Da Percona e MariaDB a MySQL: vantaggi e str...
 
Webinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo moderno
Webinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo modernoWebinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo moderno
Webinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo moderno
 
MySQL Day 2020 Digital Edition - Come proteggere al meglio un database MySQL
MySQL Day 2020 Digital Edition - Come proteggere al meglio un database MySQLMySQL Day 2020 Digital Edition - Come proteggere al meglio un database MySQL
MySQL Day 2020 Digital Edition - Come proteggere al meglio un database MySQL
 
Webinar 6 ottobre 2020 - Sicurezza e Compliance a misura di RPA
Webinar 6 ottobre 2020 - Sicurezza e Compliance a misura di RPAWebinar 6 ottobre 2020 - Sicurezza e Compliance a misura di RPA
Webinar 6 ottobre 2020 - Sicurezza e Compliance a misura di RPA
 
MySQL Day Milano 2019 - Da MySQL 5.7 a MySQL 8.0
MySQL Day Milano 2019 - Da MySQL 5.7 a MySQL 8.0MySQL Day Milano 2019 - Da MySQL 5.7 a MySQL 8.0
MySQL Day Milano 2019 - Da MySQL 5.7 a MySQL 8.0
 
MySQL Day Milano 2019 - Il backup non ammette ignoranza
MySQL Day Milano 2019 - Il backup non ammette ignoranzaMySQL Day Milano 2019 - Il backup non ammette ignoranza
MySQL Day Milano 2019 - Il backup non ammette ignoranza
 
Open Source Day 2019 - Cosa puoi fare con Ansible in 1200 secondi?
Open Source Day 2019 - Cosa puoi fare con Ansible in 1200 secondi?Open Source Day 2019 - Cosa puoi fare con Ansible in 1200 secondi?
Open Source Day 2019 - Cosa puoi fare con Ansible in 1200 secondi?
 
Forum ICT Security 2019 - L’Identity Governance come difesa dagli insider thr...
Forum ICT Security 2019 - L’Identity Governance come difesa dagli insider thr...Forum ICT Security 2019 - L’Identity Governance come difesa dagli insider thr...
Forum ICT Security 2019 - L’Identity Governance come difesa dagli insider thr...
 
MySQL Day Roma 2019 - Da MySQL 5.7 a MySQL 8.0
MySQL Day Roma 2019 - Da MySQL 5.7 a MySQL 8.0MySQL Day Roma 2019 - Da MySQL 5.7 a MySQL 8.0
MySQL Day Roma 2019 - Da MySQL 5.7 a MySQL 8.0
 
C&CNR2019 - Containers Landscape Review
C&CNR2019 - Containers Landscape ReviewC&CNR2019 - Containers Landscape Review
C&CNR2019 - Containers Landscape Review
 
C&CNR2019 - Cloud-Native Landscape Review
C&CNR2019 - Cloud-Native Landscape ReviewC&CNR2019 - Cloud-Native Landscape Review
C&CNR2019 - Cloud-Native Landscape Review
 
Open Source Day 2018 - OpenShift accelera la digital transformation di SIAE
Open Source Day 2018 - OpenShift accelera la digital transformation di SIAEOpen Source Day 2018 - OpenShift accelera la digital transformation di SIAE
Open Source Day 2018 - OpenShift accelera la digital transformation di SIAE
 
Open Source Day 2018 - Caso Cliente INAIL: Soluzioni e competenze che abilita...
Open Source Day 2018 - Caso Cliente INAIL: Soluzioni e competenze che abilita...Open Source Day 2018 - Caso Cliente INAIL: Soluzioni e competenze che abilita...
Open Source Day 2018 - Caso Cliente INAIL: Soluzioni e competenze che abilita...
 
Forum ICT Security 2018 - Il GDPR applicato al settore del retail: il caso di...
Forum ICT Security 2018 - Il GDPR applicato al settore del retail: il caso di...Forum ICT Security 2018 - Il GDPR applicato al settore del retail: il caso di...
Forum ICT Security 2018 - Il GDPR applicato al settore del retail: il caso di...
 
Dynatrace Perform Roma 2018 - Red Hat OpenShift: i container per il mondo ent...
Dynatrace Perform Roma 2018 - Red Hat OpenShift: i container per il mondo ent...Dynatrace Perform Roma 2018 - Red Hat OpenShift: i container per il mondo ent...
Dynatrace Perform Roma 2018 - Red Hat OpenShift: i container per il mondo ent...
 
Container e DevOps al servizio dei cittadini: il caso di INAIL
Container e DevOps al servizio dei cittadini: il caso di INAILContainer e DevOps al servizio dei cittadini: il caso di INAIL
Container e DevOps al servizio dei cittadini: il caso di INAIL
 

MySQL Day Milano 2018 - MySQL e le architetture a microservizi

  • 1. Partita IVA e Codice Fiscale: 12938200156 C.C.I.A.A. Milano n.1599095 Registro Imprese 12938200156 Capitale Sociale € 2.418.433,00 i.v. Sede Legale e Unità Operativa Via Alfredo Campanini, 6 20124 Milano Tel: +39 02.66.732.1 – Fax: +39 02.66.732.300 Unità Operativa Via Cristoforo Colombo, 163 00147 Roma Tel: +39 06.9826.9600 – Fax: +39 06.9826.9680 Daniele Marcocci, Senior System Engineer Oracle MySQL Day Milano, 8 Novembre 2018 MySQL e le architetture a microservizi
  • 2. Un caso concreto: il progetto MyLeaf
  • 3. 3 Contesto di riferimento: la Smart Agriculture 4.0 Smart Agriculture Rendere più efficace, efficiente e intelligente, la produzione agricola attraverso l’utilizzo delle più moderne tecnologie, rese disponibili agli utenti con interfacce semplici e di immediata comprensione, offrendo anche degli strumenti a supporto delle decisioni. A breve termine: • Monitoraggio dei fattori critici di successo (fattori determinanti della produzione) • Riduzione dei costi di produzione (risparmio idrico, energetico, trattamenti, logistica) • Riduzione dell’impatto ambientale (riduzione dei trattamenti e spreco delle risorse) • Miglioramento della qualità e la quantità del prodotto (salute delle piante e dell’ambiente di coltivazione) • Semplificazione del processo produttivo (automazione delle attività, sistemi di allarmistica) A medio termine: • Storicizzazione ed analisi intelligente dei dati • Predizione di malattie ed infezioni • Tracciabilità dei prodotti e delle attività OBIETTIVI DEL PROGETTO MYLEAF
  • 4. 4 Panoramica funzionale DataLog & Sensori DataWay Interfaccia utente multipiattaforma Piattaforma cloud
  • 5. 5 Alcuni numeri Settore Ettari Kiwi 22.000 Nocciolo 70.000 Olivicolo 1.165.458 Viticolo 410.000 TOTALE 1.667.458 Basiamoci sui dati ufficiali Istat relativi alla produzione nei settori target: Kiwi, Nocciolo, Olivicolo, Viticolo Parametri di riferimento • Installazione consigliata: 1 dispositivo per ogni ettaro di coltivazione • Frequenza trasmissione dati: 5 minuti • Trasmissioni: 1.667.458 * 288 = 480M scritture giornaliere database (30-40% workload totale db) • Transazioni: Trasmissioni * 8 segnali = 3.840M • Operazioni stimate: ~45k/sec Facciamo due conti…
  • 6. 6 Esigenze e benefici dell’adozione di MySQL in ambito container ▶ La piattaforma ha necessità di un elevata scalabilità e disponibilità dei dati che viene soddisfatta dall’elasticità di MySQL nel mondo container. ▶ La piattaforma richiede molte più letture dei dati rispetto alle scritture, pertanto viene utilizzata la tecnologia di replica dei dati accendendo nuovi container con i dati in read-only in base al carico. ▶ La decisione di utilizzare l’architettura a microservizi implementa intrinsecamente la sicurezza e la modularità di tutto l’ambiente. ▶ L’architettura a microservizi su container permette ad ogni singolo componente di scalare in maniera del tutto automatica per non avere impatti sul servizio erogato. ▶ Tutte le transazioni all’interno della piattaforma vengono gestite da un bus di comunicazione basato su code, nello specifico tramite un cluster RabbitMQ, anche esso erogato sotto forma di container.
  • 7. 7 Architettura software Trasmissione dati MySQL Read-only MySQL Read-only MySQL Read-only MySQL Read-only MySQL Read-only MySQL Read-only MySQL Primary MySQL Primary Lettura dati NOTIFICATION MANAGER DATA PROCESSING THRESHOLD MANAGER INFLUXDB TIMESERIES WEBAPP ALARM PROCESSOR BI ML
  • 9. 9 Controllo delle soglie in tempo reale Per offrire il servizio di controllo dei dati, per il superamento delle soglie di guardia e per la gestione dei relativi trigger (allarmi, automazioni), il microservizio preposto a questa funzione necessita di continue letture della base dati offerta dai container MySQL. ESEMPIO LETTURE MASSIVE
  • 10. 10 Esempio di utilizzo della piattaforma
  • 12. 12 Voting APP – Descrizione del progetto e obiettivi Per dimostrare i benefici dell'approccio container+microservizi abbiamo predisposto un'applicazione demo che registra le votazioni e le rende fruibili tramite un semplice portale web Tecnologie utilizzate: • PHP per il portale web • RedisDB: Key-Value storage per la registrazione temporanea dei voti • NodeJS: elaborazione dei voti e scrittura su database • MySQL InnoDB Cluster: installazione in alta affidabilità di MySQL per la registrazione dei risultati
  • 13. 13 MySQL InnoDB Cluster MySQL InnoDB Cluster fornisce una soluzione completa di alta affidabilità per MySQL. Permette di definire un cluster tollerante ai problemi sulle singole istanze attraverso i seguenti strumenti: • MySQL Shell, include delle AdminAPI che permettono di configurare e gestire un gruppo di almeno tre istanze mysql server. • MySQL Group Replication, fornisce un meccanismo di replica dei dati nel cluster con il failover automatico in caso di problemi ad un istanza. • MySQL Router, connette le applicazioni in modo trasparente alle istanze server eliminando la necessità di esporre il data layer alla rete client. Client app MySQL Connector MySQL Router MySQL Shell Cluster Admin Primary Instance R/W Primary Instance R/W Primary Instance R/W MySQL Servers
  • 14. 14 Voting-APP - Architettura Logica del software Web Yii2/php redis Nodejs Worker mysql-1 mysql-2 mysql-3 MySQL InnoDB Cluster MySQL Router Registrazione del voto su redis Lettura del voto dalla lista redis Scrittura del risultato su MySQL Lettura risultati votazione
  • 15. 15 Voting-APP - Architettura logica dell’infrastruttura Host external network Docker front-end network Docker Engine MySQL-1 Redis PHP frontend Nodejs worker Docker back-end network MySQL-2 MySQL-3 MySQL Router Nodejs worker 8080 6446 RW 6447 RO
  • 17. 17 MySQL 8 X Protocol – SQL e NoSQL nella stessa sessione import mysqlx import requests import random session = mysqlx.get_session("mysqlx://root:root@docker.parteclab.ovh:33060") schema = session.get_schema('demo') # create collection schema.drop_collection('democoll') collection = schema.create_collection('democoll’) def collection_op(): # fetch document from online example site res = requests.get("https://jsonplaceholder.typicode.com/users").json() collection.add(res).execute() # add and retrieve documents result = collection.find().execute() docs = result.fetch_all() def sql_op(): # recreate table demo.testsql session.sql("drop table if exists demo.testsql").execute() session.sql("create table demo.testsql (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50))").execute() result = collection.find().execute().fetch_all() session.start_transaction() # add random documents for k in result: if (1 + random.randint(1,999)) % 2 != 0: print k session.sql("insert into demo.testsql values (DEFAULT, '%s')" % k['name']).execute() session.commit() if __name__ == "__main__": collection_op() sql_op() session.close()
  • 18. 18 Un’ultima cosa… Inquadrate il QR Code con il vostro smartphone o visitate http://bit.ly/2M5KbUH e compilate il form: i primi 50 riceveranno un Key-Charge! Venite a trovarci prima di andare via per ritirare il vostro gadget!
  • 19. Sede Legale e Unità Operativa Via Alfredo Campanini, 6 20124 Milano Tel: +39 02.66.732.1 – Fax: +39 02.66.732.300 Unità Operativa Via Cristoforo Colombo, 163 00147 Roma Tel: +39 06.9826.9600 – Fax: +39 06.9826.9680 Grazie per l’attenzione!