Frank Schroeder is an architect, senior software and network engineer with more than 25 years of hands- on experience currently working at eBay in Amsterdam. There he is responsible for scaling the pay-per-click advertisement system Admarkt which is part of marktplaats.nl managing 8 developers while still coding himself. His experience is in distributed and scalable client/server systems, desktop and iPhone applications. He likes to understand and solve tough problems in complex distributed systems, design and implementation of scalable server backends. He loves Go for its power and simplicity, is a co-host for the Golang meetup in Amsterdam has been a full-time Go developer since 2012.
He is the author of fabio – a consul-aware zero-conf HTTP(S) load-balancer (https://github.com/eBay/fabio) and of a Go properties library (https://github.com/magiconair/properties)
Frank’s talk: ./fabio – A fast, modern, zero-conf load balancing HTTP(S) router for deploying microservices managed by consul
HTTP services which are built out of one or more smaller services require some kind of routing to send requests to the right services and to provide both load-balancing and high-availability. This is usually achieved with either a separate load balancer (e.g. Netscaler) or a software http router like haproxy, nginx, varnish or apache.
Configuring these routers reliably without interruption in a world where services come and go, are scaled up and down and are constantly refactored is a challenge especially for sites which have to handle lots of requests.
The current approach is to generate config files for the router from a registry and then trigger a reload/restart to pick up the changes. ./fabio takes a different approach by providing zero-conf configuration and routing updates without downtime.
The unique approach is to have the services publish enough information in the registry for fabio to update its routing table without interruption.
./fabio is stable and since Sep 2015 handles the entire traffic of marktplaats.nl with about 8k req/sec plus parts of the kijiji.it with about 500 req/sec without any incident so far.