Gnu-Linux Meeting 2016 Palermo
-
Upload
roberta-randazzo -
Category
Software
-
view
383 -
download
0
Transcript of Gnu-Linux Meeting 2016 Palermo
Microservice, un caso realea cura di Roberta Randazzo
Software Developer & Programmer
Roberta Randazzo
GNULINUXMEETING 2016 PALERMO
Microservice Architecture1 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 Containers2
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 URL3 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 WEBGenerare da URL di una pagina web con accesso protetto, un file in formato PDF
Invio PDF ad altri serviziLa destinazione del file può essere differente dall’origine che ha generato la richiesta, secondo le configurazioni della request.
Soluzione Riutilizzabile in altri sistemiRiutilizzabile in altri servizi, cioè non legato o inglobato in ogni singola applicazione e quindi indipendente dall’ambiente che lo genera.
Soluzione AutomatizzataRicevere 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 DinamicaRisponde in modo differente ad ogni
richiesta.
GNULINUXMEETING 2016 PALERMO
Solution Requirements4 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 Making5 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 Improvements6
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
Adds On html2pdf.it
GNULINUXMEETING 2016 PALERMO
Final Result7 Html2Pdf Microservice Testing Page
GNULINUXMEETING 2016 PALERMO
WorkFlow Html2Pdf8
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
GNULINUXMEETING 2016 PALERMO
Microservice Networking9 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
! �[email protected]� � "
Ingegnere Informatico
Contact Info
Roberta RandazzoSoftware Developer, Programmer
https://github.com/reverserob
https://www.facebook.com/RubiRuben
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.