La rivoluzione dei Microservizi

Post on 14-Apr-2017

514 views 0 download

Transcript of La rivoluzione dei Microservizi

La rivoluzione dei microserviziIl nuovo paradigma di progettazione architetturale che cambierà i vostri sistemi IT

rendendoli più flessibili e più dinamici

Meeting On Microservices - Bologna, 20/12/2016

Ricerca Tecnologia

AffiancamentoConsulenza

Prodotti

Cliente

Il Sistema Informativo al centro

Processi Organizzativi Dati Organizzativi

Organizzazione

Contesto economico

Strategie di Business

Serve capacità di adattamentoContesto economico

1)Riduzione della visibilitàa lungo termine.

2) Internet come piazza abilitanteal commercio

1) Aumento della pressione esterna

2) Richiesta di maggiore capacità di adattamento in tempi brevi

Interveniamo qui

Com'è il sistema ora…

Sistema amministrativo

WebDati Specifici di

Applicazioni terze

Il sistema amministrativo è spesso il cuore dell'IT

I processi ed i dati organizzativi ITsi trovano sparsi in diverse porzioni del sistema:1) Dentro il sistema amministrativo2) Nei processi di integrazione3) Dentro applicativi di terze parti

I processi ed i dati organizzativi ITsi trovano sparsi in diverse porzioni del sistema:1) Dentro il sistema amministrativo2) Nei processi di integrazione3) Dentro applicativi di terze parti

La gestione dei processi organizzativi così come la gestione dei dati, richiede impegno in terminidi:

1) Tempo2) Risorse umane3) Risorse economiche

(Consulenze, prodotti,...)

Come dovrebbe essere?

Un sistema altamente adattivo e flessibile dovrebbe essere composto da tanti componenti interdipendenti ciascuno dei quali offre funzionalità ben delineate

Architettura logica a strati

Sorgenti di dati

Processi base

Processi di business

API

Applicativi

La scalabilità?

Un sistema flessibile dovrebbe essere in grado di scalare linearmente rispetto al carico a cui è sottoposto così da essere in grado di scalare linearmente anche i

suoi costi.

utilizzatori

costi

I Microservices

Applicativo monolitico

Lib A Lib B Lib C

μS A

μS B

μS C

μS MainApplicativo monolitico

Lib A Lib B Lib C

μS A

μS B

μS C

μS MainApplicativo monolitico

Lib A Lib B Lib C

μS A

μS B

μS C

μS Main

MONOLITICO vs DISTRIBUITO

Microservices - Riusabilità

Applicativo monolitico A

Lib A Lib B Lib C

Applicativo monolitico B

Lib A Lib B Lib C

Lib A Lib B Lib C Sorgenti μS A μS B μS C

μS Main A μS Main B

Microservices - Scalabilità

μS A

μS B

μS C

μS Main

Applicativo monolitico

Lib A Lib B Lib CApplicativo monolitico

Lib A Lib B Lib CApplicativo monolitico

Lib A Lib B Lib C

μS B

μS C

μS Main

μS B

μS B

Microservices - Deployment

μS A

μS B

μS C

μS Main

Applicativo monolitico

Lib A Lib B Lib C

Microservices Resistenza agli errori

Applicativo monolitico

Lib A Lib B Lib C

μS A

μS B

μS C

μS Main

μS C'

Microservices - Monitoring

Applicativo monolitico

Lib A Lib B Lib C

μS A

μS B

μS C

μS Main

LOG

Logger

I microservizi come soluzione

Sorgenti di dati

MICROSERVIZI

MICROSERVIZI

API

Applicativi

Jolie

Java Orchestration Language Interpreter Engine, nasce come alternativa al linguaggi di orchestrazione per web service WS-BPEL

● Semplificandone la gestione ● Non richiede la presenza di motori di esecuzione dedicati ● La definizione non è definita mediante xml ma è scritta in linguaggio nativo

eseguito dall’interprete● Estendendone le funzionalità

● Possibilità di integrare logica applicativa Java● Possibilità di utilizzare il linguaggio per implementare microservizi● Orchestrazione di Web Service Soap, Rest, Jolie

Perché un linguaggio?

ANNO 2016

Ho comprato uno smartphone nuovo con sistema operativo Android e connessione

ad internet

Perché un linguaggio?

ANNO 1800?

Ho comprato uno smartphone nuovo con sistema operativo Android e connessione

ad internet

Perché un linguaggio?

ANNO 1800?

Ho acquistato un oggetto grande quanto un libro di piccole dimensioni la cui copertina straordinariamente lucida e variopinta è in grado di mostrare immagini così

ben definite da apparire quasi rappresentazioni della realtà, ma questo è nulla poiché è sufficiente sfiorare

tale oggetto con un dito per innescare un meccanismo quasi diabolico in grado di fare udire la mia voce ad una

persona all'altro capo del mondo in tempo reale così che io possa comunicare con lei una volta acquisito un numero che mi permette di riconoscerla tra tutti.

L'oggetto è nuovo con sistema operativo Android e connessione ad internet

Il linguaggio fa guadagnare TEMPO e SPAZIO

oggetto grande quanto un libro di piccole dimensioni la cui copertina

straordinariamente lucida e variopinta è in grado di mostrare

immagini così ben definite da apparire quasi rappresentazioni della

realtà, ma questo è nulla poiché è sufficiente sfiorare tale oggetto con un dito per innescare un meccanismo quasi diabolico in grado di fare udire la mia voce ad una persona all'altro capo del mondo in tempo reale così che io possa comunicare con lei una

volta acquisito un numero che mi permette di riconoscerla tra tutti.

smartphone

Il linguaggi di programmazione

010101000101000100100100100101000101000010100100100101001010101001010010010100100101010001010001001001001001010001010000101001001001010010101010010100100101001001010100010100010010010010010100010100001010010010010100101010100101001001010010010101000101000100100100100101000101000010100100100101001010101001010010010100100101010001010001001001001001010001010000

MACCHINA

ORG 2050H MOV DPTR,#CNTMOV A,#INITMOVX @DPTR,AMOV SP,#2FH CLR RS0CLR RS1 ACALL SERIALMOVDPTR,#HEADINGACALL STRINGORG 2050H MOV DPTR,#CNTMOV A,#INITMOVX @DPTR,AMOV SP,#2FH CLR RS0

ASSEMBLER C

MENO ERRORI UMANI

int main(){ int n, sum = 0, c, value; printf("Enter the number of integers "); scanf("%d", &n); printf("Enter %d integers\n",n); for (c = 1; c <= n; c++) { scanf("%d",&value); sum = sum + value; } printf("Sum of entered integers = %d\n",sum); return 0;}

Un vantaggio concreto

● Il primo compilatore completo fu creato dall'equippe di John. W. Backus presso i laboratori IBM nel 1957. Era un compilatore FORTRAN. Ci vollero ben

● 18 anni uomo per realizzarlo.● Al tempo non era stata ancora sviluppata la

teoria dei linguaggi. ● Oggi in molte università, viene data la creazione

di un compilatore come esercizio d'esame. John. W. Backus

I tre vantaggi competitivi di Jolie

1)1) ParadigmaticitàParadigmaticità: : il programmatore scrive e pensa direttamente a microservizi.

2)2) Autosufficienza:Autosufficienza: non sono necessari tool aggiuntivi non sono necessari tool aggiuntivi

per la messa in esecuzione di un microservizio Jolieper la messa in esecuzione di un microservizio Jolie

3)3) Indipendenza:Indipendenza: un microservizio jolie non è legato a un microservizio jolie non è legato a nessun protocollo di comunicazione in particolarenessun protocollo di comunicazione in particolare

Paradigmaticità

Il programmatore programma e progetta l'architettura a microservizi in unico passaggio poiché il linguaggio fornisce tutti gli strumenti base per la creazione e manipolazione dei

microservizi.Conseguenza importante: durante la programmazione il programmatore si

disinteressa di come dovranno essere eseguiti i microservizi

Dall'applicazione monolitica...

...esecuzione come singola applicazione

...verso...

...eseguiti in due macchine

...i microservices

AutosufficienzaUn servizio Jolie necessita solamente di

una Java Virtual Machine per funzionare

Non sono necessari framework aggiuntivi per il suo funzionamento

No application server, No web server

Importazione di codice Legacy

Legacy Code

Indipendenza

HTTP

SOAP

HTTPS

custom protocolSi possono sviluppare protocolli custom specifici

L'interdipendenza tra linguaggi e supporti

Memorie meccaniche

0101010

1940

Assembler

1954Memorie elettroniche

Memorie TTL 1973

C

Multipiattaforma

Cloud 2010

1991

Java

IoT2030

Le due vie ai microserviziProgrammazione: dal punto di vista della programmazione la sfida è quella di trovare nuovi linguaggi in grado di catturarne l'essenza.

Linguaggio è la parola chiave.

Diciamo che questa via segue il paradigma linguistico

Sistemi: dal punto di vista dei sistemi, i microservizi possono essere visti come applicazioni indipendenti in grado di servire più richieste. Sono eseguiti all'interno di artefatti chiamati containers.

Container é la parola chiave.

Diciamo che questa via segue il paradigma sistemistico.

Paradigma Sistemisticovs

Paradigma LingusticoIl paradigma linguistico si basa sull'idea che i principi fondazionali della programmazione a microservizi possano essere condensato in un unico linguaggio.

Non è importante come venga eseguito un microservizio, la cosa importante è che ogni singola unità programmabile sia un microservizio.

Il paradigma sistemistico, è basato sui contaner e parte dall'idea che:

Non è importante come un microservizio è realizzato, la cosa più importante è che il microservizio sia eseguito all'interno di un container che può essere spostato, rimpiazzato o scalato.

Catena produttiva del software

DESIGN

Paradigma sistemistico Paradigma linguistico

DEVELOPMENT

PACKAGING

DEPLOYMENT

Il progettista pensa a microservizi Il progettista pensa a microservizi

Lo sviluppatore programmaseguendo un altro paradigma(oggetti, funzionale, ecc)

Il programmatore sviluppadirettamente a microservizi

Lo sviluppatore trasforma il suo artefatto software in un microservizioUtilizzando tool e frameworkaggiuntivi

Lo sviluppatore esegue il microservizio in un container

Lo sviluppatore può eseguire il microservizio in un container

(non necessario)

I confini di un microservizioParadigma Sistemistico Paradigma Lingustico

Un microservizio può essere il risultato della composizione di

altri microservizi

Un microservizio è un artefatto software sviluppato con un dato insieme di tecnologie

ed impachettato all'interno di un container

I microservizi sono atomici All'interno di un microservizio possono esserci altri microservizi

L'architetturaParadigma Sistemistico Paradigma linguistico

Un'architettura a microservizi è una rete di containers

Un'architettura a microservizi è una composizione di microservizi

L'architetturaParadigma Sistemistico Paradigma Linguistico

A microservice can be easily moved from inside to outside of a container (and vice

versa)

In order to bring an internal component out of a microservice, a specific programming

task must be carried out

X

Containers

Paradigma Sistemistico Paradigma Linguistico

Il container è solamente uno strumento che per l'esecuzione

Il Container è l'elemento chiave dell'archtettura

Vantaggi

Paradigma Sistemistico Linguistic paradigm

Indipendenza dallaTecnologia

Le architetture possono cambiare in modo semplice ricomponendo i

microservizi

Esecuzione semplice e scalabile

La progettazione a microservizi si traduce immediatamente in

programmazione nativa

Compatibile con lo stack del Cloud Computing

Compatibile con il paradigma sistemistico

La rivoluzione dei microservizi

Paradigma Linguistico

La rivoluzione si trova nell'intersezione tra questi due mondi

Paradigma sistemistico

Un sistema software complesso non è mai un'entità statica ma è soggetto a continue modifiche per potersi adattare agli stimoli

esterni... come il pensiero umano