Strava Engineering: finagle

Finagle Compatible Service Discovery in Golang

What we all know and love about Strava is running on a mostly Rails code base. However, as we've grown we've slowly been moving to a more service-oriented architecture. Almost all new features are being implemented as their own service and a few existing features, like the feed, have also been migrated. Most of these services are written in Scala and use Finagle/Thrift for their RPC communication layer. A growing number of services are starting to use Go and it's becoming necessary to cross communicate. A big hurdle in this process has been service discovery, i.e. how clients determine the IP and port for a service that can exist on multiple hosts.

View More.