Observability in software engineering
The importance of monitoring the system.

Just a guy who loves to write code and watch anime.
Search for a command to run...
The importance of monitoring the system.

Just a guy who loves to write code and watch anime.
No comments yet. Be the first to comment.
Qualities that make outstanding builders.

Bipedal vs quadrupedal: how many legs This is about the number of legs the creature walks on. Bipedal. Two legs. Humans, ostriches, T-rex, kangaroos, most fantasy humanoids. Quadrupedal. Four legs. Do

Intro You hear "lerp" and "smoothstep" everywhere in game dev. They sound like math jargon. They're not. Both are small tools that do the same job: smoothly move from one value to another. The problem

What is Kinematics Kinematics is the math field. It's the study of how things move without worrying about forces (which would be dynamics). FK and IK are the two branches: forward kinematics and inver

Intro Textures are usually the biggest cost in a 3D scene. Memory, bandwidth, and load time all get eaten by them. Resizing them is the obvious lever. There's more. This post is about the less obvious

Observability is a key concept in software engineering that refers to the ability to monitor and understand the internal state of a system. This is important because it allows us to quickly and accurately diagnose issues with the system and make necessary changes to improve its performance.
Through observability, we gain a better understanding of how our system is functioning in production. This can be quite useful in complex systems, where it can be difficult to understand how components of the system are interacting and working with one another. By finding issues and fixing them early, we can prevent them from becoming major problems.
Observability can be achieved in multiple ways, primarily three ways:
Logging
Metrics
Tracing
Logging involves recording events and messages from the system, which can be used to understand the sequence of actions that led to a particular outcome.
For example, if a user reports that they cannot log in to the system, a developer can use logs to track the sequence of events leading up to the login attempt, which hopefully helps identify the source of the issue.
Metrics, on the other hand, are numerical values that provide insight into the performance of the system, such as response time or error rates. By monitoring these metrics, we can identify trends and patterns that may indicate underlying issues with the system.
For example, if the response time for a particular service is consistently higher than expected, this could be a sign that the service is experiencing performance issues that need to be addressed.
Tracing involves tracking the flow of requests through the system, which can help identify bottlenecks or other issues. This can be particularly useful in distributed systems, where requests may be handled by multiple components, each of which may have its own performance characteristics.
By tracing the flow of requests through the system, we can identify which components are causing delays and take steps to improve their performance.
Observability is great, especially in larger and more complex systems. It can help us diagnose and fix issues, improve performance, and ensure that our systems are functioning correctly in production.