
Маршрутизация в Go: что советуют на практике
После стандартного роутера в net/http из Go 1.22 выбор библиотеки перестал быть очевидным. Разбираем, когда хватает stdlib, а когда нужен chi или gin, и чем платишь за каждый вариант.

После стандартного роутера в net/http из Go 1.22 выбор библиотеки перестал быть очевидным. Разбираем, когда хватает stdlib, а когда нужен chi или gin, и чем платишь за каждый вариант.

Что проверять во входящих HTTP-запросах на Go, где validator.v10 помогает, а где вредит, и почему одной структуры с тегами обычно мало.

Разбираем, как корректно инструментировать Go-сервис через OpenTelemetry: где заканчивается span, почему context теряет трассу и чем платишь за сэмплирование.

Метрика с UUID в лейбле раздувает память exporter'а до гигабайтов, а забытый reset ломает подсчёт запросов. Разбираем ошибки, из-за которых мониторинг на Go врёт или падает.

log/slog в стандартной библиотеке Go 1.21 закрыл вопрос, ради которого раньше тянули zap и zerolog. Разбираем, как писать структурные логи так, чтобы их было удобно искать в проде, и где легко выстрелить себе в ногу.

Из логов не видно, почему запрос выполнялся 4 секунды: 200 записей от разных горутин перемешаны. Трассировка через OpenTelemetry показывает, где именно потерялось время. Разбираем рабочие приёмы.

Гистограмма с полем user_id в лейбле, счётчик внутри хендлера и /metrics на 40 мегабайт — разбираем, почему Go-сервис с Prometheus течёт по памяти и что с этим делать.

Гистограмма с дефолтными бакетами врёт про перцентили, лейбл с ID запроса раздувает память, а /metrics открыт наружу. Разбираем, что проверить в инструментации Go-сервиса до выката.

Django закрывает CSRF, XSS и SQL-инъекции из коробки, но каждую защиту легко отключить одной строкой. Разбираем, где механизмы ломаются и почему SSRF Django не ловит вообще.

Два запроса читают одну строку, оба прибавляют единицу — а счётчик вырос на единицу вместо двух. Разбираем, где Django теряет обновления и что искать на ревью.

Устаревшие данные в кеше — не баг фреймворка, а последствие выбранной стратегии. Разбираем, как Django ставит и снимает ключи, почему TTL врёт и где инвалидация даёт гонки.

Отчёт по заказам за квартал открывался 40 секунд и клал воркеры gunicorn по таймауту. Разбираю, где утекало время, что показал django-debug-toolbar и до каких цифр удалось довести запрос.