Gnu-Linux Meeting 2016 Palermo

15
Microservice, un caso reale a cura di Roberta Randazzo

Transcript of Gnu-Linux Meeting 2016 Palermo

Page 1: Gnu-Linux Meeting 2016 Palermo

Microservice, un caso realea cura di Roberta Randazzo

Page 2: Gnu-Linux Meeting 2016 Palermo

Software Developer & Programmer

Roberta Randazzo

Page 3: Gnu-Linux Meeting 2016 Palermo

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

Page 4: Gnu-Linux Meeting 2016 Palermo

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.

Page 5: Gnu-Linux Meeting 2016 Palermo

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.

Page 6: Gnu-Linux Meeting 2016 Palermo

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

Page 7: Gnu-Linux Meeting 2016 Palermo

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

Page 8: Gnu-Linux Meeting 2016 Palermo

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

Page 9: Gnu-Linux Meeting 2016 Palermo

GNULINUXMEETING 2016 PALERMO

Final Result7 Html2Pdf Microservice Testing Page

Page 10: Gnu-Linux Meeting 2016 Palermo

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

Page 11: Gnu-Linux Meeting 2016 Palermo

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

Page 12: Gnu-Linux Meeting 2016 Palermo

Final Result

Page 13: Gnu-Linux Meeting 2016 Palermo

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

[email protected]

Page 14: Gnu-Linux Meeting 2016 Palermo

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 15: Gnu-Linux Meeting 2016 Palermo

The End Html2Pdf - Web Page to PDF Converter

Microservice, un caso reale.