designing distributed systems · solution: containers and orchestration (2013-2014 [and earlier])...

Post on 02-Oct-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Designing Distributed SystemsBRENDAN BURNS

DI ST I NGUISHED ENGI NEER ndash M I CRO SOFT AZ URE

CO -FO UNDER ndash K UBERNETES P RO JECT

This job is too hard

A history lessonDevelopment in the 1940s and 1950s

A history lessonDevelopment in the 1940s and 1950s

Problem Assembly Language

Solution Fortran (1954)

Patterns Knuth ndash Art of Computer Programming (1962-1968)

A history lessonDevelopment in the 1970s and 1980s

A history lessonDevelopment in the 1970s and 1980s

Problem Large codebases interchangeable teams

Solution Object Oriented Programming (c 1985 [really much earlier])

Patterns Gang of Four ndash Design Patterns Elements of Reusable Object-Oriented Software (1994)

A (modern) history lessonDevelopment in the 2000s and 2010s

A (modern) history lessonDevelopment in the 2000s and 2010s

Problem Distributed applications scale and reliability

Solution Containers and Orchestration (2013-2014 [and earlier])

Patterns Designing Distributed Systems - OSCON 2018

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Single Node PatternsFocus on component re-use and organization

Container Group (aka Pod)

Container 1

Container 2

Container 3

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Application Container

Sidecar Container

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

This job is too hard

A history lessonDevelopment in the 1940s and 1950s

A history lessonDevelopment in the 1940s and 1950s

Problem Assembly Language

Solution Fortran (1954)

Patterns Knuth ndash Art of Computer Programming (1962-1968)

A history lessonDevelopment in the 1970s and 1980s

A history lessonDevelopment in the 1970s and 1980s

Problem Large codebases interchangeable teams

Solution Object Oriented Programming (c 1985 [really much earlier])

Patterns Gang of Four ndash Design Patterns Elements of Reusable Object-Oriented Software (1994)

A (modern) history lessonDevelopment in the 2000s and 2010s

A (modern) history lessonDevelopment in the 2000s and 2010s

Problem Distributed applications scale and reliability

Solution Containers and Orchestration (2013-2014 [and earlier])

Patterns Designing Distributed Systems - OSCON 2018

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Single Node PatternsFocus on component re-use and organization

Container Group (aka Pod)

Container 1

Container 2

Container 3

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Application Container

Sidecar Container

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

A history lessonDevelopment in the 1940s and 1950s

A history lessonDevelopment in the 1940s and 1950s

Problem Assembly Language

Solution Fortran (1954)

Patterns Knuth ndash Art of Computer Programming (1962-1968)

A history lessonDevelopment in the 1970s and 1980s

A history lessonDevelopment in the 1970s and 1980s

Problem Large codebases interchangeable teams

Solution Object Oriented Programming (c 1985 [really much earlier])

Patterns Gang of Four ndash Design Patterns Elements of Reusable Object-Oriented Software (1994)

A (modern) history lessonDevelopment in the 2000s and 2010s

A (modern) history lessonDevelopment in the 2000s and 2010s

Problem Distributed applications scale and reliability

Solution Containers and Orchestration (2013-2014 [and earlier])

Patterns Designing Distributed Systems - OSCON 2018

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Single Node PatternsFocus on component re-use and organization

Container Group (aka Pod)

Container 1

Container 2

Container 3

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Application Container

Sidecar Container

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

A history lessonDevelopment in the 1940s and 1950s

Problem Assembly Language

Solution Fortran (1954)

Patterns Knuth ndash Art of Computer Programming (1962-1968)

A history lessonDevelopment in the 1970s and 1980s

A history lessonDevelopment in the 1970s and 1980s

Problem Large codebases interchangeable teams

Solution Object Oriented Programming (c 1985 [really much earlier])

Patterns Gang of Four ndash Design Patterns Elements of Reusable Object-Oriented Software (1994)

A (modern) history lessonDevelopment in the 2000s and 2010s

A (modern) history lessonDevelopment in the 2000s and 2010s

Problem Distributed applications scale and reliability

Solution Containers and Orchestration (2013-2014 [and earlier])

Patterns Designing Distributed Systems - OSCON 2018

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Single Node PatternsFocus on component re-use and organization

Container Group (aka Pod)

Container 1

Container 2

Container 3

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Application Container

Sidecar Container

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

A history lessonDevelopment in the 1970s and 1980s

A history lessonDevelopment in the 1970s and 1980s

Problem Large codebases interchangeable teams

Solution Object Oriented Programming (c 1985 [really much earlier])

Patterns Gang of Four ndash Design Patterns Elements of Reusable Object-Oriented Software (1994)

A (modern) history lessonDevelopment in the 2000s and 2010s

A (modern) history lessonDevelopment in the 2000s and 2010s

Problem Distributed applications scale and reliability

Solution Containers and Orchestration (2013-2014 [and earlier])

Patterns Designing Distributed Systems - OSCON 2018

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Single Node PatternsFocus on component re-use and organization

Container Group (aka Pod)

Container 1

Container 2

Container 3

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Application Container

Sidecar Container

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

A history lessonDevelopment in the 1970s and 1980s

Problem Large codebases interchangeable teams

Solution Object Oriented Programming (c 1985 [really much earlier])

Patterns Gang of Four ndash Design Patterns Elements of Reusable Object-Oriented Software (1994)

A (modern) history lessonDevelopment in the 2000s and 2010s

A (modern) history lessonDevelopment in the 2000s and 2010s

Problem Distributed applications scale and reliability

Solution Containers and Orchestration (2013-2014 [and earlier])

Patterns Designing Distributed Systems - OSCON 2018

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Single Node PatternsFocus on component re-use and organization

Container Group (aka Pod)

Container 1

Container 2

Container 3

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Application Container

Sidecar Container

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

A (modern) history lessonDevelopment in the 2000s and 2010s

A (modern) history lessonDevelopment in the 2000s and 2010s

Problem Distributed applications scale and reliability

Solution Containers and Orchestration (2013-2014 [and earlier])

Patterns Designing Distributed Systems - OSCON 2018

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Single Node PatternsFocus on component re-use and organization

Container Group (aka Pod)

Container 1

Container 2

Container 3

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Application Container

Sidecar Container

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

A (modern) history lessonDevelopment in the 2000s and 2010s

Problem Distributed applications scale and reliability

Solution Containers and Orchestration (2013-2014 [and earlier])

Patterns Designing Distributed Systems - OSCON 2018

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Single Node PatternsFocus on component re-use and organization

Container Group (aka Pod)

Container 1

Container 2

Container 3

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Application Container

Sidecar Container

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Single Node PatternsFocus on component re-use and organization

Container Group (aka Pod)

Container 1

Container 2

Container 3

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Application Container

Sidecar Container

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Single Node PatternsFocus on component re-use and organization

Container Group (aka Pod)

Container 1

Container 2

Container 3

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Application Container

Sidecar Container

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Application Container

Sidecar Container

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Single Node Patterns SidecarSidecars augment and extend

Container Group (aka Pod)

Web ServerSidecar

Container

Cloud Storage

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

Application Container

Ambassador Container

External Service

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Single Node Patterns AmbassadorAmbassadors translate and represent

Container Group (aka Pod)

NodeJS Web App

Twem Proxy

MemcacheShard 1

localhost

MemcacheShard 2

MemcacheShard 3

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Application Container

AdapterExternal Interface

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Single Node Patterns AdapterAdapters Standardize and Normalize

Container Group (aka Pod)

Java Application

Prometheus Java Exporter

Prometheus ScraperJMX

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Multi-Node PatternsShare and learn from existing best practices

Give us a common vocabulary for discussing our systems

Enable the development of shared implementations

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Service Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Multi-Node Patterns ReplicatedReliable redundant serving

Safe zero-downtime rollouts

Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

Service -gt

Deployment -gt

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Multi-Node Patterns Replicatedconst myService =

new ReplicatedService(

image acriobrendanmy-serverv1

ports [ 8080 ]

replicas 4)Load Balancer

Replica 1

Replica 2

Replica 3

Replica 4

httpsmetaparticleiotutorials

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Multi-Node Patterns ShardedSharding increases cache hit rates

Enables larger data-stores

Changes failure patternsShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

Service -gt

Deployment -gt

StatefulSet -gt

Replicated -gt

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Multi-Node Patterns Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

Shard 1

Shard 2

Shard 3

const myService =

new ShardedService(

image acriobrendanmy-serverv1

shardRegexp users()

ports [ 8080 ]

shards 4)

httpsmetaparticleiotutorials

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Multi-Node Replicated amp ShardedShard Load Balancer

Shard Router

Shard Router

Shard Router

Shard Router

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

class ShardedReplicatedService ShardedService

ReplicatedService[] replicatedShards

public ShardedReplicatedService()

hellip

hellip

Multi-Node Replicated amp Sharded

Shard Load Balancer

Shard Router

Shard Router

Shard Router

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Agenda Patterns

Single Node Patterns

Multi-Node patterns

Tools Cluster Daemons

Cluster Agents

Intent-based APIs

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Tools The cluster as the new node

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Cluster Daemons

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

Distributed systems are become microservices

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Cluster Daemons

Cluster Daemons

bull Atomic value-added behaviors based on API object state

bull Deployed onto the cluster itself

bull Enable ldquoauto-magicrdquo experiences

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Cluster DaemonsDistributed systems are becoming microservices

Cert Manager Daemon HTTP Service

(Ingress)

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Cert Manager Daemon

kubernetesiotls-acme true

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Cluster DaemonsDistributed systems are becoming microservices

HTTP Service(Ingress)

Certificate

Cert Manager Daemon

kubernetesiotls-acme true

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Intent-based APIs

Container API Unified Compute Substrate

Cluster Daemons

Cluster Services

Intent-based APIs

State your intent not how to build it

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Intent-based APIsIntent-based

APIs

Too much time is spent building things we should just state Or too little time is spent building such things

Wasted duplicate effort

Barriers to entry for many people

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Intent-based APIs

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Intent-based APIsapiVersion loadtestv1kind LoadTestmetadataname my-cool-loadtestlabels

hellipspecservice my-cool-servicerequestPerSecond 10ktests- test- somepath- someotherpath

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create 3rd party LoadTest API

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Watch apisloadtestshellip

apisloadtestshellip

hellipCreate apisloadtestsmy-cool-loadtest

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Intent-based APIs

Kubernetes API Server

Load Test Extension API

Create LoadTestPods

my-cool-service

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Cluster ServicesCluster Services

Cluster wide standardization of common services eg Logging Monitoring Security

Automatically enabled by deploying into the cluster

Ensure consistency concentration of skills amp best practices

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Cluster Services

I think Irsquoll use statsd

I think Irsquoll use prometheus

Monitoring

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Cluster Services

I think Irsquoll quit

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Create Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Get Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Cluster Services

Kubernetes API Server

Cluster Wide Monitoring

Monitor Pods

Cloud Monitoring

SaaS

Questions

Questions

top related