The Adventurer’s Guide to Forking the Go Runtime - Dominic Black
It is generally seen as a scary thing to do: modifying the Go runtime. However, by creating a rolling fork, we can add functionality such as distributed tracing to regular Go applications without needing modifications to the applications or the library code they use. In this talk, we walk through adding new functionality to Go, starting by showing how Go’s tooling makes it simple to create and maintain a fork. How we can add new functionality to the runtime library, and modify core Go concepts, such as Go routines to carry additional information. We’ll then use this knowledge to build a demo version of a distributed tracing system which can perform request tracing all the way from a HTTP request hitting an API server, going through multiple micro-services to a query being made to your database server.