Building a Scalable Python gRPC Service using Kubernetes @ PyCon Korea

01dc8e954957a10b428aa60b28c89d52?s=47 Ian Lewis
August 30, 2015

Building a Scalable Python gRPC Service using Kubernetes @ PyCon Korea

01dc8e954957a10b428aa60b28c89d52?s=128

Ian Lewis

August 30, 2015
Tweet

Transcript

  1. Building a Scalable Python gRPC Service using Kubernetes @ PyCon

    Korea Ian Lewis, Developer Advocate
  2. Ian Lewis Developer Advocate Google Cloud Platform google.com/+IanLewis-hoge @IanMLewis

  3. Me

  4. I’m famous in Korea!

  5. None
  6. None
  7. gRPC Concepts gRPC & Python Containers & Kubernetes Concepts Running

    a Kubernetes Service Wrap Up 1 2 3 4 Agenda 5
  8. 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?
  9. Remote Procedure Call HTTP/2 Protocol Buffers gRPC in a Nutshell

  10. HTTP/2

  11. • is binary ( no telnet :( ) • is

    fully multiplexed (fewer connections) • uses header compression to reduce overhead • allows servers to “push” responses HTTP/2 ...
  12. Protocol Buffers

  13. • 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 ...
  14. message Person { string name = 1; int32 id =

    2; string email = 3; } Protocol Buffers
  15. // The greeting service definition. service Greeter { // Gets

    my Person data rpc GetMe () returns (Person) {} } Protocol Buffers
  16. 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!
  17. git clone https://github.com/grpc/grpc.git

  18. make

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

    Generate Code
  20. 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?!?!
  21. Current Practice

  22. Database Batch processing Cache Webservers Webservers Webservers Webservers

  23. kernel libs app app app No isolation No namespacing Common

    libs Highly coupled apps and OS app Shared Machines
  24. 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
  25. Containers

  26. 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
  27. libs app kernel libs app libs app libs app Containers

  28. Everything at Google runs in containers: • Gmail, Web Search,

    Maps, ... • MapReduce, batch, ... • GFS, Colossus, ... • Even Google Compute Engine: VMs in containers!
  29. 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.
  30. Why containers? • Performance • Repeatability • Isolation • Quality

    of service • Accounting • Visibility • Portability A fundamentally different way of managing applications
  31. Kubernetes

  32. 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 Kubernetes
  33. • 1.0 released • 400+ contributors • over 9000+ github

    stars • CoreOS • HP • IBM • Mesosphere • Microsoft • Pivotal • Red Hat • SaltStack • VMWare • Running containers together (Pods) • Labels • Logging and monitoring • Service model ◦ IP per service • DNS integration Project Partners Features Introducing Google Container Engine Community
  34. • Group of containers • Settings in a template ➔

    Reuse across environments ➔ Repeatable, manageable Behavior Benefits Pod Web Server Content Management Server Pods
  35. 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 • Keeps Pods running • Gives direct control of Pod #s ➔ Restarts Pods, desired state ➔ Fine-grained control for scaling
  36. 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
  37. Pod Services Behavior Benefits Pod FE FE Pod FE Service

    label selector: Front End ➔ Clients shielded from implementation details ➔ Independently control each, build for resiliency • Stable address • Decoupled from Controllers
  38. 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!
  39. #pyconkr plus.google.com/+IanLewis-hoge twitter.com/IanMLewis Thank you!