microservices - saveriogiallorenzo.com€¦ · - choreographies, session - types and process...
TRANSCRIPT
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Microservices scenarios of the near and far future
1
Saverio Giallorenzo
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Howdy
2
Saverio
Post-doc at the Department ofComputer Science andEngineering of University ofBologna.
Research topics:- Concurrent and distributed
programming;- Choreographies, Session- Types and Process Algebras.- Microservices;- Jolie;
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016 3
Saverio Giallorenzo
WARNINGMAY CONTAIN
CHOREOGRAPHIES
Microservices scenarios of near and far future
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Today’s Limits
4
There is no effort without error and
shortcoming.“Citizenship in a Republic”, Theodore Roosevelt, 1910
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Today’s Limits
4
There is no effort without error and
shortcoming.
innovation
“Citizenship in a Republic”, Theodore Roosevelt, 1910
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
Distributed Programming5
Sales Storage Delivery
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
Distributed Programming5
What’s here inside (e.g., error tracing)?
Sales Storage Delivery
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
Distributed Programming5
What’s here inside (e.g., error tracing)?
Internal functionality?Does the deliverer provide it? Docs/APIs?
Sales Storage Delivery
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
Distributed Programming5
What’s here inside (e.g., error tracing)?
Internal functionality?Does the deliverer provide it? Docs/APIs?
Sales Storage Delivery
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
Distributed Programming5
What’s here inside (e.g., error tracing)?
Internal functionality?Does the deliverer provide it? Docs/APIs?
Sequential (in which order) or in parallel?
Sales Storage Delivery
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Not my problem”6
Direction
Sales
StorageDelivery
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Not my problem”6
Direction
Sales
StorageDelivery
Big Picture
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Not my problem”6
Direction
Sales
StorageDelivery
Big Picture
Gulf of execution
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Not my problem”6
Direction
Sales
StorageDelivery
Big Picture
Micro-management
Gulf of execution
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Not my problem”6
Direction
Sales
StorageDelivery
Big Picture
Micro-management
Gulf of execution
Coordination?Accountability?
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Not my problem”6
Direction
Sales
StorageDelivery
Big Picture
Micro-management
Gulf of execution Gulf of
Evaluation
Coordination?Accountability?
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
“Not my problem”6
Direction
Sales
StorageDelivery
Big Picture
Micro-management
Gulf of execution Gulf of
Evaluation
Coordination?Accountability?
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Scalable Architectures7
Sales Storage Delivery
WebServer
CRM
GestoreOrdini
HardwareManag.
GestioneOrdini
DeliveryManag.
Delivery Tracking
WebServer
WebServer
GestoreOrdiniOrder
Manag.
GestioneOrdiniOrder
Manag.
quote
tracking
?
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Scalable Architectures7
Sales Storage Delivery
WebServer
CRM
GestoreOrdini
HardwareManag.
GestioneOrdini
DeliveryManag.
Delivery Tracking
WebServer
WebServer
GestoreOrdiniOrder
Manag.
GestioneOrdiniOrder
Manag.
quote
tracking
?
=
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Scalable Architectures7
Sales Storage Delivery
WebServer
CRM
GestoreOrdini
HardwareManag.
GestioneOrdini
DeliveryManag.
Delivery Tracking
WebServer
WebServer
GestoreOrdiniOrder
Manag.
GestioneOrdiniOrder
Manag.
quote
tracking
?
rebind the arrowsat each “scaling”=
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Scalable Architectures7
Sales Storage Delivery
WebServer
CRM
GestoreOrdini
HardwareManag.
GestioneOrdini
DeliveryManag.
Delivery Tracking
WebServer
WebServer
GestoreOrdiniOrder
Manag.
GestioneOrdiniOrder
Manag.
quote
tracking
?
rebind the arrowsat each “scaling”=
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Scalable Architectures7
Sales Storage Delivery
WebServer
CRM
GestoreOrdini
HardwareManag.
GestioneOrdini
DeliveryManag.
Delivery Tracking
WebServer
WebServer
GestoreOrdiniOrder
Manag.
GestioneOrdiniOrder
Manag.
quote
tracking
?
rebind the arrowsat each “scaling”=
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
A look at the future Choreographic Programming
8
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
Enter AIOCJ
9
Sales Storage Delivery
order@Client = getInput( "Insert products" );
request_quote: Client( order ) -> Sales( order );
confirm_avail: Sales( order ) -> Storage( objects )
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Architectural Vision
10
order@Client = getInput( "Insert products" );
request_quote: Client( order ) -> Sales( order );
confirm_avail: Sales( order ) -> Storage( objects )
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Architectural Vision
10
Client Sales DeliveryStorage
order@Client = getInput( "Insert products" );
request_quote: Client( order ) -> Sales( order );
confirm_avail: Sales( order ) -> Storage( objects )
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Architectural Vision
10
Client Sales DeliveryStorage
order@Client = getInput( "Insert products" );
request_quote: Client( order ) -> Sales( order );
confirm_avail: Sales( order ) -> Storage( objects )
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
11
Sales Storage Delivery
include checkAvail from “socket://storage:8000"
order@Client = getInput( "Insert products" );
request_quote: Client( order ) -> Sales( order );
confirm_avail: Sales( order ) -> Storage( objects );
avail@Storage = checkAvail( objects )
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
11
Sales Storage Delivery
include checkAvail from “socket://storage:8000"
order@Client = getInput( "Insert products" );
request_quote: Client( order ) -> Sales( order );
confirm_avail: Sales( order ) -> Storage( objects );
avail@Storage = checkAvail( objects )
What’s here inside
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
11
Sales Storage Delivery
include checkAvail from “socket://storage:8000"
order@Client = getInput( "Insert products" );
request_quote: Client( order ) -> Sales( order );
confirm_avail: Sales( order ) -> Storage( objects );
avail@Storage = checkAvail( objects )
What’s here inside
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
11
Sales Storage Delivery
include checkAvail from “socket://storage:8000"
order@Client = getInput( "Insert products" );
request_quote: Client( order ) -> Sales( order );
confirm_avail: Sales( order ) -> Storage( objects );
avail@Storage = checkAvail( objects )
What’s here inside
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
11
Sales Storage Delivery
include checkAvail from “socket://storage:8000"
order@Client = getInput( "Insert products" );
request_quote: Client( order ) -> Sales( order );
confirm_avail: Sales( order ) -> Storage( objects );
avail@Storage = checkAvail( objects )
What’s here inside
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Architectural Vision
12
Sales Storage Delivery
WebServer
CRM
Order Manag.
HardwareManag.
OrderManag.
DeliveryManag.
Delivery Tracking
Client Sales DeliveryStorageClient
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Architectural Vision
12
Sales Storage Delivery
WebServer
CRM
Order Manag.
HardwareManag.
OrderManag.
DeliveryManag.
Delivery Tracking
Client Sales DeliveryStorage
Function checkAvail
Client
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
13
Sales Storage Delivery
include checkAvail from “socket://storage:8000”
include calcQuote from “socket://sales:8001"
order@Client = getInput( "Insert products" );
request_quote: Client( order ) -> Sales( order );
confirm_avail: Sales( order ) -> Storage( objects );
avail@Storage = checkAvail( objects )
if ( avail )@Storage {
quote@Sales = calcQuote( order );
send_quote: Sales( quote ) -> Client( quote );
…
} else {
product_unavailable: Sales() -> Client()
}
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
13
Sales Storage Delivery
include checkAvail from “socket://storage:8000”
include calcQuote from “socket://sales:8001"
order@Client = getInput( "Insert products" );
request_quote: Client( order ) -> Sales( order );
confirm_avail: Sales( order ) -> Storage( objects );
avail@Storage = checkAvail( objects )
if ( avail )@Storage {
quote@Sales = calcQuote( order );
send_quote: Sales( quote ) -> Client( quote );
…
} else {
product_unavailable: Sales() -> Client()
}
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Vendite Magazzino Spedizioni
requestquote
confirmavailability
optsendquote
productsunavailable
optapprovequote
refusequote
forward ordersend order
send tracking code
confirm reception
confirmdelivery
13
Sales Storage Delivery
include checkAvail from “socket://storage:8000”
include calcQuote from “socket://sales:8001"
order@Client = getInput( "Insert products" );
request_quote: Client( order ) -> Sales( order );
confirm_avail: Sales( order ) -> Storage( objects );
avail@Storage = checkAvail( objects )
if ( avail )@Storage {
quote@Sales = calcQuote( order );
send_quote: Sales( quote ) -> Client( quote );
…
} else {
product_unavailable: Sales() -> Client()
}
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix
14
Why not peer to peer choreography?
[email protected] | 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?
[email protected] | 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?
[email protected] | 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?
[email protected] | 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.
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix (cont’d)
15
Why not peer to peer choreography? True if you leave the
choreographic domain. It is like writing C code and trying to change the program by changing the compiled assembly code.
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.
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix (cont’d)
15
Why not peer to peer choreography? True if you leave the
choreographic domain. It is like writing C code and trying to change the program by changing the compiled assembly code.
On the contrary. Choreographies help to clarify public functions and their APIs (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.
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix (cont’d)
15
Why not peer to peer choreography? True if you leave the
choreographic domain. It is like writing C code and trying to change the program by changing the compiled assembly code.
On the contrary. Choreographies help to clarify public functions and their APIs (I/Os). Choreographies written in AIOCJ are adaptable at 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.
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Netflix (cont’d)
15
Why not peer to peer choreography? True if you leave the
choreographic domain. It is like writing C code and trying to change the program by changing the compiled assembly code.
On the contrary. Choreographies help to clarify public functions and their APIs (I/Os). Choreographies written in AIOCJ are adaptable at 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.
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Architectural Vision (Part II)
16
Sales Storage Delivery
WebServer
CRM
Order Manag.
HardwareManag.
OrderManag.
DeliveryManag.
Delivery Tracking
Client Sales DeliveryStorageClient
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016 17
Sales Storage Delivery
WebServer
CRM
GestoreOrdini
HardwareManag.
OrderManag.
DeliveryManag.
Delivery Tracking
Client Sales DeliveryStorage
WebServerWeb
Server
GestoreOrdiniOrder
Manag.Load
Balancer
Circuit Breaker
WebGateway
Architectural Vision (Part III)
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Today’s Limits
18
There is no effort without error and
shortcoming.
innovation
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016 18
There is no effort without error and
shortcoming.
innovation
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016 18
There is no effort without error and
shortcoming.
innovation
Tomorrow’sStandards
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016 18
There is no effort without error and
shortcoming.
innovation
Tomorrow’sStandards
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Distributed programming becomes easier;
18
There is no effort without error and
shortcoming.
innovation
Tomorrow’sStandards
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Distributed programming becomes easier;
Accountability and formal APIs;
18
There is no effort without error and
shortcoming.
innovation
Tomorrow’sStandards
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Distributed programming becomes easier;
Accountability and formal APIs;
Scalable and reliable architectures.
18
There is no effort without error and
shortcoming.
innovation
Tomorrow’sStandards
[email protected] | DISI at Unibo | Bologna | Meeting on Microservices 2016
Thanks for the attention
19
Questions: Saverio( ? ) -> MoM2016( ! )