The microservices architecture is a commonly used paradigm for building distributed applications. Many small software services, each providing different functionalities, interact to provide high-level application behaviors. This paradigm has many benefits: it enables fine-grained scaling, it facilitates’ development teams’ independence, and it aligns with the breakdown of Moore’s law, which incentivizes smaller compute units. Unfortunately, it also has one well-known drawback—understandability or observability. End-to-end behaviors in microservices applications are very challenging to reason about because they result from myriad interactions within and among services. Though there is opportunity for research to help, a lack of real-world data about microservice deployments depresses opportunities to provide value.
In this talk, I will discuss our efforts to characterize a large cloud providers’ microservice deployment. I will also discuss one key challenge our studies revealed—the tension between the desire for deep observability and immense instrumentation exhaust—and our efforts to address it via a framework that automatically chooses which logging points should be enabled at any time to provide visibility into performance problems.
Raja is the Ankur and Mari Sahu Assistant Professor of Computer Science at Tufts University, where he works on debugging and management techniques for cloud-based applications. In prior lives, he helped worked with the Massachusetts Open Cloud Project, studied routing-protocol evolvability, and worked on (what is now called) distributed tracing.