observability
Наблюдаемость
Как видеть, что делает работающая система, — через логи, метрики и трейсы, — чтобы, когда что-то сломалось в три ночи, ты действительно мог понять причину.
Начать трек →С нуля
Перед senior-материалом: что вообще такое наблюдаемость (observability) и горстка слов, которые остальной трек считает уже знакомыми.Три pillar'а: метрики, логи и трейсы
Метрики, логи и трейсы — каждый отвечает на свой вопрос дешевле всего. Join-ключи и exemplar'ы делают их компонуемыми в единую навигационную поверхность.Структурное логирование: схема, levels, редакция
Почему продакшн-логи в 2026 — это JSON-или-ничего, что реально содержит рабочая схема лога, как levels и sampling контролируют счёт, и почему PII-дисциплина и log injection — это инженерные заботы первого порядка, а не доп. опции.OpenTelemetry: API, SDK, Collector, OTLP
Четыре части OTel — API, к которому обращается код, SDK, собирающий телеметрию, Collector, обрабатывающий и маршрутизирующий её, и OTLP как wire-формат — и как многослойная модель даёт инструментировать однажды и менять backend без переписывания кода.RED и USE: две половины каждого дашборда
Почему RED (Rate, Errors, Duration) описывает сервис со стороны клиента, USE (Utilization, Saturation, Errors) описывает ресурсы со стороны ядра, и почему senior-инженеры запускают оба чек-листа — плюс налог на cardinality, который наказывает за наивные label.SLI, SLO и error budget: надёжность в числах
SLI — отношение good/total; SLO — цель; error budget = 1 − SLO. MWMBR-алертинг, error budget policy, SLO-платформы и культурный паттерн внедрения, превращающий арифметику в решения.Trace propagation: заголовки, сшивающие сервисы воедино
Почему W3C-заголовок traceparent — это 55-байтная несущая строка, превращающая 50 разрозненных сервисов в один навигируемый трейс, как baggage переносит контекст через async-границы, и как head vs tail sampling решают, какие трейсы выживут.Profiling: куда реально ушли CPU и байты
Как sampling profiler превращают непропорциональную долю CPU в flame graph, читаемый за 60 секунд, как eBPF и continuous profiling смотрят за production с 2-5% overhead, и как on-CPU vs off-CPU профили отвечают на разные вопросы об одном медленном запросе.Соединяем всё: production-observability-история
Как RED + USE + SLO + traces + profiles складываются в одну debugging-петлю, как OpenTelemetry унифицирует четыре сигнала через один SDK и один wire-format, и что 'наблюдаемость, которая окупается' реально значит на production-масштабе.Проекты по этому треку
Guided-проекты, которые закрепляют изученное здесь.
Очередь задач at-least-once
Собери долговечную очередь задач на Postgres с visibility timeout и идемпотентными консьюмерами, чтобы упавший воркер не терял задачу.
Фильтр Блума
Собери пространственно-эффективное вероятностное множество, отвечающее на запросы членства за O(1) с настраиваемой вероятностью ложных срабатываний, — и разберись, почему ложных отрицаний в нём быть не может принципиально.
Лаборатория cache stampede
Воспроизведи thundering-herd промах кэша под нагрузкой, затем убей его через single-flight и пересчёт с ранним истечением.
Прерыватель цепи
Собери прерыватель цепи, который прекращает долбить падающую зависимость, безопасно прощупывает её в состоянии half-open и автоматически восстанавливается — именно этот паттерн не даёт каскаду микросервисов превратить один плохой узел в полный простой.
Совместные курсоры
Показать живой курсор и выделение каждого подключённого пользователя в общем документе, без конфликтов, через WebSocket.
Палитра команд
Палитра команд ⌘K с нечётким ранжированием, асинхронными источниками действий и полным клавиатурным управлением (стрелки, Enter, Escape, области видимости) — интерактивный слой, который нужен каждому профессиональному инструменту.
Кольцо consistent hashing
Собери кольцо на виртуальных узлах, которое перераспределяет минимальный набор ключей при появлении или уходе узла — базовый примитив за Dynamo, Cassandra и каждым шардированным кэшем, который должен пережить ротацию узлов без полного перебалансирования.
Сервис фич-флагов
Собери небольшой сервис флагов с правилами таргетинга, процентными раскатками и типизированным SDK, который вычисляет флаги на клиенте из закешированного набора правил.
Конкурентный сервис ингеста на Go
Собери конкурентный воркер ингеста/фан-аута на Go — а затем эксплуатируй его: ограничь работу, примени backpressure, сделай вызовы downstream устойчивыми к отказам, выкати в минимальном контейнере и разбери инцидент с утечкой горутин, пока он не съел твою память.
Сервис RAG с опорой на источники
Демо RAG, отвечающее по корпусу, собирается легко; сервис RAG, которому ты доверишь живых пользователей, — нет. Сложность не в поиске, а в опоре на источники: заставить модель говорить только то, что подтверждает найденный текст, прикреплять цитаты, которые читатель может проверить, и доказать на eval-наборе, что ответы не уплывают в уверенную выдумку. Ты соберёшь весь цикл — нарезка, эмбеддинги, хранилище, retrieval top-k, опора, цитаты, оценка — и нащупаешь, где именно он течёт.
Кодирование Хаффмана
Собери lossless-компрессор с нуля: постройте оптимальное дерево prefix-free кодов снизу вверх, выведи битовые строки и докажи, что round-trip точен, а результат короче кодирования фиксированной шириной.
Планировщик задач
Планировщик задач cron + backoff с доставкой at-least-once, идемпотентными обработчиками и visibility timeout — чтобы ни одна задача не терялась молча, даже при краше воркера на середине выполнения.
LRU-кэш
Собери LRU-кэш с вытеснением за O(1) на связке хешмапы и двусвязного списка — та самая задача, которая показывает, почему вытеснение из кэша сложнее, чем кажется.
Next.js-приложение в продакшен
Собери мультитенантное контент-приложение на App Router — а потом эксплуатируй его: закрой авторизацию и секреты, наслои кэши, реши каждый выбор edge-vs-node и разберись с инцидентом, когда один тенант отравляет общую ISR-страницу.
Мини OAuth 2.0 + PKCE логин
Реализуй поток authorization-code + PKCE целиком против реального провайдера, чтобы понять каждый редирект и токен, а не доверять библиотеке.
Офлайн-синхронизация PWA
Notes PWA с офлайн-приоритетом: локальная очередь записей (IndexedDB), которая синхронизируется при переподключении через last-writer-wins, service worker для кеширования ресурсов и background sync для пропущенных записей.
Личная страница-портфолио
Собери одностраничный сайт о себе на чистом HTML, CSS и капле JavaScript — без фреймворка, без сборки, просто файлы, которые открываются в браузере. В итоге у тебя будет что показать, и ты по-настоящему поймёшь каждую строчку, потому что написал её сам.
Загрузка через presigned URL
Прямая загрузка в хранилище через presigned URL с ограничениями размера и content-type и webhook завершения, проверяющим, что объект действительно прибыл, — чтобы API-сервер никогда не касался байт файлов.
Асинхронный Python-сервис: собрать и эксплуатировать
Собери асинхронный FastAPI-сервис приёма, который валидирует, прогоняет через пайплайн и выдерживает нагрузку, — а потом эксплуатируй его: упакуй, контейнеризуй с корректным поведением PID-1 и разберись с инцидентом, когда проглоченный CancelledError тихо протекает задачами, пока event loop не начинает голодать.
Визуализатор планов запросов
Вставь EXPLAIN (ANALYZE, FORMAT JSON) и отрисуй дерево плана с таймингом по узлам и ошибкой оценки строк, чтобы плохой join был виден сразу.
Распределённый rate limiter
Собери token-bucket лимитер, который держится поперёк многих инстансов приложения за счёт счётчика в Redis, а не в памяти процесса.
React-фича под нагрузкой
Выкати одну настоящую production-фичу на React — живой совместный дашборд активности — а потом эксплуатируй её: оптимистичные правки, стриминговые обновления, бюджет на кадр, полную доступность и разбор инцидента, когда render-шторм замораживает вкладку.
Движок регулярных выражений
Собери движок регулярных выражений с нуля через конструкцию Томпсона и симуляцию подмножества состояний — тот же метод, что делает grep и re2 иммунными к катастрофическому обратному ходу.
Мини-сигналы
Собери реактивную библиотеку сигналов примерно в 100 строк (signal/computed/effect) с автоматическим отслеживанием зависимостей и безглючными батч-обновлениями — та же модель, что лежит в основе Solid, Preact Signals и Vue 3.
Список с пропусками
Реализуй вероятностную упорядоченную структуру данных, которая обеспечивает O(log n) поиск, вставку и удаление без балансировочной бухгалтерии деревьев — только слоистые «экспресс-полосы» через отсортированный связный список.
Деплой статической страницы
Проведи статическую HTML/CSS-страницу от файла на диске до публичного URL деплоем который можно перезапускать — твоя первая настоящая поставка без шага сборки.
Текстовый diff — алгоритм Майерса
Реализуй алгоритм diff Майерса с нуля: вычисли наибольшую общую подпоследовательность, построй edit script обратным ходом, докажи минимальность и применяй патчи так, чтобы любой round-trip был побайтово точным.
Планировщик сборки на топологической сортировке
Собери планировщик задач на основе DAG — как Make или CI-пайплайн — который упорядочивает задачи по зависимостям, обнаруживает циклы до дедлока и определяет, какие задачи можно выполнять параллельно.
Движок автодополнения на основе trie
Собери префиксное дерево для ранжированного автодополнения — вставляй слова с весами, проходи каждый префикс за O(длина_префикса + результаты) и детерминированно разрешай ничьи без базы данных.
Union-Find (система непересекающихся множеств)
Построй структуру непересекающихся множеств от наивного массива родителей до почти константного амортизированного времени — и прими на ней алгоритм Краскала для поиска минимального остовного дерева.
URL-сокращатель под нагрузкой
Собери URL-сокращатель, который выдерживает настоящий трафик, — а потом эксплуатируй его: задеплой, наблюдай и разберись с инцидентом, когда одна горячая ссылка плавит твой кэш.
Виртуальная таблица данных
Отрисуй и плавно прокручивай 100 тыс. строк на 60fps с windowing-виртуализацией, залипающими заголовками и полной клавиатурной навигацией — без библиотек, только математика.
Деплой и инфра
Как твой код попадает с ноутбука на боевые серверы — упаковка в контейнеры, выкладка новых версий без простоя и описание инфраструктуры кодом.