SlideShare a Scribd company logo
1 of 15
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
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
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
Adds On html2pdf.it
GNULINUXMEETING 2016 PALERMO
Final Result
7 Html2Pdf Microservice Testing Page
GNULINUXMEETING 2016 PALERMO
WorkFlow Html2Pdf
8
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
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
Final Result
GNULINUXMEETING 2016 PALERMO
Olomedia Support Team
Production Manager
Daniele Mondello
! "
C. E. O. Olomedia srl
Resources and Development
Manager 
Marcello Vetro
! vetro@olomedia.it "
Ingegnere Informatico
info@danielemondello.it
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.
The End Html2Pdf - Web Page to PDF Converter
Microservice, un caso reale.

More Related Content

Viewers also liked

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
tutor2u
 

Viewers also liked (8)

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
 
SelvaResume
SelvaResumeSelvaResume
SelvaResume
 
The person I admire
The person I admireThe person I admire
The person I admire
 
WSO2 Data Analytics Server - Product Overview
WSO2 Data Analytics Server - Product OverviewWSO2 Data Analytics Server - Product Overview
WSO2 Data Analytics Server - Product Overview
 
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
 

Gnu-Linux Meeting 2016 Palermo

  • 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 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 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 Adds On html2pdf.it
  • 9. GNULINUXMEETING 2016 PALERMO Final Result 7 Html2Pdf Microservice Testing Page
  • 10. GNULINUXMEETING 2016 PALERMO WorkFlow Html2Pdf 8 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 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
  • 13. GNULINUXMEETING 2016 PALERMO Olomedia Support Team Production Manager Daniele Mondello ! " C. E. O. Olomedia srl Resources and Development Manager Marcello Vetro ! vetro@olomedia.it " Ingegnere Informatico info@danielemondello.it
  • 14. 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.
  • 15. The End Html2Pdf - Web Page to PDF Converter Microservice, un caso reale.