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
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.