Slide 1

Slide 1 text

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

Slide 16

Slide 16 text

protoc -I ../../protos --python_out=. --grpc_out=. -- plugin=protoc-gen- grpc=/path/to/bins/opt/grpc_python_plugin ../.. /protos/helloworld.proto Generate Code

Slide 17

Slide 17 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. Containers & Kubernetes Concepts What that thar be?!?!

Slide 18

Slide 18 text

Current Practice

Slide 19

Slide 19 text

Database Batch processing Cache Webservers Webservers Webservers Webservers

Slide 20

Slide 20 text

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

Slide 24

Slide 24 text

libs app kernel libs app libs app libs app Containers

Slide 25

Slide 25 text

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!

Slide 36

Slide 36 text

#pyconapac plus.google.com/+IanLewis-hoge twitter.com/IanMLewis Thank you!