Modern telemetry libraries allow easily configuring auto instrumentation, to automatically gather observability data about frameworks and libraries.
There are two main approaches to architecting those auto-instrumentation libraries. As middlewares/wrappers, or as monkey-patches. I believe middlewares are much better, here’s why.
OpenTelemetry is making observability much easier, especially by providing the
first widely accepted vendor agnostic telemetry libraries.
The first signal the project implemented is tracing, which is now GA in most languages.
Ever since we need to operate hardware and software in production, we have needed to know how those behave. For example, when I brew craft beer, I use an iSpindle to monitor the temperature and the gravity of my wort.
The goal of a consensus algorithm is to allow multiple machines to work as a
coherent group which can survive the failures from some of its members.
Paxos has been the most common consensus algorithm used around, yet it is quite hard to understand, and hard to implement.
I actually read this paper for the first time a year ago. But I found it so good that I’ve decided to give it another ready, with a written summary.
In this article, I would like to suggest the use of a very common pattern in Go, Functional Options, but adapted to the Ruby language.
This is my summary and review of the paper Monarch: Google’s Planet-Scale In-Memory Time Series Database
Incidents are inevitable. Any platform, large or small will have them. While resiliency work will definitely be an important factor in reducing the number of incidents, hoping to remove all of them (and therefore reach 100% uptime) is not an achievable goal.
We should, however, learn as much as we can from incidents, so we can avoid repeating them.