“They start with a monolith, and they decide, ‘we could break this up into a few service oriented architecture’ blobs [rocks]… then go to microservices [pebbles], and then into lambdas [gaseous clouds]. Before long, you’re down to really, really intense atomicity in this architecture.”<\/em><\/p>\n<\/blockquote>\n\n\n\nThis is a common enough pattern in more than a few organizations I know inside details of. It makes sense as microservices is the shift that cloud pundits have been pushing for a decade now. <\/p>\n\n\n\n
Serverless these days is not the quiet one in the corner.<\/p>\n\n\n\n
So all seems well and good. How much can atomicity hurt? <\/p>\n\n\n\n
Well, it can be painful if your observability system can’t handle it.<\/p>\n\n\n\n
David added the fact that this kind of atomicity adds cardinality to observability. It adds overhead that itself needs to be observed. This overhead can start to feel as large as the application itself. <\/p>\n\n\n\n
I’ve heard people echo David’s sentiment that this overhead can become a completely invisible cloud of noise around your application that has nothing to do with your application.<\/p>\n\n\n\n
A cautionary tale indeed for carefully reworking your software architecture. Be sure to keep your o11y capabilities in mind when doing so!<\/p>\n\n\n
Handling cognitive load when it comes to observability systems <\/h3>\n\n\n
Our discussion of architectural woes in o11y drove me to bring up an area that is so critical to successful engineering work but is often neglected: cognitive load<\/em>. <\/p>\n\n\n\nObservability systems are overloading engineers with too much data and things to see. <\/p>\n\n\n\n
David’s suggestion to my assertion around cognitive load made me chuckle and grimace at the same time:<\/p>\n\n\n\n
\n“I’m very much of the opinion that you want to preserve simplicity as long as you can. There’s a lot of anticipatory architecture changes that happen really on the optimism like, ‘Oh, it’s going to blow up!’ I have worked in environments where it didn’t blow up and it was still really complex because we were prepared for a legion of people that never showed up.”<\/em><\/p>\n<\/blockquote>\n\n\n\nHe added that engineers need to “avoid complexity like the plague” and keep things as simple as they possibly can. <\/p>\n\n\n
Moving toward event-based SLOs rather than solely time-based metrics<\/strong><\/h3>\n\n\nDrawing from experience, David recalls his attempts at making time-based SLOs work. Over time and several failures, he learned that event-based SLOs are more appropriate in many situations. <\/p>\n\n\n\n
He stresses the rationale for not using time-based SLOs through this quote:<\/p>\n\n\n\n
\n“Because not every minute of time is the same as every other minute. And if your service goes down when no one is using it, who cares? That’s not a problem. And, you know, you’re not, in most cases, contractually obligated to provide this many minutes a month.”<\/em><\/p>\n<\/blockquote>\n\n\n\nDoing so can become “a really confusing side quest” that’s difficult to connect to reality. David emphasizes that SLOs are a sociotechnical construct and because of this, they need people to buy into what you’re trying to achieve. <\/p>\n\n\n\n
His experience has shown that it’s a lot easier to get people behind simpler SLOs like error rate rather than time-based SLOs.For example, you could set SLOs for the number of 50x <\/em>that are occurring in your services. <\/p>\n\n\n\nYour service might normally return a 0.1% error rate, but if that number doubles, it can start a conversation. The key behind doing any of this is knowing that you can’t do bottom-up with SLOs. You need senior leadership support to make it happen.
If you can’t get that buy in and that can be really tough. This could explain the sheer volume of failed SLOs in the industry today. <\/p>\n\n\n\n
You need to invest your time in SLOs, but keep it simple. David recommends to not\u00a0jump into the whole hype surrounding SLOs from the market.<\/p>\n\n\n\n
\n\n\nHere are 10 more takeaways from the show:<\/h2>\n\n\n\n- Understand your observability billing model:<\/strong> Gain a clear understanding of your service provider’s billing model to avoid unexpected expenses. This helps in planning and optimizing costs associated with high cardinality data and log retention.<\/li>\n\n\n\n
- Employ cost optimization tactics:<\/strong> tactics like sampling and selective logging can help manage costs without sacrificing the visibility needed for effective monitoring. This is particularly valuable in high-traffic scenarios where full resolution logs are not financially justifiable.<\/li>\n\n\n\n
- Enhance your log retention policies:<\/strong> Use automated tools to manage log retention, ensuring that you’re only keeping what’s necessary and utilizing cost-effective storage solutions like Amazon S3 for long-term storage.<\/li>\n\n\n\n
- Make querying and data access cost-effective:<\/strong> Look into using tools like Amazon Athena for querying large datasets at a low cost, which enables you to access your logs as needed without incurring high storage and processing fees.<\/li>\n\n\n\n
- Take the time to prioritize your data:<\/strong> Focus on logging and monitoring the most critical aspects of your system to avoid information overload and reduce costs. This involves understanding what data is truly valuable for your specific context.<\/li>\n\n\n\n
- Learn to differentiate status vs. diagnostic information:<\/strong> Status indicators and diagnostic data often give mixed up as solving the same problem. They don’t. Simplify your monitoring by providing clear status indicators (red, yellow, green) for quick assessments and reserve detailed diagnostic data for deeper analysis.<\/li>\n\n\n\n
- Effectively leverage the power of metrics:<\/strong> Develop work metrics that reflect the actual<\/em> performance and health of your platform. This approach helps in quickly identifying issues without sifting through irrelevant data.<\/li>\n\n\n\n
- Simplify your incident management:<\/strong> Aim for a “single pane of glass” dashboard that offers a straightforward view of system health to reduce time spent in identifying and debating the presence and scope of issues.<\/li>\n\n\n\n
- Educate your stakeholders and manage their expectations:<\/strong> Help your various stakeholders understand the cost-benefit analysis behind observability practices including data logging and retention strategies that foster support for cost-effective practices.<\/li>\n\n\n\n
- Go beyond the metrics mindset:<\/strong> Recognize the value of logs and stack traces as critical diagnostic tools that can support your monitoring and alerting. Ensure that your observability strategy integrates these elements effectively for pinpointing issues.<\/li>\n<\/ol>\n\n\n\n
\n\n\n\nYou will not want to miss his insights (and his charismatic humor).<\/p>\n\n\n\n
In\u00a0Episode #30 of the SREpath podcast, David Caudill gives me his take on clearing delusions in observability.<\/p>\n\n\n\n
I\u2019m sure your team will appreciate you clearing any accidental misgivings they may have developed about observability \ud83d\ude01<\/p>\n","protected":false},"excerpt":{"rendered":"
Episode 30 [SREpath Podcast] Show notes How critical is observability (o11y) to SRE work? To me, observability is the core foundation practice for all other SRE practice areas. Without it, you’re flying blind. David Caudill is not afraid of making controversial viewpoints about this area. But he doesn’t do it for glory. To him, it’s about driving better practices. After all, it’s not […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[72,48],"tags":[85,31],"_links":{"self":[{"href":"https:\/\/sysmit.com\/cf22\/wp-json\/wp\/v2\/posts\/6387"}],"collection":[{"href":"https:\/\/sysmit.com\/cf22\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sysmit.com\/cf22\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sysmit.com\/cf22\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sysmit.com\/cf22\/wp-json\/wp\/v2\/comments?post=6387"}],"version-history":[{"count":6,"href":"https:\/\/sysmit.com\/cf22\/wp-json\/wp\/v2\/posts\/6387\/revisions"}],"predecessor-version":[{"id":6435,"href":"https:\/\/sysmit.com\/cf22\/wp-json\/wp\/v2\/posts\/6387\/revisions\/6435"}],"wp:attachment":[{"href":"https:\/\/sysmit.com\/cf22\/wp-json\/wp\/v2\/media?parent=6387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sysmit.com\/cf22\/wp-json\/wp\/v2\/categories?post=6387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sysmit.com\/cf22\/wp-json\/wp\/v2\/tags?post=6387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}