20. Why do we want to avoid coding?
{ }
Technical
Debt
(The Sneaky
Kind!)
Time to
Visibility
Decreased
Visibility
21. The Magic of Byte Code Instrumentation
Source Code
Intermediate Code (MSIL, ByteCode)
Compile
Native Code
RuntimeMonitoring Agent Injects Instrumentation
22. No Free Lunch
Limited to Dynamic
Languages and
languages with
intermediate code
Can Add
Overhead
(if not done smartly)
Can Cause
Crashes
(rare for mature
products)
You can have success or failure with them all
We all agree on the important of monitoring being a first class citizen and one of the major factors that makes\breaks your application
Give it more then passing thoughts
Serverless monitoring is hard, the rules are all changed and because of that visibility is impacted
https://devops.com/metrics-logs-and-traces-the-golden-triangle-of-observability-in-monitoring/
https://www.oreilly.com/library/view/distributed-systems-observability/9781492033431/ch04.html
Creating a new haystack to find your need on
Often times logging itself requires time from developers solving business problems. Serverless leads to agility but you lose agility coding in observability into your solutions.
Temping when we’re missing lots of traditional forms of monitoring with Serverless most of the Serverless platforms became heavily reliant on logging
Traditional Agents don’t work so many times they require SDK
Logs requires context understanding which makes logs not really appropriate for operations requiring more development effort and taking away from developer time
Often the first place developers go is logs
Avoid coding logging. It adds to maintenance and complexity of your applications, potentially adds direct dependencies, and reduces productivity gains of Serverless
When available consider using profilers. Most major languages have
Code is debt
we’ve all been there. Looking at metrics and wondering is that a bad thing? Or maybe it’s only bad when you see X = Y but not X+Y+Z
And that goes into the challenges of Correlating metrics. We have hundreds and sometimes thousands of metrics streaming in. How we do know which metric is the cause and which is the
Metrics are often real time or near real time to allow you to get ahead of an issue potentially
Much easier to operationalize metrics
Potentially few metrics then we may be used because we are reliant on Cloud Watch and Azure Monitor for many metrics
- Metrics are going to be the workhorse of your monitoring solution. You’re going to be driving alerts from them, potentially proactive action or remediation, building dashboards, and deciding on diagnostic paths
Complexity in how it stiches the traces together. Either has heavy dependencies on logs or runtime needs to pass “tokens” around which requires knowledge of how applications communicate on various platforms
Tracing only gives you part of the picture and not visibility into underlying health of platform or infrastructure so it’s not as useful by itself (Trace+Metrics)
Consider the value in upstream and downstream
Show Spotlight in a dark alley with bad guy right out of view
Downstream is big with Serverless
End User experience is king
What happens when you’re part of a larger ecosystem. Does your monitoring platform support distributed tracing. What’s the experience like? Is it visual or is it all in analytics? Do you have to write code? Does it actually support tracing through your platform and frameworks (especially older ones)
Your serverless solution is often times a part of a larger ecosystem (unless you have monolythic server solution)
Support the platforms that are important to you (help also in platform selection at times)
Metrics of Distributed Trace