125
Jonas Bonér @jboner Beyond FaaS Towards Stateful Serverless

HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Jonas Bonér @jboner

Beyond FaaS Towards Stateful

Serverless

Page 2: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

“We predict that Serverless Computing will grow to dominate the future of Cloud Computing.”

- Berkeley CS Department

Cloud computing simplified: a Berkeley view on serverless computing

Page 3: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

FaaS

FaaS = Function-as-a-Service

Page 4: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Is visionaryFaaS

FaaS = Function-as-a-Service

Page 5: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Is visionaryPaved the way

FaaS

FaaS = Function-as-a-Service

Page 6: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Is visionaryPaved the wayJust the first step

FaaS

FaaS = Function-as-a-Service

Page 7: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Serverless ≠Faas

Page 8: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

good use-casesFor FaaS?

Page 9: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

good use-casesFor FaaS?

Use-cases where throughput is key rather than low latency and requests can be completed in a short time window

Page 10: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

good use-casesFor FaaS?

1. Embarrassingly parallel processing tasks—invoked on demand & intermittently, examples include: image processing, object recognition, log analysis

2. Low traffic applications—enterprise IT services, and spiky workloads 3. Stateless web applications—serving static content form S3 (or similar) 4. Orchestration functions—integration/coordination of calls to third-party services 5. Composing chains of functions—stateless workflow management, connected via data dependencies

6. Job scheduling—CRON jobs, triggers, etc.

Use-cases where throughput is key rather than low latency and requests can be completed in a short time window

Page 11: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

FAAS: Hard to build General-Purpose Applications

Page 12: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. Functions are stateless, ephemeral, short-lived: expensive to lose computational context & rehydrate

2. Durable state is always “somewhere else” 3. No co-location of state and processing 4. No direct addressability—all communication over external storage 5. Limited options for managing & coordinating distributed state 6. Limited options for modelling data consistency guarantees

FAAS: Hard to build General-Purpose Applications

Page 13: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function
Page 14: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

State

Page 15: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

• Managing in-memory durable session state across individual requests E.g. User Sessions, Shopping Carts, Caching

• Low-latency serving of dynamic in-memory models E.g. Serving of Machine Learning Models

• Real-time stream processing E.g. Recommendation, Anomaly Detection, Prediction Serving

• Distributed resilient transactional workflows E.g. Saga Pattern, Workflow Orchestration, Rollback/Compensating Actions

• Shared collaborative workspaces E.g. Collaborative Document Editing, Blackboards, Chat Rooms

• Leader election, counting, voting …and other distributed systems patterns/protocols for coordination

We Need Serverless Support For...

Page 16: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Technical Requirements

Page 17: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. Stateful long-lived addressable virtual components Actors

Technical Requirements

Page 18: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. Stateful long-lived addressable virtual components Actors

2. Options for distributed coordination and communication patterns Pub-Sub, Point-To-Point, Broadcast—CRDTs, Sagas, etc.

Technical Requirements

Page 19: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. Stateful long-lived addressable virtual components Actors

2. Options for distributed coordination and communication patterns Pub-Sub, Point-To-Point, Broadcast—CRDTs, Sagas, etc.

3. Options for managing distributed state reliably at scale Ranging from strong to eventual consistency (durable/ephemeral)

Technical Requirements

Page 20: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. Stateful long-lived addressable virtual components Actors

2. Options for distributed coordination and communication patterns Pub-Sub, Point-To-Point, Broadcast—CRDTs, Sagas, etc.

3. Options for managing distributed state reliably at scale Ranging from strong to eventual consistency (durable/ephemeral)

4. Intelligent adaptive placement of stateful functions Physical co-location of state and processing, sharding, and sticky routing

Technical Requirements

Page 21: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. Stateful long-lived addressable virtual components Actors

2. Options for distributed coordination and communication patterns Pub-Sub, Point-To-Point, Broadcast—CRDTs, Sagas, etc.

3. Options for managing distributed state reliably at scale Ranging from strong to eventual consistency (durable/ephemeral)

4. Intelligent adaptive placement of stateful functions Physical co-location of state and processing, sharding, and sticky routing

5. Predictable performance, latency, and throughput In startup time, communication/coordination, and storage of data

Technical Requirements

Page 22: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. Stateful long-lived addressable virtual components Actors

2. Options for distributed coordination and communication patterns Pub-Sub, Point-To-Point, Broadcast—CRDTs, Sagas, etc.

3. Options for managing distributed state reliably at scale Ranging from strong to eventual consistency (durable/ephemeral)

4. Intelligent adaptive placement of stateful functions Physical co-location of state and processing, sharding, and sticky routing

5. Predictable performance, latency, and throughput In startup time, communication/coordination, and storage of data

6. Ways of managing end-to-end guarantees and correctness

Technical Requirements

Page 23: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

User Function

Deployment

FaaS Abstracting Over Communication

Page 24: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In User Function

Deployment

FaaS Abstracting Over Communication

Page 25: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In User Function

Deployment

Message Out

FaaS Abstracting Over Communication

Page 26: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In User Function

Deployment

Message Out

FaaS With CRUD

Page 27: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In User Function

Deployment

Database

Message Out

FaaS With CRUD

Page 28: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In User Function

Deployment

Database

Message Out

Not Serverless In An Ideal World

Page 29: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Unconstrained database access Makes it hard to

Automate operations

Page 30: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Enter Stateful Serverless

Page 31: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Guid

ing Prin

cip

les

Page 32: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. Embrace State—Don’t ignore, hide, or delegate it Data locality matters. Faster insight into data is a competitive advantage.

Guid

ing Prin

cip

les

Page 33: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. Embrace State—Don’t ignore, hide, or delegate it Data locality matters. Faster insight into data is a competitive advantage.

2. Embrace Failure—Unavoidable. Don’t prevent. Manage. Bulkhead and Contain. Signal and Die. Supervise and Manage.

Guid

ing Prin

cip

les

Page 34: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. Embrace State—Don’t ignore, hide, or delegate it Data locality matters. Faster insight into data is a competitive advantage.

2. Embrace Failure—Unavoidable. Don’t prevent. Manage. Bulkhead and Contain. Signal and Die. Supervise and Manage.

3. Embrace Uncertainty—Manage it in the application layer End-to-end correctness/stability requires app working in concert w/ infra.

Guid

ing Prin

cip

les

Page 35: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. Embrace State—Don’t ignore, hide, or delegate it Data locality matters. Faster insight into data is a competitive advantage.

2. Embrace Failure—Unavoidable. Don’t prevent. Manage. Bulkhead and Contain. Signal and Die. Supervise and Manage.

3. Embrace Uncertainty—Manage it in the application layer End-to-end correctness/stability requires app working in concert w/ infra.

4. Avoid Needless Consistency Not all data have need the same guarantees. Start with zero, add as needed.

Guid

ing Prin

cip

les

Page 36: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. Embrace State—Don’t ignore, hide, or delegate it Data locality matters. Faster insight into data is a competitive advantage.

2. Embrace Failure—Unavoidable. Don’t prevent. Manage. Bulkhead and Contain. Signal and Die. Supervise and Manage.

3. Embrace Uncertainty—Manage it in the application layer End-to-end correctness/stability requires app working in concert w/ infra.

4. Avoid Needless Consistency Not all data have need the same guarantees. Start with zero, add as needed.

5. Avoid Needless Coordination and Communication Silence is Golden. Favour Eventual Consistency, CALM, CRDTs, ACID 2.0.

Guid

ing Prin

cip

les

Page 37: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. Embrace State—Don’t ignore, hide, or delegate it Data locality matters. Faster insight into data is a competitive advantage.

2. Embrace Failure—Unavoidable. Don’t prevent. Manage. Bulkhead and Contain. Signal and Die. Supervise and Manage.

3. Embrace Uncertainty—Manage it in the application layer End-to-end correctness/stability requires app working in concert w/ infra.

4. Avoid Needless Consistency Not all data have need the same guarantees. Start with zero, add as needed.

5. Avoid Needless Coordination and Communication Silence is Golden. Favour Eventual Consistency, CALM, CRDTs, ACID 2.0.

6. Avoid Coupling in Time and Space Go Async. Don’t Block. Location Transparency. Guess/Apologize/Compensate.G

uid

ing Prin

cip

les

Page 38: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In

User Function/Entity

Deployment

Message Out

Stateful Serverless Abstracting Over State

Page 39: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In

User Function/Entity

Deployment

Message Out

Stateful Serverless Abstracting Over State

State In

Page 40: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In

User Function/Entity

Deployment

Message Out

Stateful Serverless Abstracting Over State

State In State Out

Page 41: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Let Us Use Better Models For Distributed State

Page 42: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

A few battle-tested, Yet Constrained, models are:

Let Us Use Better Models For Distributed State

Page 43: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

A few battle-tested, Yet Constrained, models are:

Let Us Use Better Models For Distributed State

Event Sourcing

Page 44: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

A few battle-tested, Yet Constrained, models are:

Let Us Use Better Models For Distributed State

Event Sourcing CRDTs

Page 45: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

A few battle-tested, Yet Constrained, models are:

Let Us Use Better Models For Distributed State

Event Sourcing CRDTs Key

Value

Page 46: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Event Sourced Services

Happy Path

Page 47: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Event Sourced Services

Happy Path

Page 48: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Command

Event Sourced Services

Happy Path

Page 49: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Command

Event Sourced Services

Happy Path

Page 50: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Command

Event Sourced Services

Happy Path

Command

Page 51: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Command

Event Log

Event

Event Sourced Services

Happy Path

Command

Page 52: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Command

Event

Event Log

Event

Event Sourced Services

Happy Path

Command

Page 53: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Command

Event

Event Log

Event

Event Sourced Services

Happy Path

Command Memory Image

Page 54: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Event Sourced Services

Happy Path

Page 55: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Event Sourced Services

SAD Path, RECOVER FROM FAILURE

Page 56: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Event Log

Event Sourced Services

SAD Path, RECOVER FROM FAILURE

Page 57: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Event Log

REPLAY EventS

Event Sourced Services

SAD Path, RECOVER FROM FAILURE

Page 58: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Event Log

REPLAY EventS

Event Sourced Services

SAD Path, RECOVER FROM FAILURE

Command

Page 59: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Deployment

Serverless

Event Sourcing

Page 60: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

User Function/entity

Deployment

Serverless

Event Sourcing

Page 61: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

User Function/entity

Deployment

Event Log In

Serverless

Event Sourcing

Page 62: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Command In

User Function/entity

Deployment

Event Log In

Serverless

Event Sourcing

Page 63: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Command In

User Function/entity

Deployment

Reply Out

Event Log In

Serverless

Event Sourcing

Page 64: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Command In

User Function/entity

Deployment

Reply Out

Event Log In Events OUt

Serverless

Event Sourcing

Page 65: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

ACID 2.0

Page 66: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

ACID 2.0Associative Batch-insensitive

(grouping doesn't matter) a+(b+c)=(a+b)+c

Page 67: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

ACID 2.0Associative Batch-insensitive

(grouping doesn't matter) a+(b+c)=(a+b)+c

Commutative Order-insensitive

(order doesn't matter) a+b=b+a

Page 68: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

ACID 2.0Associative Batch-insensitive

(grouping doesn't matter) a+(b+c)=(a+b)+c

Commutative Order-insensitive

(order doesn't matter) a+b=b+a

Idempotent Retransmission-insensitive (duplication does not matter)

a+a=a

Page 69: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Convergent & Commutative Replicated Data Types - Shapiro et. al. 2011

Conflict-Free Replicated Data Types

Page 70: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

CRDTACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function Highly Available & Scalable

Convergent & Commutative Replicated Data Types - Shapiro et. al. 2011

Conflict-Free Replicated Data Types

Page 71: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Data types Counters Registers

Sets Maps

Graphs (that all compose)

CRDTACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function Highly Available & Scalable

Convergent & Commutative Replicated Data Types - Shapiro et. al. 2011

Conflict-Free Replicated Data Types

Page 72: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Deployment

Serverless

CRDTs

Page 73: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

User Function/entity

Deployment

Serverless

CRDTs

Page 74: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

User Function/entity

Deployment

States/Deltas IN

Serverless

CRDTs

Page 75: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In

User Function/entity

Deployment

States/Deltas IN

Serverless

CRDTs

Page 76: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In

User Function/entity

Deployment

Message Out

States/Deltas IN

Serverless

CRDTs

Page 77: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In

User Function/entity

Deployment

Message Out

States/Deltas IN States/deltas OUT

Serverless

CRDTs

Page 78: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Deployment

Serverless

CRUD

Page 79: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

User Function/entity

Deployment

Serverless

CRUD

Page 80: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

User Function/entity

Deployment

Snapshot In (By Entity KEy)

Serverless

CRUD

Page 81: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In

User Function/entity

Deployment

Snapshot In (By Entity KEy)

Serverless

CRUD

Page 82: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In

User Function/entity

Deployment

Message Out

Snapshot In (By Entity KEy)

Serverless

CRUD

Page 83: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Message In

User Function/entity

Deployment

Message Out

Snapshot In (By Entity KEy)

Snapshot out (By Entity Key)

Serverless

CRUD

Page 84: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Introducing

Page 85: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

What Is CloudState?https://cloudstate.io

Page 86: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Two things:

What Is CloudState?https://cloudstate.io

Page 87: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Two things:1. Standards Project—defining a specification, protocol, and TCK

What Is CloudState?https://cloudstate.io

Page 88: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Two things:1. Standards Project—defining a specification, protocol, and TCK2. Reference Implementation—backend + client APIs in different languages

What Is CloudState?https://cloudstate.io

Page 89: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Two things:1. Standards Project—defining a specification, protocol, and TCK2. Reference Implementation—backend + client APIs in different languages

Highlights:

What Is CloudState?https://cloudstate.io

Page 90: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Two things:1. Standards Project—defining a specification, protocol, and TCK2. Reference Implementation—backend + client APIs in different languages

Highlights:• Polyglot: Client libs in JavaScript, Java, Go—Python, .NET, Swift, Scala in the works

What Is CloudState?https://cloudstate.io

Page 91: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Two things:1. Standards Project—defining a specification, protocol, and TCK2. Reference Implementation—backend + client APIs in different languages

Highlights:• Polyglot: Client libs in JavaScript, Java, Go—Python, .NET, Swift, Scala in the works • PolyState: Powerful state model—support for Event Sourcing, CRDTs, Key Value

What Is CloudState?https://cloudstate.io

Page 92: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Two things:1. Standards Project—defining a specification, protocol, and TCK2. Reference Implementation—backend + client APIs in different languages

Highlights:• Polyglot: Client libs in JavaScript, Java, Go—Python, .NET, Swift, Scala in the works • PolyState: Powerful state model—support for Event Sourcing, CRDTs, Key Value• PolyDB: Supporting SQL, NoSQL, NewSQL, and in-memory replication

What Is CloudState?https://cloudstate.io

Page 93: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Two things:1. Standards Project—defining a specification, protocol, and TCK2. Reference Implementation—backend + client APIs in different languages

Highlights:• Polyglot: Client libs in JavaScript, Java, Go—Python, .NET, Swift, Scala in the works • PolyState: Powerful state model—support for Event Sourcing, CRDTs, Key Value• PolyDB: Supporting SQL, NoSQL, NewSQL, and in-memory replication• Open Source leveraging Akka, gRPC, Knative, GraalVM, running on Kubernetes

What Is CloudState?https://cloudstate.io

Page 94: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Serving of Stateful Functions

Page 95: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Kubernetes Pod

Kubernetes Pod

Kubernetes Pod

Serving of Stateful Functions

Page 96: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Kubernetes Pod

Kubernetes Pod

Kubernetes Pod

User Function (JavaScript, Go, Java,…)

Serving of Stateful Functions User Function (JavaScript, Go, Java,…)

User Function (JavaScript, Go, Java,…)

Page 97: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Kubernetes Pod

Kubernetes Pod

Kubernetes Pod

Cloudstate Proxy

User Function (JavaScript, Go, Java,…)

Serving of Stateful Functions User Function (JavaScript, Go, Java,…)

User Function (JavaScript, Go, Java,…)

Page 98: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Kubernetes Pod

Kubernetes Pod

Kubernetes Pod

Cloudstate Proxy

User Function (JavaScript, Go, Java,…)

Serving of Stateful Functions User Function (JavaScript, Go, Java,…)

User Function (JavaScript, Go, Java,…)

Page 99: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Kubernetes Pod

Kubernetes Pod

Kubernetes Pod

Cloudstate Proxy

User Function (JavaScript, Go, Java,…)

Serving of Stateful Functions User Function (JavaScript, Go, Java,…)

User Function (JavaScript, Go, Java,…)

gRPC

Page 100: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Kubernetes Pod

Kubernetes Pod

Kubernetes Pod

Cloudstate Proxy

User Function (JavaScript, Go, Java,…)

Serving of Stateful Functions User Function (JavaScript, Go, Java,…)

User Function (JavaScript, Go, Java,…)

Datastore (Cassandra, Postgres, Spanner,…)

gRPC

Page 101: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Kubernetes Pod

Kubernetes Pod

Kubernetes Pod

Cloudstate proxy

User Function (JavaScript, Go, Java,…)

Powered by Akka Cluster Sidecars

User Function (JavaScript, Go, Java,…)

User Function (JavaScript, Go, Java,…)

Datastore (Cassandra, Postgres, Spanner,…)

Page 102: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Kubernetes Pod

Kubernetes Pod

Kubernetes Pod

Cloudstate proxy

User Function (JavaScript, Go, Java,…)

Powered by Akka Cluster Sidecars

User Function (JavaScript, Go, Java,…)

User Function (JavaScript, Go, Java,…)

Akka Sidecar

Akka Sidecar

Akka Sidecar

Datastore (Cassandra, Postgres, Spanner,…)

Page 103: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Kubernetes Pod

Kubernetes Pod

Kubernetes Pod

Cloudstate proxy

User Function (JavaScript, Go, Java,…)

Powered by Akka Cluster Sidecars

User Function (JavaScript, Go, Java,…)

User Function (JavaScript, Go, Java,…)

Akka Sidecar

Akka Sidecar

Akka Sidecar

Datastore (Cassandra, Postgres, Spanner,…)

gRPC

Page 104: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Kubernetes Pod

Kubernetes Pod

Kubernetes Pod

Cloudstate proxy

User Function (JavaScript, Go, Java,…)

Powered by Akka Cluster Sidecars

User Function (JavaScript, Go, Java,…)

User Function (JavaScript, Go, Java,…)

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Datastore (Cassandra, Postgres, Spanner,…)

gRPC

Page 105: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Kubernetes Pod

Kubernetes Pod

Kubernetes Pod

Cloudstate proxy

User Function (JavaScript, Go, Java,…)

Powered by Akka Cluster Sidecars

User Function (JavaScript, Go, Java,…)

User Function (JavaScript, Go, Java,…)

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Datastore (Cassandra, Postgres, Spanner,…)

gRPC

Page 106: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Page 107: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Sidecar

• Actor-based Distributed Runtime

Page 108: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Sidecar

• Actor-based Distributed Runtime• Dynamo-style Node Ring

Page 109: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Sidecar

• Actor-based Distributed Runtime• Dynamo-style Node Ring• Decentralized Masterless P2P

Page 110: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Sidecar

• Actor-based Distributed Runtime• Dynamo-style Node Ring• Decentralized Masterless P2P• Epidemic Gossiping, Self-healing

Page 111: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Sidecar

• Actor-based Distributed Runtime• Dynamo-style Node Ring• Decentralized Masterless P2P• Epidemic Gossiping, Self-healing• State Sharding & Routing on Entity Key

(Key, State)

Page 112: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Sidecar

• Actor-based Distributed Runtime• Dynamo-style Node Ring• Decentralized Masterless P2P• Epidemic Gossiping, Self-healing• State Sharding & Routing on Entity Key• Forwarding of Requests (if needed)

(Key, State)

(Key, State)

Page 113: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Sidecar

• Actor-based Distributed Runtime• Dynamo-style Node Ring• Decentralized Masterless P2P• Epidemic Gossiping, Self-healing• State Sharding & Routing on Entity Key• Forwarding of Requests (if needed)• Co-Location of State & Processing

(Key, State)

(Key, State)

Page 114: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Event Log

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Sidecar

• Actor-based Distributed Runtime• Dynamo-style Node Ring• Decentralized Masterless P2P• Epidemic Gossiping, Self-healing• State Sharding & Routing on Entity Key• Forwarding of Requests (if needed)• Co-Location of State & Processing• Backed by Event Log

(Key, State)

(Key, State)

Page 115: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Event Log

Akka Sidecar

Akka Sidecar

Akka Sidecar

• Actor-based Distributed Runtime• Dynamo-style Node Ring• Decentralized Masterless P2P• Epidemic Gossiping, Self-healing• State Sharding & Routing on Entity Key• Forwarding of Requests (if needed)• Co-Location of State & Processing• Backed by Event Log• Automatic Failover, Rehydration, and

Rebalancing

(Key, State)

Page 116: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Event Log

Akka Sidecar

Akka Sidecar

Akka Sidecar

• Actor-based Distributed Runtime• Dynamo-style Node Ring• Decentralized Masterless P2P• Epidemic Gossiping, Self-healing• State Sharding & Routing on Entity Key• Forwarding of Requests (if needed)• Co-Location of State & Processing• Backed by Event Log• Automatic Failover, Rehydration, and

Rebalancing

(Key, State)

Page 117: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Event Log

Akka Sidecar

Akka Sidecar

Akka Sidecar

• Actor-based Distributed Runtime• Dynamo-style Node Ring• Decentralized Masterless P2P• Epidemic Gossiping, Self-healing• State Sharding & Routing on Entity Key• Forwarding of Requests (if needed)• Co-Location of State & Processing• Backed by Event Log• Automatic Failover, Rehydration, and

Rebalancing

(Key, State)

(Key, State)

Page 118: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Event Log

Akka Sidecar

Akka Sidecar

Akka Sidecar

• Actor-based Distributed Runtime• Dynamo-style Node Ring• Decentralized Masterless P2P• Epidemic Gossiping, Self-healing• State Sharding & Routing on Entity Key• Forwarding of Requests (if needed)• Co-Location of State & Processing• Backed by Event Log• Automatic Failover, Rehydration, and

Rebalancing

(Key, State)

(Key, State)

(Key, State)

Page 119: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

Akka Cluster state management

Akka Sidecar

Akka Sidecar

Akka Sidecar

Akka Cluster

Event Log

Akka Sidecar

Akka Sidecar

Akka Sidecar

• Actor-based Distributed Runtime• Dynamo-style Node Ring• Decentralized Masterless P2P• Epidemic Gossiping, Self-healing• State Sharding & Routing on Entity Key• Forwarding of Requests (if needed)• Co-Location of State & Processing• Backed by Event Log• Automatic Failover, Rehydration, and

Rebalancing

(Key, State)

(Key, State)

(Key, State)

https://akka.io

Page 120: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

In Summary

Page 121: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. The promise of Serverless is revolutionary and will grow to dominate the future of Cloud

In Summary

Page 122: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. The promise of Serverless is revolutionary and will grow to dominate the future of Cloud

2. FaaS is a great first step, but let’s not stop here

In Summary

Page 123: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. The promise of Serverless is revolutionary and will grow to dominate the future of Cloud

2. FaaS is a great first step, but let’s not stop here3. Serverless 2.0 needs a runtime & programming

model for general-purpose application development

In Summary

Page 124: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. The promise of Serverless is revolutionary and will grow to dominate the future of Cloud

2. FaaS is a great first step, but let’s not stop here3. Serverless 2.0 needs a runtime & programming

model for general-purpose application development4. We can’t ignore/delegate the hardest thing: State

In Summary

Page 125: HPTS - Towards Stateful Serverless · Graphs (that all compose) CRDT ACID 2.0 Strong Eventual Consistency Replicated & Decentralized Always Converge Correctly Monotonic Merge Function

1. The promise of Serverless is revolutionary and will grow to dominate the future of Cloud

2. FaaS is a great first step, but let’s not stop here3. Serverless 2.0 needs a runtime & programming

model for general-purpose application development4. We can’t ignore/delegate the hardest thing: State5. We think that Cloudstate shows the way

In Summary