Evoluzione del web development dalle cgi ai microservices
-
Upload
daniele-mondello -
Category
Internet
-
view
152 -
download
1
Transcript of Evoluzione del web development dalle cgi ai microservices
EVOLUZIONE DEL WEB DEVELOPMENTDALLE 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: HTMLMARZO 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 World\n";
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/perlprint "Content-type: text/html\n\n";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 DI 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! 1996 1996 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 MicrorservicesSono 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
DATISCALABILITA'
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 ChannelMicroservice 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 ManagementService
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 JavaScriptCoffeeScript
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 ContainerAmbiente indipendente e automatizzato
JsonJavascript Object Notation
API RestApplication Programming Interface
REpresentational State Transfer Stateless architecture that
generally runs over HTTPS/TLS
RabbitMQmessage-oriented middleware,
broker di messaggistica, che implementa il protocollo Advanced
Message Queuing Protocol (AMQP)
API
Base Software Improvements
/5047
ESome 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