SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
EVOLUZIONE DEL WEB DEVELOPMENT
DALLE CGI AI MICROSERVICES
Daniele Mondello
/502
•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
/503
TIM BERNERS-LEE
L’inizio: HTML
MARZO 1989
/504
PERL PRACTICAL EXTRACTION AND REPORT
LANGUAGE È UN LINGUAGGIO AD ALTO
LIVELLO, DINAMICO, PROCEDURALE E
INTERPRETATO, CREATO NEL 1987 DA LARRY
WALL. NOTO COME LINGUAGGIO PER LO
SVILUPPO DI CGI
1987
Perl il linguaggio Cammello
/505
Eseguibile in locale Eseguibile da un browser
Possibilità di formattazione
eseguibile a distanza con permessi
differenti rispetto al file system
LA RIVOLUZIONE DELLE CGI
print "Hello Worldn";
perl hello.plLanciare il comando
1
2
Creare e salvare file hello.pl con il seguente codice:
Creare e salvare file hello.cgi con il seguente codice:
#!/usr/local/bin/perl
print "Content-type: text/htmlnn";
print "<H1>Hello World</H1>n”;
rendere eseguibile sul server hello.ggi e dare i permessi
puntare con il browser a hello.cgi
Hello World in Perl
/506
ASP Linguaggio?! NO!
ASP (ACTIVE SERVER PAGES) NON È UN
LINGUAGGIO DI PROGRAMMAZIONE MA UNA
TECNOLOGIA MICROSOFT PER CREAZIONE D
PAG I N E W E B D I N A M I C H E AT T R AV E R S O
LINGUAGGI DI SCRIPT COME VBSCRIPT E JSCRIPT.
1997
/507
Integrate nelle pagine HTML
Sono orientate agli oggetti
Necessitano di interprete e non compilazione.
Sfruttavano componenti server ActiveX.
Utilizzo di VBScript o Jscript
Era facile una connessione con access tramite odbc
Potevi usare IIS o PWS
PAGINE IN ASP
<%@ LANGUAGE = JScript %>
<html>
<head>
<title>Pagina in Asp</title>
</head>
<body>
<% Response.Write("Hello World!”); %>
</body>
</html>
1
2
Hello World in ASP
<html>
<head>
<title>Pagina in Asp</title>
</head>
<body>
<script language="VBScript" runat="Server">
response.write "Hello World!"
</script>
</body>
</html>
PHP Per pagine personali
PHP  (ACRONIMO RICORSIVO DI "PHP: HYPERTEXT
PREPROCESSOR", PREPROCESSORE DI IPERTESTI;
ORIGINARIAMENTE ACRONIMO DI "PERSONAL HOME
PA G E " ) È U N L I N G U A G G I O D I S C R I P T I N G
INTERPRETATO, ORIGINARIAMENTE CONCEPITO PER
LA PROGRAMMAZIONE DI PAGINE WEB DINAMICHE.
1995
/509
Integrate nelle pagine HTML
Sono orientate agli oggetti
Necessitano di interprete e non compilazione.
Multipiattaforma
Semplice
Era facile una connessione con mysql tramite odbc
Potevi usare Apache
PAGINE IN PHP
<html>
<head>
<title>Test PHP</title>
</head>
<body>
<?php echo "Hello World!<p>"; ?>
</body>
</html>
Hello World in PHP
/5010
PHP Il diluvio di CMS
/5011
Il diluvio di FRAMEWORK
/5012
19951995
I giganti litigano!
/5013
09/01/2007APPLE RIVOLUZIONA 3 SETTORI
APPLE rivoluziona lo sviluppo del Web Development
/5014
THE HERO! 19961996 V 1 NO PDA
…ed il Front End?
/5015
Framework per il Front End
/5016
Back End vs Front End
/5017
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
/5018
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
/5019
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
/50
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
20
/5021
Caratteristiche di un Microservice
UTILIZZO
DECENTRATO DEI
DATI
SCALABILITA'
INDiPENDENTE DA
LINGUAGGIO
POSSIBILITA DI
RIUTILIZZO
BUG ISOLATI
/5022
L’obiettivo di un Microservice
Micro è l’obiettivo!
/5023
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
/5024
Microservice A Microservice B Microservice C Microservice D MicroserviceE
Architettura per Microservices
/5025
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
/5026
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
/5027
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
/5028
I progetti in Jenkins
/5029
Un progetto in Jenkins 1/2
/5030
Un progetto in Jenkins 2/2
/5031
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
/5032
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
/5033
Utilizzo Rabbit MQ
/5034
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
/5035
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
/5036
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
/5037
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)
/5038
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
/5039
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
/50
Chi utilizza i Microservices?
40
/50
Chaos Monkey
Netflix Control
41
/5042
Software Developer Junior
Roberta Randazzo
PROBLEMA: PDF PRINTER PER WEB APP
Esempio pratico di un Microservice
/5043
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
/5044
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
/5045
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
/5046
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
/5047
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
/5048
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
/5049
Final Result
Risultato Finale
/5050
Progettare Microservices
GRAZIE PER L’ATTENZIONE
info@danielemondello.it
@dmondello
Danielemondello
Daniele Mondello

Weitere ähnliche Inhalte

Ähnlich wie Evoluzione del web development dalle cgi ai microservices

Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfrescoMirco Leo
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e KubernetesWorkshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetesblexin
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
 
Visual COBOL - Conoscere Visual COBOL- Micro Focus
Visual COBOL - Conoscere Visual COBOL- Micro FocusVisual COBOL - Conoscere Visual COBOL- Micro Focus
Visual COBOL - Conoscere Visual COBOL- Micro FocusMicrofocusitalia
 
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Romualdo Gobbo
 
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
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinFabio Cozzolino
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentalsmvetro
 
IBM Bluemix @Codemotion
IBM Bluemix @CodemotionIBM Bluemix @Codemotion
IBM Bluemix @CodemotionRoberto Pozzi
 
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
 
Azure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloudAzure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloudDavide Benvegnù
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfFlorence Consulting
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)jampslide
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il MobilePietro Libro
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...Codemotion
 
IBM Blue Mix - Cloud e Watson nella fonderia IBM
IBM Blue Mix - Cloud e Watson nella fonderia IBMIBM Blue Mix - Cloud e Watson nella fonderia IBM
IBM Blue Mix - Cloud e Watson nella fonderia IBMW1S3 Magazine
 

Ähnlich wie Evoluzione del web development dalle cgi ai microservices (20)

Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfresco
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e KubernetesWorkshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
Visual COBOL - Conoscere Visual COBOL- Micro Focus
Visual COBOL - Conoscere Visual COBOL- Micro FocusVisual COBOL - Conoscere Visual COBOL- Micro Focus
Visual COBOL - Conoscere Visual COBOL- Micro Focus
 
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20
 
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...
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentals
 
IBM Bluemix @Codemotion
IBM Bluemix @CodemotionIBM Bluemix @Codemotion
IBM Bluemix @Codemotion
 
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...
 
Presentazione wi400 i5
Presentazione wi400 i5Presentazione wi400 i5
Presentazione wi400 i5
 
Azure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloudAzure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloud
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdf
 
Ibm bluemix r pozzi
Ibm bluemix r pozziIbm bluemix r pozzi
Ibm bluemix r pozzi
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
 
IBM Blue Mix - Cloud e Watson nella fonderia IBM
IBM Blue Mix - Cloud e Watson nella fonderia IBMIBM Blue Mix - Cloud e Watson nella fonderia IBM
IBM Blue Mix - Cloud e Watson nella fonderia IBM
 
Tesina Grupposis
Tesina GrupposisTesina Grupposis
Tesina Grupposis
 

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
 
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
 
#openamat Giornata trasparenza 2016
#openamat Giornata trasparenza 2016#openamat Giornata trasparenza 2016
#openamat Giornata trasparenza 2016Daniele 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
 
Approccio ad una infrastruttura per Microservice
Approccio ad una infrastruttura per MicroserviceApproccio ad una infrastruttura per Microservice
Approccio ad una infrastruttura per MicroserviceDaniele 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
 
Introduzione ai Microservices
Introduzione ai MicroservicesIntroduzione ai Microservices
Introduzione ai MicroservicesDaniele 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
 

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
 
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
 
#openamat Giornata trasparenza 2016
#openamat Giornata trasparenza 2016#openamat Giornata trasparenza 2016
#openamat Giornata trasparenza 2016
 
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
 
Approccio ad una infrastruttura per Microservice
Approccio ad una infrastruttura per MicroserviceApproccio ad una infrastruttura per Microservice
Approccio ad una infrastruttura per Microservice
 
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
 
Introduzione ai Microservices
Introduzione ai MicroservicesIntroduzione ai Microservices
Introduzione ai Microservices
 
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
 

Evoluzione del web development dalle cgi ai microservices

  • 1. EVOLUZIONE DEL WEB DEVELOPMENT DALLE CGI AI MICROSERVICES Daniele Mondello
  • 2. /502 •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
  • 4. /504 PERL PRACTICAL EXTRACTION AND REPORT LANGUAGE È UN LINGUAGGIO AD ALTO LIVELLO, DINAMICO, PROCEDURALE E INTERPRETATO, CREATO NEL 1987 DA LARRY WALL. NOTO COME LINGUAGGIO PER LO SVILUPPO DI CGI 1987 Perl il linguaggio Cammello
  • 5. /505 Eseguibile in locale Eseguibile da un browser Possibilità di formattazione eseguibile a distanza con permessi differenti rispetto al file system LA RIVOLUZIONE DELLE CGI print "Hello Worldn"; perl hello.plLanciare il comando 1 2 Creare e salvare file hello.pl con il seguente codice: Creare e salvare file hello.cgi con il seguente codice: #!/usr/local/bin/perl print "Content-type: text/htmlnn"; print "<H1>Hello World</H1>n”; rendere eseguibile sul server hello.ggi e dare i permessi puntare con il browser a hello.cgi Hello World in Perl
  • 6. /506 ASP Linguaggio?! NO! ASP (ACTIVE SERVER PAGES) NON È UN LINGUAGGIO DI PROGRAMMAZIONE MA UNA TECNOLOGIA MICROSOFT PER CREAZIONE D PAG I N E W E B D I N A M I C H E AT T R AV E R S O LINGUAGGI DI SCRIPT COME VBSCRIPT E JSCRIPT. 1997
  • 7. /507 Integrate nelle pagine HTML Sono orientate agli oggetti Necessitano di interprete e non compilazione. Sfruttavano componenti server ActiveX. Utilizzo di VBScript o Jscript Era facile una connessione con access tramite odbc Potevi usare IIS o PWS PAGINE IN ASP <%@ LANGUAGE = JScript %> <html> <head> <title>Pagina in Asp</title> </head> <body> <% Response.Write("Hello World!”); %> </body> </html> 1 2 Hello World in ASP <html> <head> <title>Pagina in Asp</title> </head> <body> <script language="VBScript" runat="Server"> response.write "Hello World!" </script> </body> </html>
  • 8. PHP Per pagine personali PHP  (ACRONIMO RICORSIVO DI "PHP: HYPERTEXT PREPROCESSOR", PREPROCESSORE DI IPERTESTI; ORIGINARIAMENTE ACRONIMO DI "PERSONAL HOME PA G E " ) È U N L I N G U A G G I O D I S C R I P T I N G INTERPRETATO, ORIGINARIAMENTE CONCEPITO PER LA PROGRAMMAZIONE DI PAGINE WEB DINAMICHE. 1995
  • 9. /509 Integrate nelle pagine HTML Sono orientate agli oggetti Necessitano di interprete e non compilazione. Multipiattaforma Semplice Era facile una connessione con mysql tramite odbc Potevi usare Apache PAGINE IN PHP <html> <head> <title>Test PHP</title> </head> <body> <?php echo "Hello World!<p>"; ?> </body> </html> Hello World in PHP
  • 11. /5011 Il diluvio di FRAMEWORK
  • 13. /5013 09/01/2007APPLE RIVOLUZIONA 3 SETTORI APPLE rivoluziona lo sviluppo del Web Development
  • 14. /5014 THE HERO! 19961996 V 1 NO PDA …ed il Front End?
  • 16. /5016 Back End vs Front End
  • 17. /5017 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
  • 18. /5018 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
  • 19. /5019 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
  • 20. /50 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 20
  • 21. /5021 Caratteristiche di un Microservice UTILIZZO DECENTRATO DEI DATI SCALABILITA' INDiPENDENTE DA LINGUAGGIO POSSIBILITA DI RIUTILIZZO BUG ISOLATI
  • 22. /5022 L’obiettivo di un Microservice Micro è l’obiettivo!
  • 23. /5023 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
  • 24. /5024 Microservice A Microservice B Microservice C Microservice D MicroserviceE Architettura per Microservices
  • 25. /5025 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
  • 26. /5026 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
  • 27. /5027 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
  • 29. /5029 Un progetto in Jenkins 1/2
  • 30. /5030 Un progetto in Jenkins 2/2
  • 31. /5031 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
  • 32. /5032 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
  • 34. /5034 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
  • 35. /5035 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
  • 36. /5036 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
  • 37. /5037 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)
  • 38. /5038 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
  • 39. /5039 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
  • 40. /50 Chi utilizza i Microservices? 40
  • 42. /5042 Software Developer Junior Roberta Randazzo PROBLEMA: PDF PRINTER PER WEB APP Esempio pratico di un Microservice
  • 43. /5043 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
  • 44. /5044 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
  • 45. /5045 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
  • 46. /5046 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
  • 47. /5047 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
  • 48. /5048 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