open atlas

observability

Наблюдаемость

Как видеть, что делает работающая система, — через логи, метрики и трейсы, — чтобы, когда что-то сломалось в три ночи, ты действительно мог понять причину.

9 юнитов·87 уроков·~50 ч

Начать трек
00

С нуля

Перед senior-материалом: что вообще такое наблюдаемость (observability) и горстка слов, которые остальной трек считает уже знакомыми.
01

Три pillar'а: метрики, логи и трейсы

Метрики, логи и трейсы — каждый отвечает на свой вопрос дешевле всего. Join-ключи и exemplar'ы делают их компонуемыми в единую навигационную поверхность.
02

Структурное логирование: схема, levels, редакция

Почему продакшн-логи в 2026 — это JSON-или-ничего, что реально содержит рабочая схема лога, как levels и sampling контролируют счёт, и почему PII-дисциплина и log injection — это инженерные заботы первого порядка, а не доп. опции.
03

OpenTelemetry: API, SDK, Collector, OTLP

Четыре части OTel — API, к которому обращается код, SDK, собирающий телеметрию, Collector, обрабатывающий и маршрутизирующий её, и OTLP как wire-формат — и как многослойная модель даёт инструментировать однажды и менять backend без переписывания кода.
04

RED и USE: две половины каждого дашборда

Почему RED (Rate, Errors, Duration) описывает сервис со стороны клиента, USE (Utilization, Saturation, Errors) описывает ресурсы со стороны ядра, и почему senior-инженеры запускают оба чек-листа — плюс налог на cardinality, который наказывает за наивные label.
05

SLI, SLO и error budget: надёжность в числах

SLI — отношение good/total; SLO — цель; error budget = 1 − SLO. MWMBR-алертинг, error budget policy, SLO-платформы и культурный паттерн внедрения, превращающий арифметику в решения.
06

Trace propagation: заголовки, сшивающие сервисы воедино

Почему W3C-заголовок traceparent — это 55-байтная несущая строка, превращающая 50 разрозненных сервисов в один навигируемый трейс, как baggage переносит контекст через async-границы, и как head vs tail sampling решают, какие трейсы выживут.
07

Profiling: куда реально ушли CPU и байты

Как sampling profiler превращают непропорциональную долю CPU в flame graph, читаемый за 60 секунд, как eBPF и continuous profiling смотрят за production с 2-5% overhead, и как on-CPU vs off-CPU профили отвечают на разные вопросы об одном медленном запросе.
08

Соединяем всё: production-observability-история

Как RED + USE + SLO + traces + profiles складываются в одну debugging-петлю, как OpenTelemetry унифицирует четыре сигнала через один SDK и один wire-format, и что 'наблюдаемость, которая окупается' реально значит на production-масштабе.

Проекты по этому треку

Guided-проекты, которые закрепляют изученное здесь.

◆ Проекты

Совместные курсоры

Показать живой курсор и выделение каждого подключённого пользователя в общем документе, без конфликтов, через WebSocket.

◆ Проекты

Конкурентный сервис ингеста на Go

Собери конкурентный воркер ингеста/фан-аута на Go — а затем эксплуатируй его: ограничь работу, примени backpressure, сделай вызовы downstream устойчивыми к отказам, выкати в минимальном контейнере и разбери инцидент с утечкой горутин, пока он не съел твою память.

◆ Проекты

Сервис RAG с опорой на источники

Демо RAG, отвечающее по корпусу, собирается легко; сервис RAG, которому ты доверишь живых пользователей, — нет. Сложность не в поиске, а в опоре на источники: заставить модель говорить только то, что подтверждает найденный текст, прикреплять цитаты, которые читатель может проверить, и доказать на eval-наборе, что ответы не уплывают в уверенную выдумку. Ты соберёшь весь цикл — нарезка, эмбеддинги, хранилище, retrieval top-k, опора, цитаты, оценка — и нащупаешь, где именно он течёт.

◆ Проекты

Планировщик задач

Планировщик задач cron + backoff с доставкой at-least-once, идемпотентными обработчиками и visibility timeout — чтобы ни одна задача не терялась молча, даже при краше воркера на середине выполнения.

◆ Проекты

Next.js-приложение в продакшен

Собери мультитенантное контент-приложение на App Router — а потом эксплуатируй его: закрой авторизацию и секреты, наслои кэши, реши каждый выбор edge-vs-node и разберись с инцидентом, когда один тенант отравляет общую ISR-страницу.

◆ Проекты

Мини OAuth 2.0 + PKCE логин

Реализуй поток authorization-code + PKCE целиком против реального провайдера, чтобы понять каждый редирект и токен, а не доверять библиотеке.

◆ Проекты

Асинхронный Python-сервис: собрать и эксплуатировать

Собери асинхронный FastAPI-сервис приёма, который валидирует, прогоняет через пайплайн и выдерживает нагрузку, — а потом эксплуатируй его: упакуй, контейнеризуй с корректным поведением PID-1 и разберись с инцидентом, когда проглоченный CancelledError тихо протекает задачами, пока event loop не начинает голодать.

◆ Проекты

Распределённый rate limiter

Собери token-bucket лимитер, который держится поперёк многих инстансов приложения за счёт счётчика в Redis, а не в памяти процесса.

◆ Проекты

React-фича под нагрузкой

Выкати одну настоящую production-фичу на React — живой совместный дашборд активности — а потом эксплуатируй её: оптимистичные правки, стриминговые обновления, бюджет на кадр, полную доступность и разбор инцидента, когда render-шторм замораживает вкладку.

◆ Проекты

URL-сокращатель под нагрузкой

Собери URL-сокращатель, который выдерживает настоящий трафик, — а потом эксплуатируй его: задеплой, наблюдай и разберись с инцидентом, когда одна горячая ссылка плавит твой кэш.

◆ Проекты

Виртуальная таблица данных

Отрисуй и плавно прокручивай 100 тыс. строк на 60fps с windowing-виртуализацией, залипающими заголовками и полной клавиатурной навигацией — без библиотек, только математика.

Следующий трек

Деплой и инфра

Как твой код попадает с ноутбука на боевые серверы — упаковка в контейнеры, выкладка новых версий без простоя и описание инфраструктуры кодом.