Containers to Back Your Mobile App

Containers to back your mobile app

Brian Dorsey | +BrianDorsey | @briandorsey

How to run backend systems for mobile apps.

Why have a mobile backend at all? It enables you to do things that you couldn’t do without a backend.

It’s a pain.

VM - Cluster -…

Containers

Nice way to wrap up Linux binaries, and make it portable. So it doesn’t just “work on my machine”. Runs everywhere.

Kubernetes

Manage applications, not machines.

Written mostly in Go, initial effort by Google. Open Source.

Helps making deployments, testing, and management more sane.

Uses a yaml config file, specifies number of instances, basic information on how to make copies, and image that we’re using. Sounds like a way to automate mini versions of AMIs.

 # launch using nautilus.yaml config
 kubectl create -f nautilus.yaml

 # resize to 6 instances
 kubectl resize rc update-demo-nautilus --replicas=6

 # upgrading the fleet is very simple
 kubectl rolling-update ...?

Wondering about what happens when you have long-running processes, that require some specific steps. This can be done by writing your own process for doing those updates. Can be written based on any criteria in your system.

  • Labels
    • Arbitrary metadata
    • key-value pair
    • generally represent identity
  • Pods
    • Small group of containers
    • Tightly coupled same node
    • atom of cluster scheduling and placement
    • shared namespace (IP and localhost)
    • ephemeral
  • Replication / Control loops
    • Drive current state -> declared desired state
    • act independently
    • APIs
    • Observed state is truth
    • reoccurring pattern in system
  • Services
    • group of identical pods
    • Load balanced traffic to healthy pods
    • Stable IP and DNS name
    • This is the discovery mechanism for Kubernetes

Google Container Engine

Google provides this in Google Container Enginer. Approaching 1.0, but not there yet.