<?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>DEV Community: Mansur Fattakhov</title>
    <description>The latest articles on DEV Community by Mansur Fattakhov (@fattakhov).</description>
    <link>https://dev.to/fattakhov</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4122926%2Fd92a7478-2662-4406-9360-c4c7b3797890.jpg</url>
      <title>DEV Community: Mansur Fattakhov</title>
      <link>https://dev.to/fattakhov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fattakhov"/>
    <language>en</language>
    <item>
      <title>How Developers Can Monitor Production — and Why It Matters</title>
      <dc:creator>Mansur Fattakhov</dc:creator>
      <pubDate>Sun, 13 Sep 2026 08:21:47 +0000</pubDate>
      <link>https://dev.to/fattakhov/how-developers-can-monitor-production-and-why-it-matters-9pm</link>
      <guid>https://dev.to/fattakhov/how-developers-can-monitor-production-and-why-it-matters-9pm</guid>
      <description>&lt;p&gt;When we write code, it often feels like the main thing is to make it work locally. But reality is different: the &lt;em&gt;real&lt;/em&gt; life of a service begins not on your laptop, but in production. That’s where it faces load, unpredictable users, and dozens of unexpected situations.  &lt;/p&gt;

&lt;p&gt;Many developers think of monitoring and logs as “something for DevOps.” Let them look at the graphs and figure out why the service crashed. But the truth is: &lt;strong&gt;observability is a developer’s tool first&lt;/strong&gt;. It helps you quickly understand what went wrong and fix a bug before it turns into a midnight call from support.  &lt;/p&gt;

&lt;p&gt;In this post I’ll explain:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧐 why metrics and dashboards are important,
&lt;/li&gt;
&lt;li&gt;🔧 how developers can actually use them,
&lt;/li&gt;
&lt;li&gt;🚨 and why without observability you’re basically “flying blind” in production.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What Is Observability (in simple words)
&lt;/h2&gt;

&lt;p&gt;Any service lives in two worlds:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌍 the code world, where you’re in control with &lt;code&gt;print&lt;/code&gt; or breakpoints,
&lt;/li&gt;
&lt;li&gt;🌍 and the production world, where the system runs under load, with real users and unpredictable inputs.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Observability&lt;/strong&gt; is how you understand &lt;em&gt;what’s happening inside&lt;/em&gt; without looking directly into the code.  &lt;/p&gt;

&lt;p&gt;The three “pillars” are:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📜 &lt;strong&gt;Logs&lt;/strong&gt; — text outputs (errors, requests, events). Answer: &lt;em&gt;“what happened?”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;Metrics&lt;/strong&gt; — numbers (request counts, response times, memory usage). Answer: &lt;em&gt;“how is it working?”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;🧵 &lt;strong&gt;Traces&lt;/strong&gt; — following one request across multiple services. Answer: &lt;em&gt;“why is it working this way?”&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, they give you a complete picture: find bottlenecks, debug errors, and see how changes affect production.  &lt;/p&gt;




&lt;h2&gt;
  
  
  The Main Tools (and Why These)
&lt;/h2&gt;

&lt;p&gt;There are many monitoring products out there — from Datadog and New Relic to Dynatrace. In practice, most projects I see use the &lt;strong&gt;Grafana Labs + Prometheus ecosystem&lt;/strong&gt;.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;⏱ &lt;strong&gt;Prometheus&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The de-facto standard for metrics collection.
&lt;/li&gt;
&lt;li&gt;Simple model: the service exposes metrics via HTTP, Prometheus “scrapes” them.
&lt;/li&gt;
&lt;li&gt;Powerful query language (PromQL).
&lt;/li&gt;
&lt;li&gt;Tons of exporters: MySQL, PostgreSQL, Nginx, Docker, etc.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📈 &lt;strong&gt;Grafana&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Universal visualization tool.
&lt;/li&gt;
&lt;li&gt;Works not only with Prometheus but also with Loki, Elastic, Postgres, and more.
&lt;/li&gt;
&lt;li&gt;Great dashboards, alerts, annotations.
&lt;/li&gt;
&lt;li&gt;Huge marketplace of ready-to-use dashboards.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📜 &lt;strong&gt;Loki&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Centralized logging system with Prometheus-like syntax.
&lt;/li&gt;
&lt;li&gt;Much lighter than Elasticsearch.
&lt;/li&gt;
&lt;li&gt;Perfectly integrated with Grafana — jump from a metric to the exact log line.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🧵 &lt;strong&gt;Tempo / Jaeger&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Distributed tracing.
&lt;/li&gt;
&lt;li&gt;Shows the full path of a request across multiple services — essential for microservices.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why developers love this stack:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✔️ open source — no license cost, easy to start&lt;br&gt;&lt;br&gt;
✔️ low entry barrier — a basic dashboard in a couple of hours&lt;br&gt;&lt;br&gt;
✔️ one ecosystem — everything integrates&lt;br&gt;&lt;br&gt;
✔️ scalable — from pet projects to highload  &lt;/p&gt;




&lt;h2&gt;
  
  
  How Developers Can Actually Use It
&lt;/h2&gt;

&lt;p&gt;Here are some everyday scenarios:  &lt;/p&gt;

&lt;p&gt;🔎 &lt;strong&gt;1. Found a bug you can’t reproduce&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User says: &lt;em&gt;“The button doesn’t work.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Search in Loki by &lt;code&gt;request_id&lt;/code&gt; or exception text.
&lt;/li&gt;
&lt;li&gt;You see the stacktrace → problem identified.
👉 Result: no more “works on my machine.”
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚡ &lt;strong&gt;2. Service slows down after a release&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Grafana shows latency doubled after yesterday’s deploy.
&lt;/li&gt;
&lt;li&gt;Drill down into endpoint metrics → find the culprit.
&lt;/li&gt;
&lt;li&gt;Check logs for parameters.
👉 Result: you know exactly what broke.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🧮 &lt;strong&gt;3. Optimizing SQL queries&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add metrics for query count and duration.
&lt;/li&gt;
&lt;li&gt;Grafana shows the heaviest queries.
&lt;/li&gt;
&lt;li&gt;Compare before/after optimization.
👉 Result: real data, not gut feeling.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🚨 &lt;strong&gt;4. Reacting to alerts yourself&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rule: “if 5xx &amp;gt; 5% over 5 minutes → send alert.”
&lt;/li&gt;
&lt;li&gt;Notifications in Slack/Telegram.
👉 Result: developers react instantly, not a day later via support.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🛠️ &lt;strong&gt;5. Your own “developer dashboard”&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A few panels: error rates, latency, top endpoints.
👉 Result: all essentials in one place.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  A Real Project Example
&lt;/h2&gt;

&lt;p&gt;I joined a growing gaming project (FastAPI + MySQL) as a part-time engineer. It was unstable — clients often complained that the game wouldn’t load.  &lt;/p&gt;

&lt;p&gt;What I found:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ no log collection,
&lt;/li&gt;
&lt;li&gt;❌ Grafana only had node-exporter metrics nobody watched.
The project was flying blind.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1. Logs&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up Loki with JSON format.
&lt;/li&gt;
&lt;li&gt;Added request/response logs, duration, endpoint filtering.
&lt;/li&gt;
&lt;li&gt;Super fast search via Docker plugin.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2. Metrics&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added HTTP latency, DB transaction times, response statuses, concurrent requests.
&lt;/li&gt;
&lt;li&gt;Finally saw the full load picture.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3. Problem discovery&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MySQL queries crashing → fixed with connection pooling.
&lt;/li&gt;
&lt;li&gt;httpx connection pool overloading → fixed.
&lt;/li&gt;
&lt;li&gt;Long queries → Percona Monitoring and Management → cleaned up DB load.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 4. Alerts&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;500 errors after release.
&lt;/li&gt;
&lt;li&gt;RabbitMQ queue overflow.
&lt;/li&gt;
&lt;li&gt;Network issues.
&lt;/li&gt;
&lt;li&gt;Payment provider outages → switch to backup quickly.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The result:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ from black box → transparent system
&lt;/li&gt;
&lt;li&gt;✅ developers could debug themselves
&lt;/li&gt;
&lt;li&gt;✅ support and ops stopped firefighting
&lt;/li&gt;
&lt;li&gt;✅ downtime minimized → saved money
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What About Tracing?
&lt;/h2&gt;

&lt;p&gt;Tracing is important, especially in microservices. But for basics, I use a simpler approach: passing a &lt;strong&gt;&lt;code&gt;request_id&lt;/code&gt; across all services&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;That lets me track a request in Loki end-to-end across the ecosystem. It’s not as powerful as Jaeger or Tempo, but it covers 80% of a developer’s needs.  &lt;/p&gt;




&lt;h2&gt;
  
  
  A Minimal Observability Checklist
&lt;/h2&gt;

&lt;p&gt;If your project has nothing yet, start small — 20% effort for 80% results:  &lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Logs&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Centralized (Loki/EFK)
&lt;/li&gt;
&lt;li&gt;JSON format
&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;request_id&lt;/code&gt; and duration
&lt;/li&gt;
&lt;li&gt;Filter by endpoint/error level
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ &lt;strong&gt;Metrics&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP latency
&lt;/li&gt;
&lt;li&gt;Response statuses (2xx/4xx/5xx)
&lt;/li&gt;
&lt;li&gt;Concurrent requests
&lt;/li&gt;
&lt;li&gt;DB transaction times
&lt;/li&gt;
&lt;li&gt;Queue load
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ &lt;strong&gt;Database&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MySQL/Postgres exporter
&lt;/li&gt;
&lt;li&gt;Track slow queries, deadlocks
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ &lt;strong&gt;Alerts&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5xx error threshold
&lt;/li&gt;
&lt;li&gt;Queue overflow
&lt;/li&gt;
&lt;li&gt;Service outages
&lt;/li&gt;
&lt;li&gt;DB overload
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ &lt;strong&gt;Team Interface&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Base Grafana dashboard: errors, latency, load
&lt;/li&gt;
&lt;li&gt;A “developer dashboard” with API essentials
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 With just this, your project stops being a black box. Everything else — tracing, business dashboards, analytics — can be added gradually.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://mind.mansur.expert/en/how-developers-can-monitor-production-and-why-it-matters/" rel="noopener noreferrer"&gt;mind.mansur.expert&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>observability</category>
      <category>devops</category>
      <category>monitoring</category>
      <category>backend</category>
    </item>
    <item>
      <title>How to Bring Order to a Project: A Track Map</title>
      <dc:creator>Mansur Fattakhov</dc:creator>
      <pubDate>Sun, 13 Sep 2026 08:21:43 +0000</pubDate>
      <link>https://dev.to/fattakhov/how-to-bring-order-to-a-project-a-track-map-4db2</link>
      <guid>https://dev.to/fattakhov/how-to-bring-order-to-a-project-a-track-map-4db2</guid>
      <description>&lt;p&gt;Every now and then I join a project where "everything works, but nobody dares to touch it." Deployment is done by hand from memory, the architecture grew historically, knowledge lives in people's heads, hiring happens by accident. That's normal: this is what almost any project looks like when it grows faster than it matures.&lt;/p&gt;

&lt;p&gt;You don't bring order to a project like that in one heroic push. What works is different: split the chaos into tracks, take small steps within each track, and make every step pay off immediately. Below is my complete plan — what to do, in what order, and why. Each track will get its own deep-dive article; this is the map.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use this plan
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Snapshot first, then light, then changes.&lt;/strong&gt; Don't fix anything until you can see what's going on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tracks run in parallel&lt;/strong&gt;, at different speeds — push the one that hurts right now.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A step must fit into a week.&lt;/strong&gt; If it doesn't, it's not a step, it's a project; keep cutting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every touch leaves a trace&lt;/strong&gt;: touched a service — bring it closer to the standard; figured out a piece of the system — write it down.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Track 0. State snapshot
&lt;/h2&gt;

&lt;p&gt;One week, fix nothing — only look and write down.&lt;/p&gt;

&lt;p&gt;⬜ Service map: what exists, where it lives, who deploys it and how&lt;br&gt;&lt;br&gt;
⬜ The "scary places" list — things people describe as "better not touch it"&lt;br&gt;&lt;br&gt;
⬜ Who knows what: which knowledge has a single carrier&lt;br&gt;&lt;br&gt;
⬜ Top 5 risks — one page, in plain human language&lt;/p&gt;

&lt;p&gt;💬 The main artifact of this stage is not a document but a picture in your head. The document is a way to verify it: show it to the team, let them correct you.&lt;/p&gt;

&lt;p&gt;📖 Full article: &lt;a href="https://mind.mansur.expert/en/state-snapshot-first-week-on-a-new-project/" rel="noopener noreferrer"&gt;the state snapshot — your first week on a new project&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Track 1. Observability — turn on the lights
&lt;/h2&gt;

&lt;p&gt;⬜ Centralized, structured logs&lt;br&gt;&lt;br&gt;
⬜ HTTP and database metrics&lt;br&gt;&lt;br&gt;
⬜ 3–5 alerts for the things that actually wake you up at night&lt;br&gt;&lt;br&gt;
⬜ A request_id passed through every service&lt;/p&gt;

&lt;p&gt;💬 This track goes first because it makes every other track cheaper: any change is visible, any incident takes minutes to investigate instead of "going by gut feeling."&lt;/p&gt;

&lt;p&gt;📖 Full article: &lt;a href="https://mind.mansur.expert/en/how-developers-can-monitor-production-and-why-it-matters/" rel="noopener noreferrer"&gt;how developers can monitor production — and why it matters&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Track 2. Infrastructure and deployment
&lt;/h2&gt;

&lt;p&gt;⬜ CI/CD on the most frequently deployed service&lt;br&gt;&lt;br&gt;
⬜ Configuration in git, not on servers&lt;br&gt;&lt;br&gt;
⬜ A reference service template: structure, Dockerfile, healthcheck, pipeline&lt;br&gt;&lt;br&gt;
⬜ Rule: new services only from the template; old ones catch up as you touch them&lt;/p&gt;

&lt;p&gt;💬 The goal of this track is for deployment to stop being an event and stop being one person's knowledge. The success marker: a Friday deploy scares no one.&lt;/p&gt;

&lt;p&gt;📖 Full article: &lt;a href="https://mind.mansur.expert/en/infrastructure-and-deployment-order-by-iteration/" rel="noopener noreferrer"&gt;infrastructure and deployment — order by iteration&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Track 3. Architecture
&lt;/h2&gt;

&lt;p&gt;⬜ Draw the system "as is" — honestly, without prettifying&lt;br&gt;&lt;br&gt;
⬜ Find the boundaries: what is genuinely a separate service and what got glued together by accident&lt;br&gt;&lt;br&gt;
⬜ Start a decision log — short records, half a page: what was decided and why&lt;br&gt;&lt;br&gt;
⬜ Tech debt — an explicit list with a price tag: what it blocks, what it slows down, what a fix costs&lt;/p&gt;

&lt;p&gt;💬 The most common mistake is to start by rewriting. Start by writing down: half of the "architecture problems" dissolve once the system is described as it actually is.&lt;/p&gt;

&lt;p&gt;📖 Full article: &lt;a href="https://mind.mansur.expert/en/architecture-write-it-down-before-rewriting/" rel="noopener noreferrer"&gt;architecture — write it down before rewriting&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Track 4. People
&lt;/h2&gt;

&lt;p&gt;⬜ Bus factor from the Track 0 map: wherever knowledge lives in one head — pair people up or document first&lt;br&gt;&lt;br&gt;
⬜ Onboarding: working environment within a day, first production task within a week&lt;br&gt;&lt;br&gt;
⬜ Hiring: write the job post from the project's real tasks, not from a list of technologies&lt;br&gt;&lt;br&gt;
⬜ Explicit ownership: every service has a name next to it&lt;/p&gt;

&lt;p&gt;💬 Order among people matters more than order in code: code with a bus factor of 1 is not an asset, it's a hostage. And the other way around — a team where knowledge flows freely can fix any code.&lt;/p&gt;

&lt;p&gt;📖 Full article: &lt;a href="https://mind.mansur.expert/en/people-bus-factor-expectations-and-day-one/" rel="noopener noreferrer"&gt;people — bus factor, expectations and day one&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Track 5. Processes
&lt;/h2&gt;

&lt;p&gt;⬜ Planning that survives a week: a short cycle, a visible backlog&lt;br&gt;&lt;br&gt;
⬜ A release rhythm — predictable, boring, documented&lt;br&gt;&lt;br&gt;
⬜ Incidents: blameless reviews with one action item each&lt;br&gt;&lt;br&gt;
⬜ Meetings — audit them: each one either produces decisions or dies&lt;/p&gt;

&lt;p&gt;💬 Processes come last not because they don't matter, but because without light (Track 1) and hands on the wheel (Track 2) any process is theater.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to tell the order has arrived
&lt;/h2&gt;

&lt;p&gt;Not by pretty dashboards. By how the team feels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;deploying is not scary,&lt;/li&gt;
&lt;li&gt;a new person is useful in their first week,&lt;/li&gt;
&lt;li&gt;an incident is a procedure, not a panic,&lt;/li&gt;
&lt;li&gt;the question "why is it like this here?" has a written answer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You'll never reach perfection — and you don't need to. It's enough that every week feels a little calmer than the last one.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is the map of the series: links in the tracks will come alive as articles are published. Want a specific track covered sooner — tell me, the queue is flexible.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://mind.mansur.expert/en/how-to-bring-order-to-a-project-track-map/" rel="noopener noreferrer"&gt;mind.mansur.expert&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>devops</category>
      <category>leadership</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
