Upload
roberta-randazzo
View
203
Download
1
Embed Size (px)
Citation preview
Microservice, un caso realea cura di Roberta Randazzo
Software Developer & Programmer
Roberta Randazzo
GNULINUXMEETING 2016 PALERMO
Microservice Architecture1Put 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 Containers2Docker
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 URL3Generare 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 Requirements4Creazione 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 Making5Software 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 JavaScriptCoffeeScript
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 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 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
GNULINUXMEETING 2016 PALERMO
Final Result7Html2Pdf Microservice Testing Page
GNULINUXMEETING 2016 PALERMO
WorkFlow Html2Pdf8Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam.
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 Networking9Dialogo 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 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.
GNULINUXMEETING 2016 PALERMO
THE END