I watched a really awesome talk by Kelsey Hightower at Philly ETE (go watch his talks!1 )
In this he covered in brief three things I’d never seen:
- Protocol Buffers
- gRPC
- Kubernetes
Protocol buffers are pretty neat – if you took a well-defined JSON object, then hand-wrote a precise binary serialization, you could achieve a big speed-up by reducing the amount of JSON processing. This is what protocol buffers are (except the serialization/deserialization code is generated). Apparently some organizations with heavy usage of their applications have achieved significant load reductions, by removing this overhead. This tool seems to have wide language support (though Kelsey mentioned some people have trouble setting it up), including support for browsers / Node2
gRPC describes itself as “a high performance, open source, general RPC framework that puts mobile and HTTP/2 first,” which sounds super-broad. This includes bi-directional messages (clientserver), and also support for authentication – X.509 + OAuth or JWTs3 for user identification. This and some other technologies I saw at the conference promise better performance + battery usage on mobile, which is nice to see. Slacker.js was mentioned as maybe using this4
Kubernetes is the third pieces of this, and to me the most impressive. This is a tool that manages N Docker instances for you, and makes the infrastructure look the way you declare it should. In other words, you make a yaml file that says I want three webservers and a load balancers, and it configures the whole thing – pushes out SSL certificates, deploys three web servers, a load balancer, tells the load balancer about the web servers, and opens a port to the load balancer. Then, you also declare what a health check looks like, if a server looks unhealthy it notices and takes it out of the pool, and if it doesn’t recover, kills it and stats over.
I think this might be the only talk I’ve seen where someone installed an X.509 certificate during the talk (and had it work!). Normally installing certificates would be enough to make me abandon weekend projects with infrastructure, but this demo made it appear that secret distribution with Kubernetes was well thought out to be almost easy (and there do not seem to be many tools that handle this at all)