Metrics, Tracing and Logging
I’ve been reading some of Peter’s stuff since his description of Ok Log tickled my own interests. The overlap in the concepts touches on the difficulty I’ve had explaining BlueOx.
BlueOx tries to do all three things which makes it not fit well in anyone’s mind. But also like a multi-function printer isn’t the best at any of them.
(Video) Load Balancing is Impossible
Impossible is of course an exaggeration. “Perfect Load Balancing is Impossible” might be a better title. This talk covers some similiar material to some experiments I was doing with simulations of load balancing and queuing. This talk takes a few techniques and shows how there is no way to perfectly balance. It’s always all about tradeoffs.
The very end touches on the concept of pull-based models where workers take a larger role in determining how much work they can do. The speaker is hesitant to even consider such things, probably because load balancing HTTP servers is to core to his experience. I think there is lots of potential in building smarter ,load balancer-aware, applications.
Context isn’t for cancellation
In the world of golang programming, the context library is getting a lot of attention. It seems the concensus is “This is useful” but also “It doesn’t quite make sense”.
Indeed as I’ve adopted it into projects I never found it comfortable (or necessarily) to use the grab bag of WithValue
but just used the cancelation features. Even the name seems to say basically nothing about it is actually for. This is a smell.
Most importantly, this post I think is really interesting as an example of experience report which tries to collect real world cases of using the language or library features as a way to understand how they should evolve. I’d like to adopt this practice for everything.
(Video) gRPC: Tutorial to Production
I love presentations that take something somewhat straightforward (writing your first gRPC service) and showing where the complexity of using in a real life starts to show up. If you haven’t found the warts yet, you haven’t dug deep enough.
Incidentally, this talk shows a use for golang’s context.Context.WithValue
functionality and helped me better understand why it exists. I still can’t fully shake the “ick” but I do see how it solves some pretty commmon problems.