Practicality of Observability
Observability is closely related to monitoring. Read on to learn tools and tips to help build your observability strategy.
Join the DZone community and get the full member experience.Join For Free
technology teams are not immune to hype and trends. today, one of the hottest topics is observability. everyone seems to be jumping on the observability bandwagon. companies are building observability teams and looking to purchase observability tools.
observability isn't necessarily a new thing. having spent two decades building, monitoring, and observing a large distributed internet service, i have had the pleasure to see the concept of observability evolve. observability and monitoring are closely related . for me, observability is about the ability to see. to find the needle in the haystack. to learn and to make things better.
a long time ago in a galaxy far away, i set up a quality of services group. our job was to buy, build and deploy solutions to improve the quality of the service we delivered to customers. we spent the majority of our time looking at monitoring data, telemetry, and signals trying to make sense of all it. our objectives were to ensure our service level objectives (slo) were met, to prevent service level agreement (sla) breaches, and to drive decisions across the company regarding capacity planning, release management, and new product launches.
we didn't always know why things were broken, we had to examine the data to reveal the answers. we couldn't rely only on alerts for known issues as sometimes performance issues were new and unusual. we were doing observability in a way, although we didn't call it that. the language we use to describe things changes over time. as technology evolves the words we use to describe them also evolve to help us differentiate.
it isn't about what you call it or what tools you use. it is about defining a strategy to help you identify what is broken and why things are broken. the ultimate goal is to quickly identify and resolve issues.
start with the strategy and desired outcomes then look for tools and solutions to support your strategy and goals.
the tools you choose must support your strategy and help you execute on your goals. for example:
- if your goal is to be the most reliable application, you need tools that can tell you what elements and third parties are impacting reliability.
- if your goal is to be the fastest application, you need tools that can tell you when response times increase and how your competitors are performing.
- if your goal is to be the most available application, then your tools should notify you when outages occur.
goals and objectives won't be met overnight or in a couple of months, it may take multiple iterations before your strategy is fully implemented.
if the tools you are using today are not able to tell you what is broken and why then it's time to look for alternatives. it isn't easy to cut your losses on a tool you have invested millions of dollars on, spent thousands of hours implementing, and bet your career on. but if it isn't answering the critical questions it is the best thing to do. i myself, have had to do just this in 2000 when an apm solution we purchased was not meeting our needs after spending millions on the purchase and trying to get it deployed.
i was recently speaking with a cto whose company had implemented an apm solution to address all of their it monitoring needs. they weren't convinced it was meeting all their needs and told me "i spend my time in this tool but still do not know why things are not working."
i set up some tests to see if catchpoint would be able to provide some insights.
the first thing that jumped out at me was how their wait time (time to first byte) was very high. at times during the day, it spiked above anything i have ever seen:
what i observed looking at trends over a month:
- the spikes only occur during certain days of the week.
- the spikes occur during specific times (see chart below).
standard deviation by hour:
standard deviation by day of the week:
at this point, the data reveals what is occurring - a long time to first byte at certain hours of the day. but we still don't know why so, i decided to call my friend, robots.txt for some additional insights. the robots.txt file is served using only the http layer, not the application layer. this provides an easy way to identify whether slowness is due to the http layer or application/backend layer.
comparing the ttfb of the homepage to the robots.txt file we see the homepage is much higher than the robots.txt file. this indicates the issue is with the application layer and not the http layer.
now, this particular company is pretty cool they are passing some of their internal metrics in the html response. we were able to capture and report on these using our insight capabilities.
in this case, we grabbed application, backend, and front end time which is highly correlated to ttfb.
using some of our custom visualization here is another way to look at the same data:
within days we were able to draw the following conclusions:
- something on the back-end causes high ttfb during certain hours of the day, but not every day.
- the http layer is not responsible for the slowness.
- the application time is the one driving the ttfb.
- the backend time is fairly stable and does not seem to induce other latency.
- the front-end time is responsible for driving end-user slowness and is highly correlated to document complete.
- the ttfb is very high no matter what, confirmed by comparing the main site to competitors.
the questions the team should focus on answering:
- what is happening with the infrastructure at 3 am during those days?
- why are we 3 times slower than our competition?
- what other telemetry do we have access to that can help answer why the application time is so high?
- can we take one of those catchpoint requests and trace it throughout the system to answer the above questions?
the trend towards observability tools reminds me of the craze around web performance optimization of a few years ago. people would implement automated solutions sold by vendors to optimize their sites and then realize the automatic algorithms broke more things than they solved.
there is no easy fix or magic pixie dust for ensuring high availability, high reliability, and optimal performance. building and revising a monitoring strategy takes time, and sometimes you have to start over. take the time, observe the data, and ensure it is telling you what is broken and why. installing a tool does not solve the problem, it helps you discover the source, eliminate the various layers... but it starts with having a team of people that care. successful companies have a mature customer-centric technology team driven by results, accountability, and responsibility.
Published at DZone with permission of Mehdi Daoudi, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Software Development: Best Practices and Methods
Tactics and Strategies on Software Development: How To Reach Successful Software [Video]
How to Implement Istio in Multicloud and Multicluster
TDD vs. BDD: Choosing The Suitable Framework