Performance

Практические разборы highload-сценариев: как удержать SLA по времени ответа под потоком запросов — выбор транспорта, балансировка, клиентские пулы соединений, тред-модели обработки.

22 минуты вместо двух: как контейнер на каждый тест съедал прогон — и что помогло

22 минуты вместо двух: как контейнер на каждый тест съедал прогон — и что помогло

Интеграционные тесты Go-сервиса шли 22 минуты и случайно падали по таймауту — списывали на медленную машину. Причина оказалась арифметической: 266 вызовов тестового хелпера поднимали 266 контейнеров Postgres. Разбираем переход на один контейнер и CREATE DATABASE … TEMPLATE, замеры до и после (×10 и ×36), воспроизводимый стенд, границы приёма — права, FORCE, размер шаблона, параллельность пакетов — и честную границу между тем, что измерено, и тем, что осталось правдоподобной гипотезой

Go 1.20 и RSA: что на самом деле замедлилось — и как ловить регрессии производительности

Go 1.20 и RSA: что на самом деле замедлилось — и как ловить регрессии производительности

В Go 1.20 crypto/rsa перешёл на constant-time bigmod ради защиты от тайминговых атак — и просел по скорости. Разбираем на живой матрице версий, где просело сильнее (спойлер: подпись подорожала на 34–61%, а публичные проверка и шифрование — в 5–7 раз), почему, что это значит для JWT, и как поставить CI-гейт, который ловит такие регрессии до прода

Вероятностные структуры: Bloom-фильтры и компания — когда эффективны, когда нет

Вероятностные структуры: Bloom-фильтры и компания — когда эффективны, когда нет

Bloom-фильтры, Cuckoo, HyperLogLog, Count-Min Sketch и родственники: как они экономят память и время ценой приблизительности, где реально эффективны (LSM-БД, кэш/CDN, дедупликация, аналитика уникальных), а где только вредят — с прикидкой параметров и примерами на Go и Java