SlideShare a Scribd company logo
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Microservizi
scenari del prossimo e del lontano futuro
1
Saverio Giallorenzo
saverio.giallorenzo@gmail.com | DISI at Unibo | San Francisco | September Microservices Meetup
Buon Pomeriggio
2
Saverio
Post-doc presso il
Dipartimento di Informatica -
Scienza e Ingegneria
dell’Università di Bologna.
Tematiche di ricerca:
- Programmazione concorrente
e distribuita;
- Coreografie, Tipi Sessione e
Algebre di Processi.
- Microservizi;
- Jolie;
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Microservizi
scenari del prossimo e del lontano futuro
3
Saverio Giallorenzo
WARNING
MAY CONTAIN
CHOREOGRAPHIES
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
I Limiti di oggi
4
There is no effort
without error and
shortcoming.
“Citizenship in a Republic”, Theodore Roosevelt, 1910
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
I Limiti di oggi
4
There is no effort
without error and
shortcoming.
innovation
“Citizenship in a Republic”, Theodore Roosevelt, 1910
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Programmazione distribuita
5
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Vendite Magazzino Spedizioni
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Programmazione distribuita
5
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Cosa c’è qua dentro (e.g., error tracing)?
Vendite Magazzino Spedizioni
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Programmazione distribuita
5
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Cosa c’è qua dentro (e.g., error tracing)?
Funzionalità
interna?
O del
corriere?
Docs/APIs?
Vendite Magazzino Spedizioni
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Programmazione distribuita
5
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Cosa c’è qua dentro (e.g., error tracing)?
Funzionalità
interna?
O del
corriere?
Docs/APIs?
Vendite Magazzino Spedizioni
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Programmazione distribuita
5
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Cosa c’è qua dentro (e.g., error tracing)?
Funzionalità
interna?
O del
corriere?
Docs/APIs?
In serie o
parallelo?
Vendite Magazzino Spedizioni
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Non è un mio problema”
6
Direzione
Vendite
MagazzinoSpedizioni
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Non è un mio problema”
6
Direzione
Vendite
MagazzinoSpedizioni
Big Picture
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Non è un mio problema”
6
Direzione
Vendite
MagazzinoSpedizioni
Big Picture
Golfo dell’
esecuzione
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Non è un mio problema”
6
Direzione
Vendite
MagazzinoSpedizioni
Big Picture
Micro-gestione
Golfo dell’
esecuzione
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Non è un mio problema”
6
Direzione
Vendite
MagazzinoSpedizioni
Big Picture
Micro-gestione
Golfo dell’
esecuzione
Coordinamento?
Responsabilità?
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Non è un mio problema”
6
Direzione
Vendite
MagazzinoSpedizioni
Big Picture
Micro-gestione
Golfo dell’
esecuzione
Golfo della
Valutazione
Coordinamento?
Responsabilità?
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Non è un mio problema”
6
Direzione
Vendite
MagazzinoSpedizioni
Big Picture
Micro-gestione
Golfo dell’
esecuzione
Golfo della
Valutazione
Coordinamento?
Responsabilità?
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Architetture scalabili
7
Vendite Magazzino Spedizioni
Web

Server
CRM
Gestore

Ordini
Gestione

Materiale
Gestione

Ordini
Gestione

Spedizioni
Tracking

Spedizioni
Web

Server
Web

Server
Gestore

Ordini
Gestione

Ordini
Gestione

Ordini
Gestione

Ordini
preventivo
tracking
?
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Architetture scalabili
7
Vendite Magazzino Spedizioni
Web

Server
CRM
Gestore

Ordini
Gestione

Materiale
Gestione

Ordini
Gestione

Spedizioni
Tracking

Spedizioni
Web

Server
Web

Server
Gestore

Ordini
Gestione

Ordini
Gestione

Ordini
Gestione

Ordini
preventivo
tracking
?
=
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Architetture scalabili
7
Vendite Magazzino Spedizioni
Web

Server
CRM
Gestore

Ordini
Gestione

Materiale
Gestione

Ordini
Gestione

Spedizioni
Tracking

Spedizioni
Web

Server
Web

Server
Gestore

Ordini
Gestione

Ordini
Gestione

Ordini
Gestione

Ordini
preventivo
tracking
?
ricollegare le frecce
ad ogni “scalata”
=
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Architetture scalabili
7
Vendite Magazzino Spedizioni
Web

Server
CRM
Gestore

Ordini
Gestione

Materiale
Gestione

Ordini
Gestione

Spedizioni
Tracking

Spedizioni
Web

Server
Web

Server
Gestore

Ordini
Gestione

Ordini
Gestione

Ordini
Gestione

Ordini
preventivo
tracking
?
ricollegare le frecce
ad ogni “scalata”
=
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Architetture scalabili
7
Vendite Magazzino Spedizioni
Web

Server
CRM
Gestore

Ordini
Gestione

Materiale
Gestione

Ordini
Gestione

Spedizioni
Tracking

Spedizioni
Web

Server
Web

Server
Gestore

Ordini
Gestione

Ordini
Gestione

Ordini
Gestione

Ordini
preventivo
tracking
?
ricollegare le frecce
ad ogni “scalata”
=
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Uno sguardo al futuro
Programmazione Coreografica
8
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Enter AIOCJ
9
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Vendite Magazzino Spedizioni
ordine@Cliente = getInput( "Inserire richiesta prodotti" );
richiesta_prev: Cliente( ordine ) -> Vendite( ordine );
conferma_disp: Vendite( ordine ) -> Magazzino( materiale )
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Visione Architetturale
10
ordine@Cliente = getInput( "Inserire richiesta prodotti" );
richiesta_prev: Cliente( ordine ) -> Vendite( ordine );
conferma_disp: Vendite( ordine ) -> Magazzino( materiale )
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Visione Architetturale
10
Client Vendite SpedizioniMagazzino
ordine@Cliente = getInput( "Inserire richiesta prodotti" );
richiesta_prev: Cliente( ordine ) -> Vendite( ordine );
conferma_disp: Vendite( ordine ) -> Magazzino( materiale )
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Visione Architetturale
10
Client Vendite SpedizioniMagazzino
ordine@Cliente = getInput( "Inserire richiesta prodotti" );
richiesta_prev: Cliente( ordine ) -> Vendite( ordine );
conferma_disp: Vendite( ordine ) -> Magazzino( materiale )
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 11
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Vendite Magazzino Spedizioni
include controlloDisp from “socket://magazzino:8000"
ordine@Cliente = getInput( "Inserire richiesta prodotti" );
richiesta_prev: Cliente( ordine ) -> Vendite( ordine );
conferma_disp: Vendite( ordine ) -> Magazzino( materiale );
disp@Magazzino = controlloDisp( materiale )
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 11
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Vendite Magazzino Spedizioni
include controlloDisp from “socket://magazzino:8000"
ordine@Cliente = getInput( "Inserire richiesta prodotti" );
richiesta_prev: Cliente( ordine ) -> Vendite( ordine );
conferma_disp: Vendite( ordine ) -> Magazzino( materiale );
disp@Magazzino = controlloDisp( materiale )
Cosa c’è qua dentro
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 11
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Vendite Magazzino Spedizioni
include controlloDisp from “socket://magazzino:8000"
ordine@Cliente = getInput( "Inserire richiesta prodotti" );
richiesta_prev: Cliente( ordine ) -> Vendite( ordine );
conferma_disp: Vendite( ordine ) -> Magazzino( materiale );
disp@Magazzino = controlloDisp( materiale )
Cosa c’è qua dentro
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 11
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Vendite Magazzino Spedizioni
include controlloDisp from “socket://magazzino:8000"
ordine@Cliente = getInput( "Inserire richiesta prodotti" );
richiesta_prev: Cliente( ordine ) -> Vendite( ordine );
conferma_disp: Vendite( ordine ) -> Magazzino( materiale );
disp@Magazzino = controlloDisp( materiale )
Cosa c’è qua dentro
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 11
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Vendite Magazzino Spedizioni
include controlloDisp from “socket://magazzino:8000"
ordine@Cliente = getInput( "Inserire richiesta prodotti" );
richiesta_prev: Cliente( ordine ) -> Vendite( ordine );
conferma_disp: Vendite( ordine ) -> Magazzino( materiale );
disp@Magazzino = controlloDisp( materiale )
Cosa c’è qua dentro
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Visione Architetturale
12
Vendite Magazzino Spedizioni
Web

Server
CRM
Gestore

Ordini
Gestione

Materiale
Gestione

Ordini
Gestione

Spedizioni
Tracking

Spedizioni
Client Vendite SpedizioniMagazzinoCliente
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Visione Architetturale
12
Vendite Magazzino Spedizioni
Web

Server
CRM
Gestore

Ordini
Gestione

Materiale
Gestione

Ordini
Gestione

Spedizioni
Tracking

Spedizioni
Client Vendite SpedizioniMagazzino
Funzione controlloDisp
Cliente
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 13
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Vendite Magazzino Spedizioni
include controlloDisp from “socket://magazzino:8000”
include calcPreventivo from “socket://vendite:8001"
ordine@Cliente = getInput( "Inserire richiesta prodotti" );
richiesta_prev: Cliente( ordine ) -> Vendite( ordine );
conferma_disp: Vendite( ordine ) -> Magazzino( materiale );
disp@Magazzino = controlloDisp( materiale );
if ( disp )@Magazzino {
preventivo@Vendite = calcPreventivo( ordine );
invio_prev: Vendite( preventivo ) -> Cliente( preventivo );
…
} else {
prodotto_non_disp: Vendite() -> Cliente()
}
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 13
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Vendite Magazzino Spedizioni
include controlloDisp from “socket://magazzino:8000”
include calcPreventivo from “socket://vendite:8001"
ordine@Cliente = getInput( "Inserire richiesta prodotti" );
richiesta_prev: Cliente( ordine ) -> Vendite( ordine );
conferma_disp: Vendite( ordine ) -> Magazzino( materiale );
disp@Magazzino = controlloDisp( materiale );
if ( disp )@Magazzino {
preventivo@Vendite = calcPreventivo( ordine );
invio_prev: Vendite( preventivo ) -> Cliente( preventivo );
…
} else {
prodotto_non_disp: Vendite() -> Cliente()
}
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 13
Vendite Magazzino Spedizioni
richiesta
preventivo
conferma
disponibilità
opt
invio
preventivo
prodotti non
disponibili
opt
approvazione
preventivo
annullamento
preventivo
inoltro ordine
invio ordine
invio tracking code
conferma ricezione
conferma
consegna
Vendite Magazzino Spedizioni
include controlloDisp from “socket://magazzino:8000”
include calcPreventivo from “socket://vendite:8001"
ordine@Cliente = getInput( "Inserire richiesta prodotti" );
richiesta_prev: Cliente( ordine ) -> Vendite( ordine );
conferma_disp: Vendite( ordine ) -> Magazzino( materiale );
disp@Magazzino = controlloDisp( materiale );
if ( disp )@Magazzino {
preventivo@Vendite = calcPreventivo( ordine );
invio_prev: Vendite( preventivo ) -> Cliente( preventivo );
…
} else {
prodotto_non_disp: Vendite() -> Cliente()
}
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix
14
Why not peer to peer
choreography?
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix
We found it was harder to scale with
growing business needs and
complexities.
Some of the issues associated with
the approach are:
14
Why not peer to peer
choreography?
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix
We found it was harder to scale with
growing business needs and
complexities.
Some of the issues associated with
the approach are:
Process flows are “embedded”
within the code of multiple
application.
14
Why not peer to peer
choreography?
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix
We found it was harder to scale with
growing business needs and
complexities.
Some of the issues associated with
the approach are:
Process flows are “embedded”
within the code of multiple
application.
Often, there is tight coupling and
assumptions around input/output,
SLAs etc, making it harder to adapt
to changing needs.
14
Why not peer to peer
choreography?
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix (cont’d)
15
Why not peer to peer
choreography?
We found it was harder to scale with
growing business needs and
complexities.
Some of the issues associated with
the approach are:
Process flows are “embedded”
within the code of multiple
application.
Often, there is tight coupling and
assumptions around input/output,
SLAs etc, making it harder to adapt
to changing needs.
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix (cont’d)
15
Why not peer to peer
choreography? Vero se si lascia il dominio delle
coreografie. Facendo un
parallelo, sarebbe come scrivere
in C e cercare di modificare il
codice assembly compilato.
We found it was harder to scale with
growing business needs and
complexities.
Some of the issues associated with
the approach are:
Process flows are “embedded”
within the code of multiple
application.
Often, there is tight coupling and
assumptions around input/output,
SLAs etc, making it harder to adapt
to changing needs.
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix (cont’d)
15
Why not peer to peer
choreography? Vero se si lascia il dominio delle
coreografie. Facendo un
parallelo, sarebbe come scrivere
in C e cercare di modificare il
codice assembly compilato.
Vero il contrario. Le coreografie
aiutano a rendere chiare le
funzioni (I/Os).
We found it was harder to scale with
growing business needs and
complexities.
Some of the issues associated with
the approach are:
Process flows are “embedded”
within the code of multiple
application.
Often, there is tight coupling and
assumptions around input/output,
SLAs etc, making it harder to adapt
to changing needs.
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix (cont’d)
15
Why not peer to peer
choreography? Vero se si lascia il dominio delle
coreografie. Facendo un
parallelo, sarebbe come scrivere
in C e cercare di modificare il
codice assembly compilato.
Vero il contrario. Le coreografie
aiutano a rendere chiare le
funzioni (I/Os).
Le coreografie scritte in AIOCJ
si possono adattare a runtime!
We found it was harder to scale with
growing business needs and
complexities.
Some of the issues associated with
the approach are:
Process flows are “embedded”
within the code of multiple
application.
Often, there is tight coupling and
assumptions around input/output,
SLAs etc, making it harder to adapt
to changing needs.
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix (cont’d)
15
Why not peer to peer
choreography? Vero se si lascia il dominio delle
coreografie. Facendo un
parallelo, sarebbe come scrivere
in C e cercare di modificare il
codice assembly compilato.
Vero il contrario. Le coreografie
aiutano a rendere chiare le
funzioni (I/Os).
Le coreografie scritte in AIOCJ
si possono adattare a runtime!
We found it was harder to scale with
growing business needs and
complexities.
Some of the issues associated with
the approach are:
Process flows are “embedded”
within the code of multiple
application.
Often, there is tight coupling and
assumptions around input/output,
SLAs etc, making it harder to adapt
to changing needs.
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Visione Architetturale (Part II)
16
Vendite Magazzino Spedizioni
Web

Server
CRM
Gestore

Ordini
Gestione

Materiale
Gestione

Ordini
Gestione

Spedizioni
Tracking

Spedizioni
Client Vendite SpedizioniMagazzinoCliente
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 17
Vendite Magazzino Spedizioni
Web

Server
CRM
Gestore

Ordini
Gestione

Materiale
Gestione

Ordini
Gestione

Spedizioni
Tracking

Spedizioni
Cliente Vendite SpedizioniMagazzino
Web

Server
Web

Server
Gestore

Ordini
Gestore

Ordini
Load
Balancer
Circuit
Breaker
Web

Gateway
Visione Architetturale (Part III)
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 18
There is no effort
without error and
shortcoming.
innovation
“Citizenship in a Republic”, Theodore Roosevelt, 1910
I Limiti di Oggi
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 18
There is no effort
without error and
shortcoming.
innovation
“Citizenship in a Republic”, Theodore Roosevelt, 1910
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 18
There is no effort
without error and
shortcoming.
innovation
“Citizenship in a Republic”, Theodore Roosevelt, 1910
Lo Standard di
Domani
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 18
There is no effort
without error and
shortcoming.
innovation
“Citizenship in a Republic”, Theodore Roosevelt, 1910
Lo Standard di
Domani
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
La programmazione
distribuita è (più) semplice;
18
There is no effort
without error and
shortcoming.
innovation
“Citizenship in a Republic”, Theodore Roosevelt, 1910
Lo Standard di
Domani
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
La programmazione
distribuita è (più) semplice;
Responsabilità e APIs
formali;
18
There is no effort
without error and
shortcoming.
innovation
“Citizenship in a Republic”, Theodore Roosevelt, 1910
Lo Standard di
Domani
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
La programmazione
distribuita è (più) semplice;
Responsabilità e APIs
formali;
Architetture scalabili e
affidabili.
18
There is no effort
without error and
shortcoming.
innovation
“Citizenship in a Republic”, Theodore Roosevelt, 1910
Lo Standard di
Domani
saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016
Grazie dell’Attenzione
19
Domande: Saverio( ? ) -> MoM2016( ! )

More Related Content

Viewers also liked

Communicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScriptCommunicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScript
Max Klymyshyn
 
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in PythonPiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
Max Klymyshyn
 
Introduzione ai Microservices
Introduzione ai MicroservicesIntroduzione ai Microservices
Introduzione ai Microservices
Daniele Mondello
 
Embedding Java code in a Jolie Service
Embedding Java code in a Jolie ServiceEmbedding Java code in a Jolie Service
Embedding Java code in a Jolie Service
JolieLang
 
Running Javascript as a microservice inside of Jolie
Running Javascript as a microservice inside of JolieRunning Javascript as a microservice inside of Jolie
Running Javascript as a microservice inside of Jolie
JolieLang
 
IoT and Microservice
IoT and MicroserviceIoT and Microservice
IoT and Microservice
kgshukla
 
Vision of a microservice revolution
Vision of a microservice revolutionVision of a microservice revolution
Vision of a microservice revolution
JolieLang
 
Symfony in microservice architecture
Symfony in microservice architectureSymfony in microservice architecture
Symfony in microservice architecture
Daniele D'Angeli
 
SOA with PHP and Symfony
SOA with PHP and SymfonySOA with PHP and Symfony
SOA with PHP and Symfony
MichalSchroeder
 
Microservice Architecture JavaCro 2015
Microservice Architecture JavaCro 2015Microservice Architecture JavaCro 2015
Microservice Architecture JavaCro 2015
Nenad Pecanac
 

Viewers also liked (10)

Communicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScriptCommunicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScript
 
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in PythonPiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
 
Introduzione ai Microservices
Introduzione ai MicroservicesIntroduzione ai Microservices
Introduzione ai Microservices
 
Embedding Java code in a Jolie Service
Embedding Java code in a Jolie ServiceEmbedding Java code in a Jolie Service
Embedding Java code in a Jolie Service
 
Running Javascript as a microservice inside of Jolie
Running Javascript as a microservice inside of JolieRunning Javascript as a microservice inside of Jolie
Running Javascript as a microservice inside of Jolie
 
IoT and Microservice
IoT and MicroserviceIoT and Microservice
IoT and Microservice
 
Vision of a microservice revolution
Vision of a microservice revolutionVision of a microservice revolution
Vision of a microservice revolution
 
Symfony in microservice architecture
Symfony in microservice architectureSymfony in microservice architecture
Symfony in microservice architecture
 
SOA with PHP and Symfony
SOA with PHP and SymfonySOA with PHP and Symfony
SOA with PHP and Symfony
 
Microservice Architecture JavaCro 2015
Microservice Architecture JavaCro 2015Microservice Architecture JavaCro 2015
Microservice Architecture JavaCro 2015
 

Similar to Microservizi, scenari del prossimo e del lontano futuro

Startuparty 220911 Slideshow
Startuparty 220911 SlideshowStartuparty 220911 Slideshow
Startuparty 220911 Slideshowstartuparty
 
Slide sulla Digitalizzazione dei Processi al DigEat 2016
Slide sulla Digitalizzazione dei Processi al DigEat 2016Slide sulla Digitalizzazione dei Processi al DigEat 2016
Slide sulla Digitalizzazione dei Processi al DigEat 2016
SAVINO SOLUTION - METODO SAVINO®
 
QUI+ creative content delivery | italian partners for beacon solutions
QUI+ creative content delivery | italian partners for beacon solutionsQUI+ creative content delivery | italian partners for beacon solutions
QUI+ creative content delivery | italian partners for beacon solutions
Roberto Cobianchi
 
Reti sociali e dinamiche di collaborazione nelle PMI toscane: processi, model...
Reti sociali e dinamiche di collaborazione nelle PMI toscane: processi, model...Reti sociali e dinamiche di collaborazione nelle PMI toscane: processi, model...
Reti sociali e dinamiche di collaborazione nelle PMI toscane: processi, model...
materiamedia
 
SIMCO: Lean Warehousing - Come migliorare le prestazioni eliminando gli sprechi
SIMCO: Lean Warehousing - Come migliorare le prestazioni eliminando gli sprechiSIMCO: Lean Warehousing - Come migliorare le prestazioni eliminando gli sprechi
SIMCO: Lean Warehousing - Come migliorare le prestazioni eliminando gli sprechi
Simco Consulting
 
Lean Warehousing. come migliorare le prestazioni eliminado gli sprechi
Lean Warehousing. come migliorare le prestazioni eliminado gli sprechiLean Warehousing. come migliorare le prestazioni eliminado gli sprechi
Lean Warehousing. come migliorare le prestazioni eliminado gli sprechi
logisticaefficiente
 
09 stain proj link
09 stain proj link09 stain proj link
09 stain proj link
Andrea Colombetti
 
Ideare un app e farla fruttare: quanti modi? Quale scegliere?
Ideare un app e farla fruttare: quanti modi? Quale scegliere?Ideare un app e farla fruttare: quanti modi? Quale scegliere?
Ideare un app e farla fruttare: quanti modi? Quale scegliere?
Diego La Monica
 
Museo Opera Duomo Firenze: 720 anni di storia in una App Mobile in continua e...
Museo Opera Duomo Firenze: 720 anni di storia in una App Mobile in continua e...Museo Opera Duomo Firenze: 720 anni di storia in una App Mobile in continua e...
Museo Opera Duomo Firenze: 720 anni di storia in una App Mobile in continua e...
Matteo Papadopoulos
 
CSCMP Italy Roundtable: Gruppi di Lavoro
CSCMP Italy Roundtable: Gruppi di LavoroCSCMP Italy Roundtable: Gruppi di Lavoro
CSCMP Italy Roundtable: Gruppi di Lavoro
Igino Colella
 
Seminario blockchain Carrara (1 giugno 2018)
Seminario blockchain Carrara (1 giugno 2018)Seminario blockchain Carrara (1 giugno 2018)
Seminario blockchain Carrara (1 giugno 2018)
Giancarlo Fornei
 
Progettazione web: 5 punti strategici
per valutare professionalità e qualità ...
Progettazione web: 5 punti strategici
per valutare professionalità e qualità ...Progettazione web: 5 punti strategici
per valutare professionalità e qualità ...
Progettazione web: 5 punti strategici
per valutare professionalità e qualità ...
Fabrizio Caccavello
 
8. Web design
8. Web design8. Web design
8. Web design
Roberto Polillo
 
Applicare concretamente la metodologia Lean per ridurre le scorte senza impat...
Applicare concretamente la metodologia Lean per ridurre le scorte senza impat...Applicare concretamente la metodologia Lean per ridurre le scorte senza impat...
Applicare concretamente la metodologia Lean per ridurre le scorte senza impat...
Advance Operations Management School srl
 
Martina Mantoan - Digitalizzare un’attività locale - Rinascita Digitale | DAY...
Martina Mantoan - Digitalizzare un’attività locale - Rinascita Digitale | DAY...Martina Mantoan - Digitalizzare un’attività locale - Rinascita Digitale | DAY...
Martina Mantoan - Digitalizzare un’attività locale - Rinascita Digitale | DAY...
Stefano Saladino
 
Workshop Lean Innovation - Customer Development
Workshop Lean Innovation - Customer DevelopmentWorkshop Lean Innovation - Customer Development
Workshop Lean Innovation - Customer Development
Mirko Maiorano
 
Pitch WCAP 2015
Pitch WCAP 2015Pitch WCAP 2015
Pitch WCAP 2015
Alessandro Chelli
 
Tracciamento conversioni Analytics & CRO Seocms2016 Bologna Gianpaolo Lorusso
Tracciamento conversioni Analytics & CRO Seocms2016 Bologna Gianpaolo LorussoTracciamento conversioni Analytics & CRO Seocms2016 Bologna Gianpaolo Lorusso
Tracciamento conversioni Analytics & CRO Seocms2016 Bologna Gianpaolo Lorusso
Gianpaolo Lorusso
 
Mobile learning Bologna - Tra html 5 e applicazioni native.
Mobile learning Bologna - Tra html 5 e applicazioni native.Mobile learning Bologna - Tra html 5 e applicazioni native.
Mobile learning Bologna - Tra html 5 e applicazioni native.
Fabrizio Caccavello
 

Similar to Microservizi, scenari del prossimo e del lontano futuro (19)

Startuparty 220911 Slideshow
Startuparty 220911 SlideshowStartuparty 220911 Slideshow
Startuparty 220911 Slideshow
 
Slide sulla Digitalizzazione dei Processi al DigEat 2016
Slide sulla Digitalizzazione dei Processi al DigEat 2016Slide sulla Digitalizzazione dei Processi al DigEat 2016
Slide sulla Digitalizzazione dei Processi al DigEat 2016
 
QUI+ creative content delivery | italian partners for beacon solutions
QUI+ creative content delivery | italian partners for beacon solutionsQUI+ creative content delivery | italian partners for beacon solutions
QUI+ creative content delivery | italian partners for beacon solutions
 
Reti sociali e dinamiche di collaborazione nelle PMI toscane: processi, model...
Reti sociali e dinamiche di collaborazione nelle PMI toscane: processi, model...Reti sociali e dinamiche di collaborazione nelle PMI toscane: processi, model...
Reti sociali e dinamiche di collaborazione nelle PMI toscane: processi, model...
 
SIMCO: Lean Warehousing - Come migliorare le prestazioni eliminando gli sprechi
SIMCO: Lean Warehousing - Come migliorare le prestazioni eliminando gli sprechiSIMCO: Lean Warehousing - Come migliorare le prestazioni eliminando gli sprechi
SIMCO: Lean Warehousing - Come migliorare le prestazioni eliminando gli sprechi
 
Lean Warehousing. come migliorare le prestazioni eliminado gli sprechi
Lean Warehousing. come migliorare le prestazioni eliminado gli sprechiLean Warehousing. come migliorare le prestazioni eliminado gli sprechi
Lean Warehousing. come migliorare le prestazioni eliminado gli sprechi
 
09 stain proj link
09 stain proj link09 stain proj link
09 stain proj link
 
Ideare un app e farla fruttare: quanti modi? Quale scegliere?
Ideare un app e farla fruttare: quanti modi? Quale scegliere?Ideare un app e farla fruttare: quanti modi? Quale scegliere?
Ideare un app e farla fruttare: quanti modi? Quale scegliere?
 
Museo Opera Duomo Firenze: 720 anni di storia in una App Mobile in continua e...
Museo Opera Duomo Firenze: 720 anni di storia in una App Mobile in continua e...Museo Opera Duomo Firenze: 720 anni di storia in una App Mobile in continua e...
Museo Opera Duomo Firenze: 720 anni di storia in una App Mobile in continua e...
 
CSCMP Italy Roundtable: Gruppi di Lavoro
CSCMP Italy Roundtable: Gruppi di LavoroCSCMP Italy Roundtable: Gruppi di Lavoro
CSCMP Italy Roundtable: Gruppi di Lavoro
 
Seminario blockchain Carrara (1 giugno 2018)
Seminario blockchain Carrara (1 giugno 2018)Seminario blockchain Carrara (1 giugno 2018)
Seminario blockchain Carrara (1 giugno 2018)
 
Progettazione web: 5 punti strategici
per valutare professionalità e qualità ...
Progettazione web: 5 punti strategici
per valutare professionalità e qualità ...Progettazione web: 5 punti strategici
per valutare professionalità e qualità ...
Progettazione web: 5 punti strategici
per valutare professionalità e qualità ...
 
8. Web design
8. Web design8. Web design
8. Web design
 
Applicare concretamente la metodologia Lean per ridurre le scorte senza impat...
Applicare concretamente la metodologia Lean per ridurre le scorte senza impat...Applicare concretamente la metodologia Lean per ridurre le scorte senza impat...
Applicare concretamente la metodologia Lean per ridurre le scorte senza impat...
 
Martina Mantoan - Digitalizzare un’attività locale - Rinascita Digitale | DAY...
Martina Mantoan - Digitalizzare un’attività locale - Rinascita Digitale | DAY...Martina Mantoan - Digitalizzare un’attività locale - Rinascita Digitale | DAY...
Martina Mantoan - Digitalizzare un’attività locale - Rinascita Digitale | DAY...
 
Workshop Lean Innovation - Customer Development
Workshop Lean Innovation - Customer DevelopmentWorkshop Lean Innovation - Customer Development
Workshop Lean Innovation - Customer Development
 
Pitch WCAP 2015
Pitch WCAP 2015Pitch WCAP 2015
Pitch WCAP 2015
 
Tracciamento conversioni Analytics & CRO Seocms2016 Bologna Gianpaolo Lorusso
Tracciamento conversioni Analytics & CRO Seocms2016 Bologna Gianpaolo LorussoTracciamento conversioni Analytics & CRO Seocms2016 Bologna Gianpaolo Lorusso
Tracciamento conversioni Analytics & CRO Seocms2016 Bologna Gianpaolo Lorusso
 
Mobile learning Bologna - Tra html 5 e applicazioni native.
Mobile learning Bologna - Tra html 5 e applicazioni native.Mobile learning Bologna - Tra html 5 e applicazioni native.
Mobile learning Bologna - Tra html 5 e applicazioni native.
 

Microservizi, scenari del prossimo e del lontano futuro

  • 1. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Microservizi scenari del prossimo e del lontano futuro 1 Saverio Giallorenzo
  • 2. saverio.giallorenzo@gmail.com | DISI at Unibo | San Francisco | September Microservices Meetup Buon Pomeriggio 2 Saverio Post-doc presso il Dipartimento di Informatica - Scienza e Ingegneria dell’Università di Bologna. Tematiche di ricerca: - Programmazione concorrente e distribuita; - Coreografie, Tipi Sessione e Algebre di Processi. - Microservizi; - Jolie;
  • 3. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Microservizi scenari del prossimo e del lontano futuro 3 Saverio Giallorenzo WARNING MAY CONTAIN CHOREOGRAPHIES
  • 4. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 I Limiti di oggi 4 There is no effort without error and shortcoming. “Citizenship in a Republic”, Theodore Roosevelt, 1910
  • 5. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 I Limiti di oggi 4 There is no effort without error and shortcoming. innovation “Citizenship in a Republic”, Theodore Roosevelt, 1910
  • 6. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Programmazione distribuita 5 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Vendite Magazzino Spedizioni
  • 7. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Programmazione distribuita 5 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Cosa c’è qua dentro (e.g., error tracing)? Vendite Magazzino Spedizioni
  • 8. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Programmazione distribuita 5 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Cosa c’è qua dentro (e.g., error tracing)? Funzionalità interna? O del corriere? Docs/APIs? Vendite Magazzino Spedizioni
  • 9. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Programmazione distribuita 5 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Cosa c’è qua dentro (e.g., error tracing)? Funzionalità interna? O del corriere? Docs/APIs? Vendite Magazzino Spedizioni
  • 10. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Programmazione distribuita 5 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Cosa c’è qua dentro (e.g., error tracing)? Funzionalità interna? O del corriere? Docs/APIs? In serie o parallelo? Vendite Magazzino Spedizioni
  • 11. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 “Non è un mio problema” 6 Direzione Vendite MagazzinoSpedizioni
  • 12. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 “Non è un mio problema” 6 Direzione Vendite MagazzinoSpedizioni Big Picture
  • 13. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 “Non è un mio problema” 6 Direzione Vendite MagazzinoSpedizioni Big Picture Golfo dell’ esecuzione
  • 14. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 “Non è un mio problema” 6 Direzione Vendite MagazzinoSpedizioni Big Picture Micro-gestione Golfo dell’ esecuzione
  • 15. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 “Non è un mio problema” 6 Direzione Vendite MagazzinoSpedizioni Big Picture Micro-gestione Golfo dell’ esecuzione Coordinamento? Responsabilità?
  • 16. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 “Non è un mio problema” 6 Direzione Vendite MagazzinoSpedizioni Big Picture Micro-gestione Golfo dell’ esecuzione Golfo della Valutazione Coordinamento? Responsabilità?
  • 17. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 “Non è un mio problema” 6 Direzione Vendite MagazzinoSpedizioni Big Picture Micro-gestione Golfo dell’ esecuzione Golfo della Valutazione Coordinamento? Responsabilità?
  • 18. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Architetture scalabili 7 Vendite Magazzino Spedizioni Web Server CRM Gestore Ordini Gestione Materiale Gestione Ordini Gestione Spedizioni Tracking Spedizioni Web Server Web Server Gestore Ordini Gestione Ordini Gestione Ordini Gestione Ordini preventivo tracking ?
  • 19. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Architetture scalabili 7 Vendite Magazzino Spedizioni Web Server CRM Gestore Ordini Gestione Materiale Gestione Ordini Gestione Spedizioni Tracking Spedizioni Web Server Web Server Gestore Ordini Gestione Ordini Gestione Ordini Gestione Ordini preventivo tracking ? =
  • 20. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Architetture scalabili 7 Vendite Magazzino Spedizioni Web Server CRM Gestore Ordini Gestione Materiale Gestione Ordini Gestione Spedizioni Tracking Spedizioni Web Server Web Server Gestore Ordini Gestione Ordini Gestione Ordini Gestione Ordini preventivo tracking ? ricollegare le frecce ad ogni “scalata” =
  • 21. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Architetture scalabili 7 Vendite Magazzino Spedizioni Web Server CRM Gestore Ordini Gestione Materiale Gestione Ordini Gestione Spedizioni Tracking Spedizioni Web Server Web Server Gestore Ordini Gestione Ordini Gestione Ordini Gestione Ordini preventivo tracking ? ricollegare le frecce ad ogni “scalata” =
  • 22. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Architetture scalabili 7 Vendite Magazzino Spedizioni Web Server CRM Gestore Ordini Gestione Materiale Gestione Ordini Gestione Spedizioni Tracking Spedizioni Web Server Web Server Gestore Ordini Gestione Ordini Gestione Ordini Gestione Ordini preventivo tracking ? ricollegare le frecce ad ogni “scalata” =
  • 23. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Uno sguardo al futuro Programmazione Coreografica 8
  • 24. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Enter AIOCJ 9 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Vendite Magazzino Spedizioni ordine@Cliente = getInput( "Inserire richiesta prodotti" ); richiesta_prev: Cliente( ordine ) -> Vendite( ordine ); conferma_disp: Vendite( ordine ) -> Magazzino( materiale )
  • 25. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Visione Architetturale 10 ordine@Cliente = getInput( "Inserire richiesta prodotti" ); richiesta_prev: Cliente( ordine ) -> Vendite( ordine ); conferma_disp: Vendite( ordine ) -> Magazzino( materiale )
  • 26. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Visione Architetturale 10 Client Vendite SpedizioniMagazzino ordine@Cliente = getInput( "Inserire richiesta prodotti" ); richiesta_prev: Cliente( ordine ) -> Vendite( ordine ); conferma_disp: Vendite( ordine ) -> Magazzino( materiale )
  • 27. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Visione Architetturale 10 Client Vendite SpedizioniMagazzino ordine@Cliente = getInput( "Inserire richiesta prodotti" ); richiesta_prev: Cliente( ordine ) -> Vendite( ordine ); conferma_disp: Vendite( ordine ) -> Magazzino( materiale )
  • 28. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 11 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Vendite Magazzino Spedizioni include controlloDisp from “socket://magazzino:8000" ordine@Cliente = getInput( "Inserire richiesta prodotti" ); richiesta_prev: Cliente( ordine ) -> Vendite( ordine ); conferma_disp: Vendite( ordine ) -> Magazzino( materiale ); disp@Magazzino = controlloDisp( materiale )
  • 29. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 11 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Vendite Magazzino Spedizioni include controlloDisp from “socket://magazzino:8000" ordine@Cliente = getInput( "Inserire richiesta prodotti" ); richiesta_prev: Cliente( ordine ) -> Vendite( ordine ); conferma_disp: Vendite( ordine ) -> Magazzino( materiale ); disp@Magazzino = controlloDisp( materiale ) Cosa c’è qua dentro
  • 30. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 11 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Vendite Magazzino Spedizioni include controlloDisp from “socket://magazzino:8000" ordine@Cliente = getInput( "Inserire richiesta prodotti" ); richiesta_prev: Cliente( ordine ) -> Vendite( ordine ); conferma_disp: Vendite( ordine ) -> Magazzino( materiale ); disp@Magazzino = controlloDisp( materiale ) Cosa c’è qua dentro
  • 31. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 11 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Vendite Magazzino Spedizioni include controlloDisp from “socket://magazzino:8000" ordine@Cliente = getInput( "Inserire richiesta prodotti" ); richiesta_prev: Cliente( ordine ) -> Vendite( ordine ); conferma_disp: Vendite( ordine ) -> Magazzino( materiale ); disp@Magazzino = controlloDisp( materiale ) Cosa c’è qua dentro
  • 32. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 11 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Vendite Magazzino Spedizioni include controlloDisp from “socket://magazzino:8000" ordine@Cliente = getInput( "Inserire richiesta prodotti" ); richiesta_prev: Cliente( ordine ) -> Vendite( ordine ); conferma_disp: Vendite( ordine ) -> Magazzino( materiale ); disp@Magazzino = controlloDisp( materiale ) Cosa c’è qua dentro
  • 33. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Visione Architetturale 12 Vendite Magazzino Spedizioni Web Server CRM Gestore Ordini Gestione Materiale Gestione Ordini Gestione Spedizioni Tracking Spedizioni Client Vendite SpedizioniMagazzinoCliente
  • 34. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Visione Architetturale 12 Vendite Magazzino Spedizioni Web Server CRM Gestore Ordini Gestione Materiale Gestione Ordini Gestione Spedizioni Tracking Spedizioni Client Vendite SpedizioniMagazzino Funzione controlloDisp Cliente
  • 35. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 13 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Vendite Magazzino Spedizioni include controlloDisp from “socket://magazzino:8000” include calcPreventivo from “socket://vendite:8001" ordine@Cliente = getInput( "Inserire richiesta prodotti" ); richiesta_prev: Cliente( ordine ) -> Vendite( ordine ); conferma_disp: Vendite( ordine ) -> Magazzino( materiale ); disp@Magazzino = controlloDisp( materiale ); if ( disp )@Magazzino { preventivo@Vendite = calcPreventivo( ordine ); invio_prev: Vendite( preventivo ) -> Cliente( preventivo ); … } else { prodotto_non_disp: Vendite() -> Cliente() }
  • 36. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 13 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Vendite Magazzino Spedizioni include controlloDisp from “socket://magazzino:8000” include calcPreventivo from “socket://vendite:8001" ordine@Cliente = getInput( "Inserire richiesta prodotti" ); richiesta_prev: Cliente( ordine ) -> Vendite( ordine ); conferma_disp: Vendite( ordine ) -> Magazzino( materiale ); disp@Magazzino = controlloDisp( materiale ); if ( disp )@Magazzino { preventivo@Vendite = calcPreventivo( ordine ); invio_prev: Vendite( preventivo ) -> Cliente( preventivo ); … } else { prodotto_non_disp: Vendite() -> Cliente() }
  • 37. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 13 Vendite Magazzino Spedizioni richiesta preventivo conferma disponibilità opt invio preventivo prodotti non disponibili opt approvazione preventivo annullamento preventivo inoltro ordine invio ordine invio tracking code conferma ricezione conferma consegna Vendite Magazzino Spedizioni include controlloDisp from “socket://magazzino:8000” include calcPreventivo from “socket://vendite:8001" ordine@Cliente = getInput( "Inserire richiesta prodotti" ); richiesta_prev: Cliente( ordine ) -> Vendite( ordine ); conferma_disp: Vendite( ordine ) -> Magazzino( materiale ); disp@Magazzino = controlloDisp( materiale ); if ( disp )@Magazzino { preventivo@Vendite = calcPreventivo( ordine ); invio_prev: Vendite( preventivo ) -> Cliente( preventivo ); … } else { prodotto_non_disp: Vendite() -> Cliente() }
  • 38. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Netflix 14 Why not peer to peer choreography?
  • 39. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Netflix We found it was harder to scale with growing business needs and complexities. Some of the issues associated with the approach are: 14 Why not peer to peer choreography?
  • 40. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Netflix We found it was harder to scale with growing business needs and complexities. Some of the issues associated with the approach are: Process flows are “embedded” within the code of multiple application. 14 Why not peer to peer choreography?
  • 41. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Netflix We found it was harder to scale with growing business needs and complexities. Some of the issues associated with the approach are: Process flows are “embedded” within the code of multiple application. Often, there is tight coupling and assumptions around input/output, SLAs etc, making it harder to adapt to changing needs. 14 Why not peer to peer choreography?
  • 42. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Netflix (cont’d) 15 Why not peer to peer choreography? We found it was harder to scale with growing business needs and complexities. Some of the issues associated with the approach are: Process flows are “embedded” within the code of multiple application. Often, there is tight coupling and assumptions around input/output, SLAs etc, making it harder to adapt to changing needs.
  • 43. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Netflix (cont’d) 15 Why not peer to peer choreography? Vero se si lascia il dominio delle coreografie. Facendo un parallelo, sarebbe come scrivere in C e cercare di modificare il codice assembly compilato. We found it was harder to scale with growing business needs and complexities. Some of the issues associated with the approach are: Process flows are “embedded” within the code of multiple application. Often, there is tight coupling and assumptions around input/output, SLAs etc, making it harder to adapt to changing needs.
  • 44. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Netflix (cont’d) 15 Why not peer to peer choreography? Vero se si lascia il dominio delle coreografie. Facendo un parallelo, sarebbe come scrivere in C e cercare di modificare il codice assembly compilato. Vero il contrario. Le coreografie aiutano a rendere chiare le funzioni (I/Os). We found it was harder to scale with growing business needs and complexities. Some of the issues associated with the approach are: Process flows are “embedded” within the code of multiple application. Often, there is tight coupling and assumptions around input/output, SLAs etc, making it harder to adapt to changing needs.
  • 45. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Netflix (cont’d) 15 Why not peer to peer choreography? Vero se si lascia il dominio delle coreografie. Facendo un parallelo, sarebbe come scrivere in C e cercare di modificare il codice assembly compilato. Vero il contrario. Le coreografie aiutano a rendere chiare le funzioni (I/Os). Le coreografie scritte in AIOCJ si possono adattare a runtime! We found it was harder to scale with growing business needs and complexities. Some of the issues associated with the approach are: Process flows are “embedded” within the code of multiple application. Often, there is tight coupling and assumptions around input/output, SLAs etc, making it harder to adapt to changing needs.
  • 46. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Netflix (cont’d) 15 Why not peer to peer choreography? Vero se si lascia il dominio delle coreografie. Facendo un parallelo, sarebbe come scrivere in C e cercare di modificare il codice assembly compilato. Vero il contrario. Le coreografie aiutano a rendere chiare le funzioni (I/Os). Le coreografie scritte in AIOCJ si possono adattare a runtime! We found it was harder to scale with growing business needs and complexities. Some of the issues associated with the approach are: Process flows are “embedded” within the code of multiple application. Often, there is tight coupling and assumptions around input/output, SLAs etc, making it harder to adapt to changing needs.
  • 47. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Visione Architetturale (Part II) 16 Vendite Magazzino Spedizioni Web Server CRM Gestore Ordini Gestione Materiale Gestione Ordini Gestione Spedizioni Tracking Spedizioni Client Vendite SpedizioniMagazzinoCliente
  • 48. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 17 Vendite Magazzino Spedizioni Web Server CRM Gestore Ordini Gestione Materiale Gestione Ordini Gestione Spedizioni Tracking Spedizioni Cliente Vendite SpedizioniMagazzino Web Server Web Server Gestore Ordini Gestore Ordini Load Balancer Circuit Breaker Web Gateway Visione Architetturale (Part III)
  • 49. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 18 There is no effort without error and shortcoming. innovation “Citizenship in a Republic”, Theodore Roosevelt, 1910 I Limiti di Oggi
  • 50. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 18 There is no effort without error and shortcoming. innovation “Citizenship in a Republic”, Theodore Roosevelt, 1910
  • 51. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 18 There is no effort without error and shortcoming. innovation “Citizenship in a Republic”, Theodore Roosevelt, 1910 Lo Standard di Domani
  • 52. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 18 There is no effort without error and shortcoming. innovation “Citizenship in a Republic”, Theodore Roosevelt, 1910 Lo Standard di Domani
  • 53. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 La programmazione distribuita è (più) semplice; 18 There is no effort without error and shortcoming. innovation “Citizenship in a Republic”, Theodore Roosevelt, 1910 Lo Standard di Domani
  • 54. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 La programmazione distribuita è (più) semplice; Responsabilità e APIs formali; 18 There is no effort without error and shortcoming. innovation “Citizenship in a Republic”, Theodore Roosevelt, 1910 Lo Standard di Domani
  • 55. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 La programmazione distribuita è (più) semplice; Responsabilità e APIs formali; Architetture scalabili e affidabili. 18 There is no effort without error and shortcoming. innovation “Citizenship in a Republic”, Theodore Roosevelt, 1910 Lo Standard di Domani
  • 56. saverio.giallorenzo@gmail.com | DISI at Unibo | Bologna | Meeting on Microservices 2016 Grazie dell’Attenzione 19 Domande: Saverio( ? ) -> MoM2016( ! )