Roberta randazzo gnulinuxmeeting 2016

13
Microservice, un caso reale a cura di Roberta Randazzo

Transcript of Roberta randazzo gnulinuxmeeting 2016

Page 1: Roberta randazzo gnulinuxmeeting 2016

Microservice, un caso realea cura di Roberta Randazzo

Page 2: Roberta randazzo gnulinuxmeeting 2016

Software Developer & Programmer

Roberta Randazzo

Page 3: Roberta randazzo gnulinuxmeeting 2016

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

Page 4: Roberta randazzo gnulinuxmeeting 2016

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.

Page 5: Roberta randazzo gnulinuxmeeting 2016

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.

Page 6: Roberta randazzo gnulinuxmeeting 2016

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

Page 7: Roberta randazzo gnulinuxmeeting 2016

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

Page 8: Roberta randazzo gnulinuxmeeting 2016

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

Page 9: Roberta randazzo gnulinuxmeeting 2016

GNULINUXMEETING 2016 PALERMO

Final Result7Html2Pdf Microservice Testing Page

Page 10: Roberta randazzo gnulinuxmeeting 2016

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

Page 11: Roberta randazzo gnulinuxmeeting 2016

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

Page 12: Roberta randazzo gnulinuxmeeting 2016

Contact Info

Roberta RandazzoSoftware Developer, Programmer

https://github.com/reverserob

https://www.facebook.com/RubiRuben

[email protected]

https://twitter.com/RandazzoRoberta

https://www.linkedin.com/in/roberta-randazzo-a35192b7

Thank you.

Page 13: Roberta randazzo gnulinuxmeeting 2016

GNULINUXMEETING 2016 PALERMO

THE END