SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
/391
Daniele Mondello
“Designing with
Microservices"
/392
• Management
• Team Leader
• Quality Manager
• Web Architect
• Healthcare IT Consultant
• UX Expert
General
O.S.
PHP (6 years)
Javascript (11 years)
ASP(13 years)
MySQL (6 years)
HTML, CSS3 (15 years)
Ruby, Rails (1 year)
Python (1 year)
Developer
• Ubuntu, CentOS
• Mac OSX
• Windows
• IOS - Android
• Embedded OS
• Raspai, Pidora
Chi sono e Cosa faccio
/393
Nelle Web App abbiamo diversi strati che comunicano tra di
loro. In questo architettura il software, anche se logicamente
suddiviso, risulta essere un unico sistema Monolitico
- Un unico linguaggio di programmazione
- Scalabilità limitata
- Risorse legate all'applicazione
- Tempi di sviluppo non parallelizzabili
- Manutenzione onerosa
- Non completa riutilizzazione del codice
- Difficile sperimentare
Software Monolitico
/394
Software costituito da diversi componenti che
operano per effettuare una sola mansione
interconnessi tra di loro.
Punti di forza
- linguaggi di programmazione diversi
- scalabilità illimitata
- HR legata al microservice
- sviluppo parallelizzabile
- manutenzione facilitata
- completa di utilizzazione del codice
- permette la sperimentazione
Software con Microservices
/395
Definizione di Microrservices
Sono dei servizi “micro” autonomi, che
fanno una cosa sola (ma bene!) e che
interagiscono tra di loro… in altre parole
dei sistemi distribuiti.
Cosa è un Microservice
/39
Definizione di Microrservices
“Lo stile a micro servizi è un approccio
allo sviluppo di una singola applicazione
come insieme di piccoli servizi, ciascuno
dei quali viene eseguito da un proprio
processo e comunica con un meccanismo,
spesso HTTP API”
Definizione di M.Fowler & J. Levis
6
/397
Caratteristiche di un Microservice
UTILIZZO
DECENTRATO DEI
DATI
SCALABILITA'
INDiPENDENTE DA
LINGUAGGIO
POSSIBILITA DI
RIUTILIZZO
Bug Isolati
/398
L’obiettivo di un Microservice
Micro è l’obiettivo!
/399
Cosa fa
DOCKER?
Docker sviluppata da Docker inc di Salomon
Hykes è un sistema di virtualizzazione basato su
container. Mentre nella virtualizzazione classica
sono virtualizzati programmi e kernel del sistema
operativo nella virtualizzazione per containers
sono virtualizzati software e librerie.
GnuLinuxMeetin
Docker
/3910
Microservice A Microservice B Microservice C Microservice D MicroserviceE
Architettura per Microservices
/3911
Platform Automation Deployment Automation Build & Test Automation
Diagnostic & Instrumentation Monitoring & Alerting AuthN/AuthZ
Messaging Channel
Microservice A Microservice B Microservice C Microservice D MicroserviceE
Architettura per Microservices
/3912
Generare report più o
meno complessi
Effettuare delle misurazioni
rispetto a delle metriche
Deployment Automation
Collezionare il codice dai
repository remoti
Deployment Automation
Lanciare test statici e dinamici
sul codice
Continuous Delivery
/3913
Build Privata Server CI
Lancio di una build privata
Lo sviluppatore effettua una Build Privata
sulla propria postazione così da integrare
eventuali cambiamenti effettuati dagli altri
membri del team e verificato che
l’integrazione dia un sistema funzionante.
Commit sul CVS del codice
Lo sviluppatore conclusa l’attività effettua
un commit sul repository del sistema di
controllo di versione. 5
Lancio SCRIPT su server CI
Il server di CI accortosi del cambiamento
scarica il codice aggiornato e lancia uno
script di build così da integrare questi
cambiamenti e da ricostruire il sistema e ri-
testarlo ed a seguito del risultato della
build, genera un feedback (es: email)
visibile al team
CVS
Flusso di Lavoro per un Microservice
/3914
I progetti in Jenkins
/3915
Un progetto in Jenkins 1/2
/3916
Un progetto in Jenkins 2/2
/3917
Platform Automation Deployment Automation Build & Test Automation
Diagnostic & Instrumentation Monitoring & Alerting AuthN/AuthZ
Messaging Channel
Microservice A
Microservice B Microservice C Microservice D MicroserviceE
Event
Published
Event
Subscribed
Event
Published/
Subscribed
Architettura per Microservices
/3918
Easy to Use!
Runs on all major O.S.
Open Source
Robusta soluzione per messaggistica tra
applicazioni con supporto a diverse
piattaforme di sviluppo
Messaging Channel
/3919
UtilizzoRabbit MQ
/3920
Platform Automation Deployment Automation Build & Test Automation
Diagnostic & Instrumentation Monitoring & Alerting AuthN/AuthZ
Messaging Channel
Microservice A Microservice B Microservice C Microservice D MicroserviceE
Event
Published
Event
Subscribed
Event
Published/
Subscribed
Shared
Configuration
Dependency
Management
Architettura per Microservices
/3921
01
02 05
06
Canticle.io
Permette di gestire dipendenze
di micorservices.
DATABASE
E’ possibile gestire dipendenze
tramite DB
COMPOSER
Gestisce le dipendenze in PHP
Maven
Strumento per la gestione dei
progetti per la piattaforma Java
Dipendenze e Configurazioni
Dipendenze
Configurazioni
VS
/3922
Platform Automation Deployment Automation Build & Test Automation
Diagnostic & Instrumentation Monitoring & Alerting AuthN/AuthZ
Messaging Channel
Microservice A Microservice B Microservice C Microservice D MicroserviceE
Event
Published
Event
Subscribed
Event
Published/
Subscribed
Shared
Configuration
Dependency
ManagementService
Gateway
Architettura per Microservices
/3923
Service Gateway
- Fonte: https://www.nginx.com/blog/building-microservices-using-an-api-gateway/
L’API Gateway incapsula l’architettura interna dei microservicese fornisce delle API a misura
di client. Può avere anche responsabilità come autentication, monitoring, load balancing,
caching, request shaping, static response handling (StrongLoop,NodeJS)
/3924
Platform Automation Deployment Automation Build & Test Automation
Diagnostic & Instrumentation Monitoring & Alerting AuthN/AuthZ
Messaging Channel
Microservice A
Microservice B Microservice C Microservice D MicroserviceE
Event
Published
Event
Subscribed
Event
Published/
Subscribed
Shared
Configuration
Dependency
Management
Service
Gateway
Service
Routing
Service
Discovery
Architettura per Microservices
/3925
Platform Automation Deployment Automation Build & Test Automation
Diagnostic & Instrumentation Monitoring & Alerting AuthN/AuthZ
Messaging Channel
Microservice A Microservice B Microservice C Microservice D Microservice E
Event
Published
Event
Subscribed
Event
Published/
Subscribed
Shared
Configuration
Dependency
ManagementService
Gateway
Service
Routing
Architettura per Microservices
Service
Discovery
/39
Chi utilizza i Microservices?
26
/39
IBM e i Microservices
27
/39
Chaos Monkey
Netflix Control
28
/3929
Software Developer Junior
Roberta Randazzo
PROBLEMA: PDF PRINTER PER WEB APP
Esempio pratico di un Microservice
/3930
Sviluppo di un software
capace di generare pdf da
applicazioni web e quindi da
pagine HTML.
PDF da WEB PAGE
PDF da Pagina WEB
Generare da URL di una pagina web con
accesso protetto, un file in formato PDF
Invio PDF ad altri servizi
La destinazione del file può essere
differente dall’origine che ha generato la
richiesta, secondo le configurazioni della
request.
Soluzione Riutilizzabile in altri sistemi
Riutilizzabile in altri servizi, cioè non legato
o inglobato in ogni singola applicazione e
quindi indipendente dall’ambiente che lo
genera.
Soluzione Automatizzata
Ricevere le request di elaborazione del pdf
e rispondere ad ogni servizio che lo
richiede.
Soluzione Indipendente
Il software resta attivo anche se il
servizio in ricezione o quello in
attesa del pdf va giù.
Soluzione Dinamica
Risponde in modo differente ad ogni
richiesta.
Feature del Microservice
/3931
Browser
Visualizzazione nel
Browers di
esecuzione a scopo
di test.
Attachment
File come allegato
scaricato da
browser.
File System
Local Storage
Rest API
Inoltro file ad URL o
Servizio in ascolto
direttamente
connesso
RabbitMQ
Message Broker
che consuma un
coda.
Invio dati come
MESSAGE
Output del Microservice
/3932
Framework per realizzare applicazioni Web
in JavaScript, per la scrittura di applicazioni
“server-side” in modalità event-drive.
Garantisce efficienza delle applicazioni
grazie al comportamento asincrono.
Node.JS
Linguaggio che compila in
JavaScript
CoffeeScript
LInguaggio di scripting orientato agli
oggetti e agli eventi
Javascript
Servizio web di hosting per lo sviluppo di progetti
software, che usa il sistema di controllo di versione
Git..
GitHub
Light-weight web application framework
to help organize your web application
into an MVC architecture on the server
side.
Express.js basically helps you manage
everything, from routes, to handling
requests and views.
ExpressJS
Headless browser, Tool che consente
la manipolazione via JavaScript del
DOM, di CSS, JSON, Ajax altre
tecnologie Web client-side da riga di
comando, senza alcun rendering a
video. Utilizzato in tutti quei contesti in
cui si ha bisogno di automatizzare le
tipiche attività di un Web browser
PhantomJS
Tecnologie Utilizzate
/3933
Abbiamo implementato html2pdf.it in un container, dotato di REST APIs e collegato a RabbitMQ per metterlo in comunicazione
con altri microservice.
Docker Container
Ambiente indipendente e
automatizzato
Json
Javascript Object Notation
API Rest
Application Programming Interface
REpresentational State Transfer
Stateless architecture that
generally runs over HTTPS/TLS
RabbitMQ
message-oriented middleware,
broker di messaggistica, che
implementa il protocollo Advanced
Message Queuing Protocol
(AMQP)
API
Base Software Improvements
/3934
E
Some Title
Goes Here
Il flusso di lavoro parte dunque
da un dato servizio che invia tramite
RabbitMQ un messaggio Json al
Microservice Html2Pdf contenente
un action. Il Nostro Microservice
elabora la action come un http-
request grazie a Node.JS &
Express.JS
Web APP Request
PhantomJS il quale renderizza la
pagina web in un pdf, passando
l’output generato nuovamente a
coffeescript che genera nella
reponse il file binario in formato
Pdf o in Base64.
Microservice Response
HTTP
Request
Produzione del PDF
/3935
Html2Pdf
Service 2
Service 1
Control Flow Deployment Storage Backup Networking
i servizi 1,2 e 3 inviano la request
consumando una coda RabbitMQ
che viene inoltrata ad Html2Pdf
Service 1, 2, 3
Restituisce la response come
PDF o Json a RabbitMQ
Html2Pdf Microservice
Cloud in ascolto su Rabbit che riceve le
request consentendo upload e download
dei files .
ownCloud Microservice Le response possono essere restituite ai
servizi di origine oppure inoltrate ad altri
servizi in coda su RabbitMQ.
Routing
Service 3
download upload
Dialogo tra Microservices
/3936
Final Result
Risultato Finale
/3937
Piattaforme per Microservices
/3938
Progettare Microservices
GRAZIE PER L’ATTENZIONE
info@danielemondello.it
@dmondello
Danielemondello
Daniele Mondello

Weitere ähnliche Inhalte

Ähnlich wie Designing with microservices - Daniele Mondello

.NET Microservices
.NET Microservices.NET Microservices
.NET MicroservicesLuca Congiu
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)Sabino Labarile
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi DiscussioneYeser Rema
 
Microservices architecture & Service Fabric
Microservices architecture & Service FabricMicroservices architecture & Service Fabric
Microservices architecture & Service FabricMassimo Bonanni
 
Asp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAsp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAndrea Balducci
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDLuca Masini
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...Marco Parenzan
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Mattia Milleri
 
Evoluzione del web development dalle cgi ai microservices
Evoluzione del web development dalle cgi ai microservicesEvoluzione del web development dalle cgi ai microservices
Evoluzione del web development dalle cgi ai microservicesDaniele Mondello
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web Appdotnetcode
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSopencityplatform
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web Appdotnetcode
 
OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016Gaetano Paternò
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringMarcello Teodori
 
Babel presenta: Opsview
Babel presenta: OpsviewBabel presenta: Opsview
Babel presenta: OpsviewBabel
 
Azure WebSites for Developers
Azure WebSites for DevelopersAzure WebSites for Developers
Azure WebSites for DevelopersLuca Milan
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfFlorence Consulting
 

Ähnlich wie Designing with microservices - Daniele Mondello (20)

.NET Microservices
.NET Microservices.NET Microservices
.NET Microservices
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
 
Microservices architecture & Service Fabric
Microservices architecture & Service FabricMicroservices architecture & Service Fabric
Microservices architecture & Service Fabric
 
Asp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAsp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community Tour
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
 
Evoluzione del web development dalle cgi ai microservices
Evoluzione del web development dalle cgi ai microservicesEvoluzione del web development dalle cgi ai microservices
Evoluzione del web development dalle cgi ai microservices
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016OpenDay 3 TIM WCap - 05/05/2016
OpenDay 3 TIM WCap - 05/05/2016
 
LARUS 10th - Rampado Omar
LARUS 10th - Rampado OmarLARUS 10th - Rampado Omar
LARUS 10th - Rampado Omar
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
 
Babel presenta: Opsview
Babel presenta: OpsviewBabel presenta: Opsview
Babel presenta: Opsview
 
Azure WebSites for Developers
Azure WebSites for DevelopersAzure WebSites for Developers
Azure WebSites for Developers
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdf
 
OpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studioOpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studio
 

Mehr von Daniele Mondello

Impatto dell'Intelligenza Artificiale sul Gioco d'Azzardo
Impatto dell'Intelligenza Artificiale sul Gioco d'AzzardoImpatto dell'Intelligenza Artificiale sul Gioco d'Azzardo
Impatto dell'Intelligenza Artificiale sul Gioco d'AzzardoDaniele Mondello
 
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...Daniele Mondello
 
Linux day 2021 Analisi Open Source dei dati pandemici
Linux day 2021 Analisi Open Source dei dati pandemiciLinux day 2021 Analisi Open Source dei dati pandemici
Linux day 2021 Analisi Open Source dei dati pandemiciDaniele Mondello
 
Gdg 2019 artificial intelligence, sviluppo web... le nuove regole del gioco
Gdg 2019 artificial intelligence, sviluppo web... le nuove regole del giocoGdg 2019 artificial intelligence, sviluppo web... le nuove regole del gioco
Gdg 2019 artificial intelligence, sviluppo web... le nuove regole del giocoDaniele Mondello
 
Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...
Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...
Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...Daniele Mondello
 
Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...
Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...
Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...Daniele Mondello
 
Caminetto Rotariano sulla sicurezza informatica
Caminetto Rotariano sulla sicurezza informaticaCaminetto Rotariano sulla sicurezza informatica
Caminetto Rotariano sulla sicurezza informaticaDaniele Mondello
 
Po Fesr 2014-2020 e gli Open Data
Po Fesr 2014-2020 e gli Open DataPo Fesr 2014-2020 e gli Open Data
Po Fesr 2014-2020 e gli Open DataDaniele Mondello
 
Osservatorio startup innovative 2016
Osservatorio startup innovative 2016Osservatorio startup innovative 2016
Osservatorio startup innovative 2016Daniele Mondello
 
Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...
Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...
Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...Daniele Mondello
 
Flussi sanitari privacy big data
Flussi sanitari privacy big dataFlussi sanitari privacy big data
Flussi sanitari privacy big dataDaniele Mondello
 
pagoPa, i pagamenti elettronici nella Pubblica Amministrazione
pagoPa, i pagamenti elettronici nella Pubblica AmministrazionepagoPa, i pagamenti elettronici nella Pubblica Amministrazione
pagoPa, i pagamenti elettronici nella Pubblica AmministrazioneDaniele Mondello
 
Cartella Clinica Elettronica: Un modello applicativo
Cartella Clinica Elettronica:  Un modello applicativoCartella Clinica Elettronica:  Un modello applicativo
Cartella Clinica Elettronica: Un modello applicativoDaniele Mondello
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziareDaniele Mondello
 
Azienda- lavoratori in remoto e Iso 9000
Azienda- lavoratori in remoto  e Iso 9000Azienda- lavoratori in remoto  e Iso 9000
Azienda- lavoratori in remoto e Iso 9000Daniele Mondello
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ CodeDaniele Mondello
 

Mehr von Daniele Mondello (20)

Impatto dell'Intelligenza Artificiale sul Gioco d'Azzardo
Impatto dell'Intelligenza Artificiale sul Gioco d'AzzardoImpatto dell'Intelligenza Artificiale sul Gioco d'Azzardo
Impatto dell'Intelligenza Artificiale sul Gioco d'Azzardo
 
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
 
Linux day 2021 Analisi Open Source dei dati pandemici
Linux day 2021 Analisi Open Source dei dati pandemiciLinux day 2021 Analisi Open Source dei dati pandemici
Linux day 2021 Analisi Open Source dei dati pandemici
 
Gdg 2019 artificial intelligence, sviluppo web... le nuove regole del gioco
Gdg 2019 artificial intelligence, sviluppo web... le nuove regole del giocoGdg 2019 artificial intelligence, sviluppo web... le nuove regole del gioco
Gdg 2019 artificial intelligence, sviluppo web... le nuove regole del gioco
 
Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...
Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...
Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...
 
Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...
Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...
Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...
 
Caminetto Rotariano sulla sicurezza informatica
Caminetto Rotariano sulla sicurezza informaticaCaminetto Rotariano sulla sicurezza informatica
Caminetto Rotariano sulla sicurezza informatica
 
Linux day 2017
Linux day 2017Linux day 2017
Linux day 2017
 
Po Fesr 2014-2020 e gli Open Data
Po Fesr 2014-2020 e gli Open DataPo Fesr 2014-2020 e gli Open Data
Po Fesr 2014-2020 e gli Open Data
 
Open data day 2017
Open data day 2017Open data day 2017
Open data day 2017
 
Osservatorio startup innovative 2016
Osservatorio startup innovative 2016Osservatorio startup innovative 2016
Osservatorio startup innovative 2016
 
Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...
Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...
Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...
 
Flussi sanitari privacy big data
Flussi sanitari privacy big dataFlussi sanitari privacy big data
Flussi sanitari privacy big data
 
pagoPa, i pagamenti elettronici nella Pubblica Amministrazione
pagoPa, i pagamenti elettronici nella Pubblica AmministrazionepagoPa, i pagamenti elettronici nella Pubblica Amministrazione
pagoPa, i pagamenti elettronici nella Pubblica Amministrazione
 
Cartella Clinica Elettronica: Un modello applicativo
Cartella Clinica Elettronica:  Un modello applicativoCartella Clinica Elettronica:  Un modello applicativo
Cartella Clinica Elettronica: Un modello applicativo
 
Git in 5 minuti
Git in 5 minutiGit in 5 minuti
Git in 5 minuti
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
 
Azienda- lavoratori in remoto e Iso 9000
Azienda- lavoratori in remoto  e Iso 9000Azienda- lavoratori in remoto  e Iso 9000
Azienda- lavoratori in remoto e Iso 9000
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
 
Web Radio
Web RadioWeb Radio
Web Radio
 

Designing with microservices - Daniele Mondello

  • 2. /392 • Management • Team Leader • Quality Manager • Web Architect • Healthcare IT Consultant • UX Expert General O.S. PHP (6 years) Javascript (11 years) ASP(13 years) MySQL (6 years) HTML, CSS3 (15 years) Ruby, Rails (1 year) Python (1 year) Developer • Ubuntu, CentOS • Mac OSX • Windows • IOS - Android • Embedded OS • Raspai, Pidora Chi sono e Cosa faccio
  • 3. /393 Nelle Web App abbiamo diversi strati che comunicano tra di loro. In questo architettura il software, anche se logicamente suddiviso, risulta essere un unico sistema Monolitico - Un unico linguaggio di programmazione - Scalabilità limitata - Risorse legate all'applicazione - Tempi di sviluppo non parallelizzabili - Manutenzione onerosa - Non completa riutilizzazione del codice - Difficile sperimentare Software Monolitico
  • 4. /394 Software costituito da diversi componenti che operano per effettuare una sola mansione interconnessi tra di loro. Punti di forza - linguaggi di programmazione diversi - scalabilità illimitata - HR legata al microservice - sviluppo parallelizzabile - manutenzione facilitata - completa di utilizzazione del codice - permette la sperimentazione Software con Microservices
  • 5. /395 Definizione di Microrservices Sono dei servizi “micro” autonomi, che fanno una cosa sola (ma bene!) e che interagiscono tra di loro… in altre parole dei sistemi distribuiti. Cosa è un Microservice
  • 6. /39 Definizione di Microrservices “Lo stile a micro servizi è un approccio allo sviluppo di una singola applicazione come insieme di piccoli servizi, ciascuno dei quali viene eseguito da un proprio processo e comunica con un meccanismo, spesso HTTP API” Definizione di M.Fowler & J. Levis 6
  • 7. /397 Caratteristiche di un Microservice UTILIZZO DECENTRATO DEI DATI SCALABILITA' INDiPENDENTE DA LINGUAGGIO POSSIBILITA DI RIUTILIZZO Bug Isolati
  • 8. /398 L’obiettivo di un Microservice Micro è l’obiettivo!
  • 9. /399 Cosa fa DOCKER? Docker sviluppata da Docker inc di Salomon Hykes è un sistema di virtualizzazione basato su container. Mentre nella virtualizzazione classica sono virtualizzati programmi e kernel del sistema operativo nella virtualizzazione per containers sono virtualizzati software e librerie. GnuLinuxMeetin Docker
  • 10. /3910 Microservice A Microservice B Microservice C Microservice D MicroserviceE Architettura per Microservices
  • 11. /3911 Platform Automation Deployment Automation Build & Test Automation Diagnostic & Instrumentation Monitoring & Alerting AuthN/AuthZ Messaging Channel Microservice A Microservice B Microservice C Microservice D MicroserviceE Architettura per Microservices
  • 12. /3912 Generare report più o meno complessi Effettuare delle misurazioni rispetto a delle metriche Deployment Automation Collezionare il codice dai repository remoti Deployment Automation Lanciare test statici e dinamici sul codice Continuous Delivery
  • 13. /3913 Build Privata Server CI Lancio di una build privata Lo sviluppatore effettua una Build Privata sulla propria postazione così da integrare eventuali cambiamenti effettuati dagli altri membri del team e verificato che l’integrazione dia un sistema funzionante. Commit sul CVS del codice Lo sviluppatore conclusa l’attività effettua un commit sul repository del sistema di controllo di versione. 5 Lancio SCRIPT su server CI Il server di CI accortosi del cambiamento scarica il codice aggiornato e lancia uno script di build così da integrare questi cambiamenti e da ricostruire il sistema e ri- testarlo ed a seguito del risultato della build, genera un feedback (es: email) visibile al team CVS Flusso di Lavoro per un Microservice
  • 15. /3915 Un progetto in Jenkins 1/2
  • 16. /3916 Un progetto in Jenkins 2/2
  • 17. /3917 Platform Automation Deployment Automation Build & Test Automation Diagnostic & Instrumentation Monitoring & Alerting AuthN/AuthZ Messaging Channel Microservice A Microservice B Microservice C Microservice D MicroserviceE Event Published Event Subscribed Event Published/ Subscribed Architettura per Microservices
  • 18. /3918 Easy to Use! Runs on all major O.S. Open Source Robusta soluzione per messaggistica tra applicazioni con supporto a diverse piattaforme di sviluppo Messaging Channel
  • 20. /3920 Platform Automation Deployment Automation Build & Test Automation Diagnostic & Instrumentation Monitoring & Alerting AuthN/AuthZ Messaging Channel Microservice A Microservice B Microservice C Microservice D MicroserviceE Event Published Event Subscribed Event Published/ Subscribed Shared Configuration Dependency Management Architettura per Microservices
  • 21. /3921 01 02 05 06 Canticle.io Permette di gestire dipendenze di micorservices. DATABASE E’ possibile gestire dipendenze tramite DB COMPOSER Gestisce le dipendenze in PHP Maven Strumento per la gestione dei progetti per la piattaforma Java Dipendenze e Configurazioni Dipendenze Configurazioni VS
  • 22. /3922 Platform Automation Deployment Automation Build & Test Automation Diagnostic & Instrumentation Monitoring & Alerting AuthN/AuthZ Messaging Channel Microservice A Microservice B Microservice C Microservice D MicroserviceE Event Published Event Subscribed Event Published/ Subscribed Shared Configuration Dependency ManagementService Gateway Architettura per Microservices
  • 23. /3923 Service Gateway - Fonte: https://www.nginx.com/blog/building-microservices-using-an-api-gateway/ L’API Gateway incapsula l’architettura interna dei microservicese fornisce delle API a misura di client. Può avere anche responsabilità come autentication, monitoring, load balancing, caching, request shaping, static response handling (StrongLoop,NodeJS)
  • 24. /3924 Platform Automation Deployment Automation Build & Test Automation Diagnostic & Instrumentation Monitoring & Alerting AuthN/AuthZ Messaging Channel Microservice A Microservice B Microservice C Microservice D MicroserviceE Event Published Event Subscribed Event Published/ Subscribed Shared Configuration Dependency Management Service Gateway Service Routing Service Discovery Architettura per Microservices
  • 25. /3925 Platform Automation Deployment Automation Build & Test Automation Diagnostic & Instrumentation Monitoring & Alerting AuthN/AuthZ Messaging Channel Microservice A Microservice B Microservice C Microservice D Microservice E Event Published Event Subscribed Event Published/ Subscribed Shared Configuration Dependency ManagementService Gateway Service Routing Architettura per Microservices Service Discovery
  • 26. /39 Chi utilizza i Microservices? 26
  • 27. /39 IBM e i Microservices 27
  • 29. /3929 Software Developer Junior Roberta Randazzo PROBLEMA: PDF PRINTER PER WEB APP Esempio pratico di un Microservice
  • 30. /3930 Sviluppo di un software capace di generare pdf da applicazioni web e quindi da pagine HTML. PDF da WEB PAGE PDF da Pagina WEB Generare da URL di una pagina web con accesso protetto, un file in formato PDF Invio PDF ad altri servizi La destinazione del file può essere differente dall’origine che ha generato la richiesta, secondo le configurazioni della request. Soluzione Riutilizzabile in altri sistemi Riutilizzabile in altri servizi, cioè non legato o inglobato in ogni singola applicazione e quindi indipendente dall’ambiente che lo genera. Soluzione Automatizzata Ricevere le request di elaborazione del pdf e rispondere ad ogni servizio che lo richiede. Soluzione Indipendente Il software resta attivo anche se il servizio in ricezione o quello in attesa del pdf va giù. Soluzione Dinamica Risponde in modo differente ad ogni richiesta. Feature del Microservice
  • 31. /3931 Browser Visualizzazione nel Browers di esecuzione a scopo di test. Attachment File come allegato scaricato da browser. File System Local Storage Rest API Inoltro file ad URL o Servizio in ascolto direttamente connesso RabbitMQ Message Broker che consuma un coda. Invio dati come MESSAGE Output del Microservice
  • 32. /3932 Framework per realizzare applicazioni Web in JavaScript, per la scrittura di applicazioni “server-side” in modalità event-drive. Garantisce efficienza delle applicazioni grazie al comportamento asincrono. Node.JS Linguaggio che compila in JavaScript CoffeeScript LInguaggio di scripting orientato agli oggetti e agli eventi Javascript Servizio web di hosting per lo sviluppo di progetti software, che usa il sistema di controllo di versione Git.. GitHub Light-weight web application framework to help organize your web application into an MVC architecture on the server side. Express.js basically helps you manage everything, from routes, to handling requests and views. ExpressJS Headless browser, Tool che consente la manipolazione via JavaScript del DOM, di CSS, JSON, Ajax altre tecnologie Web client-side da riga di comando, senza alcun rendering a video. Utilizzato in tutti quei contesti in cui si ha bisogno di automatizzare le tipiche attività di un Web browser PhantomJS Tecnologie Utilizzate
  • 33. /3933 Abbiamo implementato html2pdf.it in un container, dotato di REST APIs e collegato a RabbitMQ per metterlo in comunicazione con altri microservice. Docker Container Ambiente indipendente e automatizzato Json Javascript Object Notation API Rest Application Programming Interface REpresentational State Transfer Stateless architecture that generally runs over HTTPS/TLS RabbitMQ message-oriented middleware, broker di messaggistica, che implementa il protocollo Advanced Message Queuing Protocol (AMQP) API Base Software Improvements
  • 34. /3934 E Some Title Goes Here Il flusso di lavoro parte dunque da un dato servizio che invia tramite RabbitMQ un messaggio Json al Microservice Html2Pdf contenente un action. Il Nostro Microservice elabora la action come un http- request grazie a Node.JS & Express.JS Web APP Request PhantomJS il quale renderizza la pagina web in un pdf, passando l’output generato nuovamente a coffeescript che genera nella reponse il file binario in formato Pdf o in Base64. Microservice Response HTTP Request Produzione del PDF
  • 35. /3935 Html2Pdf Service 2 Service 1 Control Flow Deployment Storage Backup Networking i servizi 1,2 e 3 inviano la request consumando una coda RabbitMQ che viene inoltrata ad Html2Pdf Service 1, 2, 3 Restituisce la response come PDF o Json a RabbitMQ Html2Pdf Microservice Cloud in ascolto su Rabbit che riceve le request consentendo upload e download dei files . ownCloud Microservice Le response possono essere restituite ai servizi di origine oppure inoltrate ad altri servizi in coda su RabbitMQ. Routing Service 3 download upload Dialogo tra Microservices