<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: di(nara) critskaya</title>
    <description>The latest articles on Forem by di(nara) critskaya (@critskiy).</description>
    <link>https://forem.com/critskiy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1045186%2F04409b2c-02ac-45fc-b9a1-c400e54834b8.JPG</url>
      <title>Forem: di(nara) critskaya</title>
      <link>https://forem.com/critskiy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/critskiy"/>
    <language>en</language>
    <item>
      <title>When Is Monitoring Enough? A Practical Guide to Database Observability</title>
      <dc:creator>di(nara) critskaya</dc:creator>
      <pubDate>Thu, 21 Aug 2025 11:51:34 +0000</pubDate>
      <link>https://forem.com/critskiy/when-is-monitoring-enough-a-practical-guide-to-database-observability-3edm</link>
      <guid>https://forem.com/critskiy/when-is-monitoring-enough-a-practical-guide-to-database-observability-3edm</guid>
      <description>&lt;h2&gt;
  
  
  The Question That Started It All
&lt;/h2&gt;

&lt;p&gt;It all began with a simple LinkedIn post titled "When is Monitoring Enough?" while I was building a Grafana dashboard for Apache Ignite. The question hit me like a lightning bolt: &lt;em&gt;When is enough, enough?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We live in a world where databases demand robust monitoring, and countless tools promise to make our lives easier. Yet in practice, these tools often become part of the problem. They're either excessive for our needs, missing critical features, or simply add to the noise rather than providing clarity.&lt;/p&gt;

&lt;p&gt;Meanwhile, business requirements push us toward ever-increasing system complexity. We end up in one of two extremes: drowning in monitoring data we can't use, or flying blind without the observability we desperately need.&lt;br&gt;
So the riddle remains: &lt;strong&gt;How much monitoring is truly enough?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitoring isn't as simple as it looks
&lt;/h2&gt;

&lt;p&gt;You might handle it over to your infrastructure engineers or DBRE with a thought that they will sort it all out, and the case is solved. But here's the problem: &lt;strong&gt;&lt;em&gt;If you don't understand what you're looking at, how can you find the root cause of performance issues?&lt;/em&gt;&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Installing hundreds of dashboards doesn't magically solve your problems. Without understanding, monitoring becomes a maze rather than a map.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxkcfqzd0y3f2q3tqa95.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxkcfqzd0y3f2q3tqa95.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We've encountered a dozen scenarios like this one:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Critical issue strikes&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alerts fire everywhere&lt;/strong&gt; - but which one matters?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dashboards show data&lt;/strong&gt; - but what does it mean?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hours pass&lt;/strong&gt; while you hunt for the real problem&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge gaps&lt;/strong&gt; turn a 5-minute fix into a nightmare&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The harsh truth: &lt;em&gt;An inadequate monitoring system can be worse than no monitoring at all.&lt;/em&gt; It gives false confidence while hiding real problems and thus takes us away.&lt;/p&gt;

&lt;p&gt;When it comes to databases, monitoring isn't just about collecting metrics - it's about understanding what to monitor. Your ops engineers might integrate a thousands of dashboards, hundred alerts, though these don't match your needs, it just turns a system into burden.&lt;/p&gt;

&lt;p&gt;The real question becomes: &lt;strong&gt;"How do we build a monitoring system that actually helps?"&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Abundance Trap
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyn83iidsa9tcsz0lsmpw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyn83iidsa9tcsz0lsmpw.png" alt=" " width="724" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Having too many options can paralyze decision-making. When everything seems important, nothing is. You face critical questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which metrics actually matter for YOUR use case?&lt;/li&gt;
&lt;li&gt;How do you interpret these metrics correctly?&lt;/li&gt;
&lt;li&gt;What thresholds indicate real problems vs. normal fluctuations?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The abundance that should empower you instead creates confusion during critical moments - exactly when you need clarity most.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separating Business Needs from Technical Noise
&lt;/h2&gt;

&lt;p&gt;I once worked with a team of developers who had imported pre-built Grafana dashboards. They didn't understand half of what they were looking at and where to look at. I must say the dashboards were impressive, though at the second glance I realized these dashboards were built not for them, and didn't help developers team to solve their problems. When problems hit, the team spent more time trying to decode the dashboards than fixing the issues.&lt;/p&gt;

&lt;p&gt;Through painful experience I learned that most monitoring fails not because it shows too little, but because it shows too much. Every additional metric, graph, or alert adds cognitive weight. A radical idea appeared in my head: &lt;strong&gt;Start by removing, not adding.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;The dashboard (and metrics) must achieve three simple things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simplicity&lt;/strong&gt; - can we understand what we are looking at;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clarity&lt;/strong&gt; - the unmistakable message, yet plain, like "Low memory", not "OOM: Out of memory exception";&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actionability&lt;/strong&gt; - tells you what to do next, bringing clear response.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I made a conclusion in the end of refactoring: &lt;strong&gt;Simplicity isn't dumbing down - it's smartening up.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Manage Monitoring Complexity And Build Your Own Philosophy
&lt;/h2&gt;

&lt;p&gt;Research in software engineering shows that our brains can only handle limited complexity. Cognitive load has been widely studied to help understand human performance. When monitoring becomes too complex, it stops helping and starts hurting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fosvise6tfs34r00lvbg3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fosvise6tfs34r00lvbg3.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Consider these cognitive limits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Working memory&lt;/strong&gt;: Can hold 5-9 items at once&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attention span&lt;/strong&gt;: Drops significantly after 20 minutes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context switching&lt;/strong&gt;: Each switch costs 15-25 minutes of productivity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You shouldn't also ignore the impact of "why" questions for business. By asking such questions as "why do we need it", "why monitor performance" and etc., you can achieve and work out flexible principles which can be rather applied as your own philosophy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Monitor for decisions, not data&lt;/strong&gt; - a potiential action is prefered;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Respect human limitations&lt;/strong&gt; - keep the obvious in plain sight;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embrace imperfection&lt;/strong&gt; - enough monitoring that people use beats perfect monitoring they don't;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Iterate relentlessly&lt;/strong&gt; - start simple and based on actual incidents.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;After building monitoring systems for various databases and learning from actual incidents, I've learned that the question isn't "How much can we monitor?" but rather "What monitoring serves our actual needs?"&lt;/p&gt;

&lt;p&gt;Like a car dashboard that shows speed, fuel, and warnings - not every detail of engine operation - your database monitoring should surface what matters for safe operation, not everything that's technically possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remember:&lt;/strong&gt; The goal isn't to monitor everything. It's to understand your system well enough to monitor the right things.&lt;/p&gt;

&lt;p&gt;Start small. Stay focused. Iterate based on reality, not anxiety.&lt;/p&gt;

&lt;p&gt;And most importantly, always ask yourself: "If this metric changes, what will I do differently?"&lt;/p&gt;

&lt;p&gt;If the answer is "nothing," you've found a metric you don't need.  &lt;/p&gt;

</description>
      <category>database</category>
      <category>monitoring</category>
      <category>softwarephilosophy</category>
      <category>dbre</category>
    </item>
    <item>
      <title>Databases: Why Does It Matter What We Choose?</title>
      <dc:creator>di(nara) critskaya</dc:creator>
      <pubDate>Tue, 14 Mar 2023 16:46:25 +0000</pubDate>
      <link>https://forem.com/critskiy/databases-why-does-it-matter-what-we-choose-3o3k</link>
      <guid>https://forem.com/critskiy/databases-why-does-it-matter-what-we-choose-3o3k</guid>
      <description>&lt;p&gt;As we all know, database in terms of a project is its vital part, but its vitality depends on decision we make throughout whole development cycle. Databases integrated our life in with such meanings as 'relational' and 'hierarchical' models, but, since those times we have had a dozen databases, and each suggests the solution we need, but in the end our project starts 'suffering' from our decisions related to database we choose and approaches we make.&lt;/p&gt;

&lt;p&gt;Traditional DBMS, NoSQL, NewSQL, - we do not lack them, but we do lack the solution and make even wrong one, afterwards having issues on networks or query performance, without saying about obvious business needs. You could solve all these problems by having DBA, but they're not a silver bullet; they can solve your project issues on db, but as far as it's possible.&lt;/p&gt;

&lt;p&gt;So, the question "How to choose and design database for project needs and not to stuck with that?" should concern us at first place. Constantly, the path to it shouldn't be as hard as it seems be first time. This is why this article will try to explain (not to give your a proper path) how you could build a pattern due to your databases problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  What problems can we have?
&lt;/h2&gt;

&lt;p&gt;In the means of 'problems', there can be identified three main large factors: technology, human, economy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technologies
&lt;/h3&gt;

&lt;p&gt;Here, your project can be troubled with its current stage of development: rather it's MVP or PoC, or even production-ready. While PoC suggests maneuvers and lacks data certainty, MVP already has its real data for database which is chosen during first iteration, but on the other hand, MVP can have economiс uncertainty that leads up to tech debt in possible future.&lt;/p&gt;

&lt;p&gt;Meanwhile, production-ready project has all we need: database, data, code, integrated -ops cultures to be better, nevertheless it can't avoid possibility to have serious issues with databases or its replica sets across multiple servers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Humans
&lt;/h3&gt;

&lt;p&gt;With technologies, one of project critical part is human factor. Data misconception due to final product subtlety or either misunderstanding between client and team can lead to tech debt or performance issue in production environment and cause mistrust in a team towards each other as a consequence.&lt;/p&gt;

&lt;p&gt;In addition to what was said above, there also should be mentioned that chaotic management process and current project bad engineering culture can accelerate databases issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  Economy
&lt;/h3&gt;

&lt;p&gt;Once in a while, mostly economy isn't the strong side of the project. Occasionally, customer doesn't understand how much it will cost to make desirable data available; team doesn't know how much they're going to spend on database cluster. In a few cases, team or their management can't decide whether it's better and cheaper to support database cluster with their own DBA or buy support on other side.&lt;/p&gt;

&lt;h2&gt;
  
  
  OK, but what about examples?
&lt;/h2&gt;

&lt;p&gt;Yet, there haven’t been shown any examples so far. Let's answer the questions from our point:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;When was the last time you issued problems with database concerning technological side of the project?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When did you last argue on issues involving databases?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Were your calculation made right about database maintenance?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you answered all these questions above, - you can skip this chapter. If not, -  let's see the examples, though you should understand that all following situations may never occur.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Example 1&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A team is not satisfied with current database performance and want as well to increase it by 30-40%, but they find out that not only speed was one of their concerns, however it was also about stability. The question was: "How can we improve performance to be sure that 99.99% of our queries will reach our SLA goal?". As the result of their desperate search next conclusions are made: sharding, upgrade or either it's the table.&lt;/p&gt;

&lt;p&gt;Even so, all conclusions are worrisome. If they pick sharding, there can be network or read/write problems; in case of upgrades team can encounter financial risks or downgrade. The final conclusion - the table itself or database - waste of time that they lack.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Example 2&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
Meet Marlene and Yevhen. Marlene is a database expert whereas Yevhen is a developer. Although they’re different, they work in a team so far; their teammates know Marlene and Yevhen can dispute occasionally when it comes up to a database. This time wasn't an exclusion.&lt;/p&gt;

&lt;p&gt;Marlene was concerned that Yevhen's task solution might bring troubles in the future and could unexpectedly lead database to such mistake as OOM and database might end up dead. Yevhen kept on saying quite the opposite and tried to reassure team that his solution could solve client's trouble.&lt;/p&gt;

&lt;h2&gt;
  
  
  How R&amp;amp;D could solve it?
&lt;/h2&gt;

&lt;p&gt;As much as we'd like to satisfy our needs and customers as well, we should understand the importance of engineering culture, or precisely the innovation part, which is likely to be considered one of the factors of company survival. Indeed, it can also become a burden nonetheless. But that's not the point.&lt;/p&gt;

&lt;p&gt;Right now let's see how r&amp;amp;d could help us bring more transparency due to database. We could divide our research and development cycle into four steps: theorize, explore, design &amp;amp; develop with further tests implementation, implement our solution itself and improve.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZxkEyN2M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lovyffs6xevonescnkcl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZxkEyN2M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lovyffs6xevonescnkcl.png" alt="Wikipedia Image" width="880" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let us seek how it can be scaled up to databases' problems below.&lt;/p&gt;

&lt;h3&gt;
  
  
  Theorize (and synthesize)
&lt;/h3&gt;

&lt;p&gt;In means of theorization, we should provide information on research object and exploration's direction. Clearly, we should form here the research object along with known SRE terms: SLA, SLO, SLI. Although, we should remember about trade-offs by two points of view - customer's and team's. While customer defines kind of information he needs to see on final stage, engineering team should present liability to support client's demands regarding needs (from technological aspect up to economy).&lt;/p&gt;

&lt;p&gt;Looking back to our examples, we can see that team in &lt;em&gt;Example 1&lt;/em&gt; mostly made a few assumptions (sharding, hardware upgrade and database schema refactoring), whilst Marlene and Yevhen have disagreements due to indicators and agreement with client (Marlene is sure that Yevhen's decision will affect SLA; Yevhen's opinion is all about SLI).&lt;/p&gt;

&lt;h3&gt;
  
  
  Explore (hypothesize and clarify)
&lt;/h3&gt;

&lt;p&gt;We're trying to make all our theoretical beliefs real here, approving or rejecting client's needs. The desired result is feasibility study along with pilot study; these papers will answer such questions as "Did we get what we wanted? Are there any risks during development or after implementing client needs?" Mostly, it's our first attempt to implement and develop features for database and client's data, - it can be either database schema integration or adding more capabilities to almost existing cluster.&lt;/p&gt;

&lt;p&gt;It's okay to identify non-standard situations and experiment with them. As far as we go deeper into details, we’ll make sure that further implementation and design process will be definitely worth the low cost.&lt;/p&gt;

&lt;p&gt;In examples above, the team from &lt;em&gt;Example 1&lt;/em&gt; will make experiments to solve all the puzzles in test environment, from tracing query and explain plans till database schema refactoring; for &lt;em&gt;Example 2&lt;/em&gt; Marlene and Yevhen, who are suffering from lack of communication, will sit and absorb their knowledge using 'pair programming'.&lt;/p&gt;

&lt;h3&gt;
  
  
  Design, develop and test
&lt;/h3&gt;

&lt;p&gt;The necessity of domain knowledge is important nowadays besides tech skills. So to say, each team member should also understand that willy-nilly he can be replaced at any time. Client won't catch the thing you're saying if you're gonna explain to him technical aspects of feature implementation; he is concerned about his business demands and expects from you the same understanding of what he sees by output based on data he provided you with.&lt;/p&gt;

&lt;p&gt;The most part of r&amp;amp;d staff is here, in this step. We develop feature and make sure that it will meet SLA we made while building theories. Hereby, we should contribute to documentation and project knowledge base for future team members to work along with us or instead of us; quality assurance should mean the same as development, besides, QA will make sure that our database enhancement or data meets business requirements.&lt;/p&gt;

&lt;p&gt;The team didn’t expect that the problem was so simple: the index that caused so much trouble and some optimizations the made a while ago, lead to their current problem. They decided to rollback some of their doings and made a post mortem study, in which they told that it was not only the database's problem but also their misknowledge of its internals. Marlene and Yevhen made out a solution that met their both expectations, in addition to team's client was excited about modifications included to output and approved it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Implement and improve
&lt;/h3&gt;

&lt;p&gt;The conclusion is successful implementation and data output to client. Nonetheless, the improvements will still be made, but not as fast as it possible, but as fat as it suits us and our client. Of course, it's also about minor bug and fixes to be released after our database changes: from migration and up to altering value type (if it's possible of course).&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;If you build the system, you should remember that it's not only the code and performance matters. By making approach to r&amp;amp;d, you can improve current team's engineering culture and build up a system where database won't be turn into a catastrophe, but will be controlled and data will meet client's needs.&lt;/p&gt;

</description>
      <category>database</category>
      <category>engineering</category>
      <category>architecture</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
