SlideShare a Scribd company logo
1 of 13
Download to read offline
Microservice, un caso reale
a cura di Roberta Randazzo
Software Developer & Programmer
Roberta Randazzo
GNULINUXMEETING 2016 PALERMO
Microservice Architecture
1 Put each element of functionality into a separate device .
Developing Scalable
Il Microservice è uno stile architettonico in cui grandi applicazioni software
complesse sono suddivise in una serie di servizi indipendenti.
.

!
Ogni Microservice contiene un servizio responsabile di un compito specifico.
!
I Microservices interagiscono tra loro creando una rete software complessa.
Scalability
Elasticity
Agility
Operability and Portability
GNULINUXMEETING 2016 PALERMO
Docker Containers
2 Docker
I contenitori Docker possono avvolgere pezzi di software in un file system
completo che contiene tutto ciò di cui ha bisogno per funzionare: codice,
runtime, strumenti di sistema e librerie di sistema , assicurando che verrà
eseguito in modo coerente in tutti gli ambienti.
Docker Container
Ogni servizio verrà eseguito nel suo contenitore Docker, e
comunicherà utilizzando protocolli sincroni come HTTP/REST o
protocolli asincroni come AMQP.
GNULINUXMEETING 2016 PALERMO
Problem Solving : Creazione di Pdf da URL
3 Generare PDF da Pagine HTML
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.
GNULINUXMEETING 2016 PALERMO
Solution Requirements
4 Creazione di PDF binary o un Json PDF-Base64
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
GNULINUXMEETING 2016 PALERMO
Decision Making
5 Software base opensource : html2pdf.it -Generate PDFs from any web-page
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
GNULINUXMEETING 2016 PALERMO
Base Software Improvements
6 Adds On html2pdf.it : 
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
GNULINUXMEETING 2016 PALERMO
Final Result
7 Html2Pdf Microservice Testing Page
GNULINUXMEETING 2016 PALERMO
WorkFlow Html2Pdf
8 Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.
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
GNULINUXMEETING 2016 PALERMO
Microservice Networking
9 Dialogo tra containers
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
Rrestituisce 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
Contact Info
Roberta Randazzo
Software Developer, Programmer
https://github.com/reverserob
https://www.facebook.com/RubiRuben
r.randazzo85@gmail.com
https://twitter.com/RandazzoRoberta
https://www.linkedin.com/in/roberta-randazzo-a35192b7
Thank you.
GNULINUXMEETING 2016 PALERMO
THE END

More Related Content

Viewers also liked

Coffee script part 2
Coffee script part 2Coffee script part 2
Coffee script part 2max peng
 
Blog phrasal verbs
Blog phrasal verbsBlog phrasal verbs
Blog phrasal verbsJenny Rojas
 
Emerging Networking Technologies for Industrial Applications
Emerging Networking Technologies for Industrial ApplicationsEmerging Networking Technologies for Industrial Applications
Emerging Networking Technologies for Industrial ApplicationsPrasant Misra
 
Mahmoud Samy CV - IT Web Developer
Mahmoud Samy CV - IT Web DeveloperMahmoud Samy CV - IT Web Developer
Mahmoud Samy CV - IT Web DeveloperMahmoud Samy
 
Usando mind maps no planejamento de testes - TDC 2015
Usando mind maps no planejamento de testes - TDC 2015Usando mind maps no planejamento de testes - TDC 2015
Usando mind maps no planejamento de testes - TDC 2015Gabriel Oliveira
 
The constrained application protocol (CoAP)
The constrained application protocol (CoAP)The constrained application protocol (CoAP)
The constrained application protocol (CoAP)Hamdamboy (함담보이)
 
WSO2 Data Analytics Server - Product Overview
WSO2 Data Analytics Server - Product OverviewWSO2 Data Analytics Server - Product Overview
WSO2 Data Analytics Server - Product OverviewWSO2
 
The person I admire
The person I admireThe person I admire
The person I admireNatashaLooL
 
Micro services Architecture with Vortex -- Part I
Micro services Architecture with Vortex -- Part IMicro services Architecture with Vortex -- Part I
Micro services Architecture with Vortex -- Part IAngelo Corsaro
 
AS Macro Revision: Macro Objectives and Conflicts
AS Macro Revision: Macro Objectives and ConflictsAS Macro Revision: Macro Objectives and Conflicts
AS Macro Revision: Macro Objectives and Conflictstutor2u
 
APIdays 2016 - The State of Web API Languages
APIdays 2016  - The State of Web API LanguagesAPIdays 2016  - The State of Web API Languages
APIdays 2016 - The State of Web API LanguagesRestlet
 

Viewers also liked (15)

Coffee script part 2
Coffee script part 2Coffee script part 2
Coffee script part 2
 
SelvaResume
SelvaResumeSelvaResume
SelvaResume
 
Abdul Aziz alhasni CV
Abdul Aziz alhasni CVAbdul Aziz alhasni CV
Abdul Aziz alhasni CV
 
Blog phrasal verbs
Blog phrasal verbsBlog phrasal verbs
Blog phrasal verbs
 
TDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - FloripaTDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - Floripa
 
Emerging Networking Technologies for Industrial Applications
Emerging Networking Technologies for Industrial ApplicationsEmerging Networking Technologies for Industrial Applications
Emerging Networking Technologies for Industrial Applications
 
Mahmoud Samy CV - IT Web Developer
Mahmoud Samy CV - IT Web DeveloperMahmoud Samy CV - IT Web Developer
Mahmoud Samy CV - IT Web Developer
 
Usando mind maps no planejamento de testes - TDC 2015
Usando mind maps no planejamento de testes - TDC 2015Usando mind maps no planejamento de testes - TDC 2015
Usando mind maps no planejamento de testes - TDC 2015
 
The constrained application protocol (CoAP)
The constrained application protocol (CoAP)The constrained application protocol (CoAP)
The constrained application protocol (CoAP)
 
Generative junji
Generative junjiGenerative junji
Generative junji
 
WSO2 Data Analytics Server - Product Overview
WSO2 Data Analytics Server - Product OverviewWSO2 Data Analytics Server - Product Overview
WSO2 Data Analytics Server - Product Overview
 
The person I admire
The person I admireThe person I admire
The person I admire
 
Micro services Architecture with Vortex -- Part I
Micro services Architecture with Vortex -- Part IMicro services Architecture with Vortex -- Part I
Micro services Architecture with Vortex -- Part I
 
AS Macro Revision: Macro Objectives and Conflicts
AS Macro Revision: Macro Objectives and ConflictsAS Macro Revision: Macro Objectives and Conflicts
AS Macro Revision: Macro Objectives and Conflicts
 
APIdays 2016 - The State of Web API Languages
APIdays 2016  - The State of Web API LanguagesAPIdays 2016  - The State of Web API Languages
APIdays 2016 - The State of Web API Languages
 

Similar to Roberta randazzo gnulinuxmeeting 2016

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
 
Simple Network Management Protocol
Simple Network Management ProtocolSimple Network Management Protocol
Simple Network Management Protocolmichelemanzotti
 
Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfrescoMirco Leo
 
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...EvolutionBook S.r.l.
 
IBM Bluemix @Codemotion
IBM Bluemix @CodemotionIBM Bluemix @Codemotion
IBM Bluemix @CodemotionRoberto Pozzi
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceMario Rossano
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open sourceMarco Ferrigno
 
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2Bkino2k
 
Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Marcello Teodori
 
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...Codemotion
 
Osd 2016 Middleware Track
Osd 2016 Middleware TrackOsd 2016 Middleware Track
Osd 2016 Middleware TrackUgo Landini
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality CodeDaniele Mondello
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentalsmvetro
 
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Romualdo Gobbo
 
.NET Microservices
.NET Microservices.NET Microservices
.NET MicroservicesLuca Congiu
 
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
 

Similar to Roberta randazzo gnulinuxmeeting 2016 (20)

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
 
Simple Network Management Protocol
Simple Network Management ProtocolSimple Network Management Protocol
Simple Network Management Protocol
 
Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfresco
 
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
 
IBM Bluemix @Codemotion
IBM Bluemix @CodemotionIBM Bluemix @Codemotion
IBM Bluemix @Codemotion
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open source
 
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
 
Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5
 
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
 
Osd 2016 Middleware Track
Osd 2016 Middleware TrackOsd 2016 Middleware Track
Osd 2016 Middleware Track
 
Introduzione al PHP
Introduzione al PHPIntroduzione al PHP
Introduzione al PHP
 
Swagger per tutti
Swagger per tuttiSwagger per tutti
Swagger per tutti
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality Code
 
Scenario Framework
Scenario FrameworkScenario Framework
Scenario Framework
 
Tools & librerie PHP
Tools & librerie PHPTools & librerie PHP
Tools & librerie PHP
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentals
 
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20
 
.NET Microservices
.NET Microservices.NET Microservices
.NET Microservices
 
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
 

Roberta randazzo gnulinuxmeeting 2016

  • 1. Microservice, un caso reale a cura di Roberta Randazzo
  • 2. Software Developer & Programmer Roberta Randazzo
  • 3. GNULINUXMEETING 2016 PALERMO Microservice Architecture 1 Put each element of functionality into a separate device . Developing Scalable Il Microservice è uno stile architettonico in cui grandi applicazioni software complesse sono suddivise in una serie di servizi indipendenti. . ! Ogni Microservice contiene un servizio responsabile di un compito specifico. ! I Microservices interagiscono tra loro creando una rete software complessa. Scalability Elasticity Agility Operability and Portability
  • 4. GNULINUXMEETING 2016 PALERMO Docker Containers 2 Docker I contenitori Docker possono avvolgere pezzi di software in un file system completo che contiene tutto ciò di cui ha bisogno per funzionare: codice, runtime, strumenti di sistema e librerie di sistema , assicurando che verrà eseguito in modo coerente in tutti gli ambienti. Docker Container Ogni servizio verrà eseguito nel suo contenitore Docker, e comunicherà utilizzando protocolli sincroni come HTTP/REST o protocolli asincroni come AMQP.
  • 5. GNULINUXMEETING 2016 PALERMO Problem Solving : Creazione di Pdf da URL 3 Generare PDF da Pagine HTML 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.
  • 6. GNULINUXMEETING 2016 PALERMO Solution Requirements 4 Creazione di PDF binary o un Json PDF-Base64 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
  • 7. GNULINUXMEETING 2016 PALERMO Decision Making 5 Software base opensource : html2pdf.it -Generate PDFs from any web-page 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
  • 8. GNULINUXMEETING 2016 PALERMO Base Software Improvements 6 Adds On html2pdf.it : 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
  • 9. GNULINUXMEETING 2016 PALERMO Final Result 7 Html2Pdf Microservice Testing Page
  • 10. GNULINUXMEETING 2016 PALERMO WorkFlow Html2Pdf 8 Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam. 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
  • 11. GNULINUXMEETING 2016 PALERMO Microservice Networking 9 Dialogo tra containers 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 Rrestituisce 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
  • 12. Contact Info Roberta Randazzo Software Developer, Programmer https://github.com/reverserob https://www.facebook.com/RubiRuben r.randazzo85@gmail.com https://twitter.com/RandazzoRoberta https://www.linkedin.com/in/roberta-randazzo-a35192b7 Thank you.