O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Evoluzione del web development dalle cgi ai microservices

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 51 Anúncio

Evoluzione del web development dalle cgi ai microservices

Baixar para ler offline

Come si è sviluppato negli ultimi 20 anni lo sviluppo web? Nel Talk tenutosi all'incubatore Arca di Palermo per la masterclass di Angular 4 abbiamo fatto una cavalcata che ci ha portato dalle cgi in Perl ai Microservices

Come si è sviluppato negli ultimi 20 anni lo sviluppo web? Nel Talk tenutosi all'incubatore Arca di Palermo per la masterclass di Angular 4 abbiamo fatto una cavalcata che ci ha portato dalle cgi in Perl ai Microservices

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Semelhante a Evoluzione del web development dalle cgi ai microservices (20)

Mais de Daniele Mondello (20)

Anúncio

Mais recentes (20)

Evoluzione del web development dalle cgi ai microservices

  1. 1. EVOLUZIONE DEL WEB DEVELOPMENT DALLE CGI AI MICROSERVICES Daniele Mondello
  2. 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
  3. 3. /503 TIM BERNERS-LEE L’inizio: HTML MARZO 1989
  4. 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. 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. 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. 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. 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. 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
  10. 10. /5010 PHP Il diluvio di CMS
  11. 11. /5011 Il diluvio di FRAMEWORK
  12. 12. /5012 19951995 I giganti litigano!
  13. 13. /5013 09/01/2007APPLE RIVOLUZIONA 3 SETTORI APPLE rivoluziona lo sviluppo del Web Development
  14. 14. /5014 THE HERO! 19961996 V 1 NO PDA …ed il Front End?
  15. 15. /5015 Framework per il Front End
  16. 16. /5016 Back End vs Front End
  17. 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. 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. 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. 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. 21. /5021 Caratteristiche di un Microservice UTILIZZO DECENTRATO DEI DATI SCALABILITA' INDiPENDENTE DA LINGUAGGIO POSSIBILITA DI RIUTILIZZO BUG ISOLATI
  22. 22. /5022 L’obiettivo di un Microservice Micro è l’obiettivo!
  23. 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. 24. /5024 Microservice A Microservice B Microservice C Microservice D MicroserviceE Architettura per Microservices
  25. 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. 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. 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
  28. 28. /5028 I progetti in Jenkins
  29. 29. /5029 Un progetto in Jenkins 1/2
  30. 30. /5030 Un progetto in Jenkins 2/2
  31. 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. 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
  33. 33. /5033 Utilizzo Rabbit MQ
  34. 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. 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. 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. 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. 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. 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. 40. /50 Chi utilizza i Microservices? 40
  41. 41. /50 Chaos Monkey Netflix Control 41
  42. 42. /5042 Software Developer Junior Roberta Randazzo PROBLEMA: PDF PRINTER PER WEB APP Esempio pratico di un Microservice
  43. 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. 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. 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. 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. 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. 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
  49. 49. /5049 Final Result Risultato Finale
  50. 50. /5050 Progettare Microservices
  51. 51. GRAZIE PER L’ATTENZIONE info@danielemondello.it @dmondello Danielemondello Daniele Mondello

×