la rivoluzione dei microservizi
TRANSCRIPT
![Page 1: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/1.jpg)
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
![Page 2: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/2.jpg)
Ricerca Tecnologia
AffiancamentoConsulenza
Prodotti
Cliente
![Page 3: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/3.jpg)
Il Sistema Informativo al centro
Processi Organizzativi Dati Organizzativi
Organizzazione
Contesto economico
Strategie di Business
![Page 4: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/4.jpg)
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
![Page 5: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/5.jpg)
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,...)
![Page 6: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/6.jpg)
Come dovrebbe essere?
Un sistema altamente adattivo e flessibile dovrebbe essere composto da tanti componenti interdipendenti ciascuno dei quali offre funzionalità ben delineate
![Page 7: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/7.jpg)
Architettura logica a strati
Sorgenti di dati
Processi base
Processi di business
API
Applicativi
![Page 8: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/8.jpg)
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
![Page 9: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/9.jpg)
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
![Page 10: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/10.jpg)
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
![Page 11: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/11.jpg)
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
![Page 12: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/12.jpg)
Microservices - Deployment
μS A
μS B
μS C
μS Main
Applicativo monolitico
Lib A Lib B Lib C
![Page 13: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/13.jpg)
Microservices Resistenza agli errori
Applicativo monolitico
Lib A Lib B Lib C
μS A
μS B
μS C
μS Main
μS C'
![Page 14: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/14.jpg)
Microservices - Monitoring
Applicativo monolitico
Lib A Lib B Lib C
μS A
μS B
μS C
μS Main
LOG
Logger
![Page 15: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/15.jpg)
I microservizi come soluzione
Sorgenti di dati
MICROSERVIZI
MICROSERVIZI
API
Applicativi
![Page 16: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/16.jpg)
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
![Page 17: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/17.jpg)
Perché un linguaggio?
ANNO 2016
Ho comprato uno smartphone nuovo con sistema operativo Android e connessione
ad internet
![Page 18: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/18.jpg)
Perché un linguaggio?
ANNO 1800?
Ho comprato uno smartphone nuovo con sistema operativo Android e connessione
ad internet
![Page 19: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/19.jpg)
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
![Page 20: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/20.jpg)
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
![Page 21: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/21.jpg)
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;}
![Page 22: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/22.jpg)
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
![Page 23: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/23.jpg)
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
![Page 24: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/24.jpg)
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
![Page 25: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/25.jpg)
Dall'applicazione monolitica...
...esecuzione come singola applicazione
![Page 26: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/26.jpg)
...verso...
...eseguiti in due macchine
![Page 27: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/27.jpg)
...i microservices
![Page 28: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/28.jpg)
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
![Page 29: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/29.jpg)
Importazione di codice Legacy
Legacy Code
![Page 30: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/30.jpg)
Indipendenza
HTTP
SOAP
HTTPS
custom protocolSi possono sviluppare protocolli custom specifici
![Page 31: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/31.jpg)
L'interdipendenza tra linguaggi e supporti
Memorie meccaniche
0101010
1940
Assembler
1954Memorie elettroniche
Memorie TTL 1973
C
Multipiattaforma
Cloud 2010
1991
Java
IoT2030
![Page 32: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/32.jpg)
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.
![Page 33: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/33.jpg)
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.
![Page 34: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/34.jpg)
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)
![Page 35: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/35.jpg)
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
![Page 36: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/36.jpg)
L'architetturaParadigma Sistemistico Paradigma linguistico
Un'architettura a microservizi è una rete di containers
Un'architettura a microservizi è una composizione di microservizi
![Page 37: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/37.jpg)
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
![Page 38: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/38.jpg)
Containers
Paradigma Sistemistico Paradigma Linguistico
Il container è solamente uno strumento che per l'esecuzione
Il Container è l'elemento chiave dell'archtettura
![Page 39: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/39.jpg)
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
![Page 40: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/40.jpg)
La rivoluzione dei microservizi
Paradigma Linguistico
La rivoluzione si trova nell'intersezione tra questi due mondi
Paradigma sistemistico
![Page 41: La rivoluzione dei Microservizi](https://reader034.vdocuments.pub/reader034/viewer/2022051404/58849adb1a28ab26058b6485/html5/thumbnails/41.jpg)
Un sistema software complesso non è mai un'entità statica ma è soggetto a continue modifiche per potersi adattare agli stimoli
esterni... come il pensiero umano