Building a Scalable Python
gRPC Service using Kubernetes
@ PyCon APAC
Ian Lewis, Developer Advocate
Slide 2
Slide 2 text
Ian Lewis
Developer Advocate
Google Cloud Platform
google.com/+IanLewis-hoge
@IanMLewis
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
gRPC Concepts
gRPC & Python
Containers & Kubernetes Concepts
Running a Kubernetes Service
Wrap Up
1
2
3
4
Agenda
5
Slide 5
Slide 5 text
Section Slide Template Option 2
Put your subtitle here. Feel free to pick from the handful of pretty Google colors available to you.
Make the subtitle something clever. People will think it’s neat.
gRPC Concepts
Wait…. RPC? What happened to REST?
Slide 6
Slide 6 text
Remote Procedure Call
HTTP/2
Protocol Buffers
gRPC in a Nutshell
Slide 7
Slide 7 text
HTTP/2
Slide 8
Slide 8 text
● is binary ( no telnet :( )
● is fully multiplexed (fewer connections)
● uses header compression to reduce overhead
● allows servers to “push” responses
HTTP/2 ...
Slide 9
Slide 9 text
Protocol Buffers
Slide 10
Slide 10 text
● are a way to serialize structured data
● are binary ( really no love for telnet :( )
● can be parsed quickly
● are flexible (easy to add new fields, supports addons)
● support code generation
Protocol Buffers ...
Slide 11
Slide 11 text
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
}
Protocol Buffers
Slide 12
Slide 12 text
// The greeting service definition.
service Greeter {
// Gets my Person data
rpc GetMe () returns (Person) {}
}
Protocol Buffers
Slide 13
Slide 13 text
Section Slide Template Option 2
Put your subtitle here. Feel free to pick from the handful of pretty Google colors available to you.
Make the subtitle something clever. People will think it’s neat.
gRPC & Python
Python!
Slide 14
Slide 14 text
git clone https://github.com/grpc/grpc.git
Slide 15
Slide 15 text
make shared_c static_c bins/opt/grpc_python_plugin
Section Slide Template Option 2
Put your subtitle here. Feel free to pick from the handful of pretty Google colors available to you.
Make the subtitle something clever. People will think it’s neat.
Containers & Kubernetes
Concepts
What that thar be?!?!
kernel
libs
app
app app
No isolation
No namespacing
Common libs
Highly coupled apps and OS
app
Shared Machines
Slide 21
Slide 21 text
Some isolation
Expensive and inefficient
Still highly coupled to the guest OS
Hard to manage
app
libs
kernel
libs
app app
kernel
app
libs
libs
kernel
kernel
Virtual Machines
Slide 22
Slide 22 text
Containers
Slide 23
Slide 23 text
build and deploy vm images
● Curated runtimes
● Rich services
● Auto-everything
● … just add code
● Managed collections
● Declarative + Dynamic
Compute as a Continuum
Platform
Cluster
● Basic atom
● Run anything
VM
More agility
More Flexibility
build and deploy containers build and deploy apps
Everything at Google runs in
containers:
• Gmail, Web Search, Maps, ...
• MapReduce, batch, ...
• GFS, Colossus, ...
• Even Google Compute Engine:
VMs in containers!
Slide 26
Slide 26 text
Everything at Google runs in
containers:
• Gmail, Web Search, Maps, ...
• MapReduce, batch, ...
• GFS, Colossus, ...
• Even Google Compute Engine:
VMs in containers!
We launch over 2 billion
containers per week.
Slide 27
Slide 27 text
Why containers?
• Performance
• Repeatability
• Isolation
• Quality of service
• Accounting
• Visibility
• Portability
A fundamentally different way of
managing applications
Slide 28
Slide 28 text
Kubernetes
Slide 29
Slide 29 text
Greek for “Helmsman”; also the root of
the word “Governor”
• Container orchestrator
• Runs Docker containers
• Supports multiple cloud and
bare-metal environments
• Inspired and informed by Google’s
experiences and internal systems
• Open source, written in Go
Manage applications, not machines
Slide 30
Slide 30 text
● 0.18.0 released
● 369 contributors
● over 8000 github stars
● CoreOS
● HP
● IBM
● Mesosphere
● Microsoft
● Pivotal
● Red Hat
● SaltStack
● VMWare
● Binary releases
● Logging and monitoring
● Richer scheduling
○ Labels based constraints
○ Smart bin-packing
○ Run-to-completion
● Updated service model
○ IP per service
● DNS integration
Project Partners New
Introducing Google Container Engine
Community
Slide 31
Slide 31 text
● Group of containers
● Settings in a template
➔ Reuse across environments
➔ Repeatable, manageable
Behavior Benefits
Pod
Web Server
Content
Management
Server
Pods
more at pod.md
Slide 32
Slide 32 text
Dashboard
show: FE
Labels
● Metadata with semantic meaning
● Membership identifier
➔ Allow for intent of many users (e.g. dashboards)
➔ Build higher level systems …
Behavior Benefits
Pod
Pod
frontend
Pod
frontend
Pod Pod
FE BI, FE v2
Dashboard
show: v2
more at labels.md
Slide 33
Slide 33 text
Replication Controllers
Behavior Benefits
Replication
Controller
#Pods → 2
label selector: v1
Pod
Pod
frontend
Pod
frontend
Pod Pod
v1 v1
Replication
Controller
#Pods → 1
label selector: v2
v2
more at rc.md
● Keeps Pods running
● Gives direct control of Pod #s
➔ Restarts Pods, desired state
➔ Fine-grained control for scaling
Slide 34
Slide 34 text
Pod
Services
Behavior Benefits
Pod
FE FE
Pod
FE
Service
label selector: Front End
more at services.md
➔ Clients shielded from implementation details
➔ Independently control each, build for resiliency
● Stable address
● Decoupled from Controllers
Slide 35
Slide 35 text
Section Slide Template Option 2
Put your subtitle here. Feel free to pick from the handful of pretty Google colors available to you.
Make the subtitle something clever. People will think it’s neat.
Running a Kubernetes Service
Steer me ship captain!