Все публикации
Все материалы сайта в обратном хронологическом порядке
Docker
Docker Compose для production без Kubernetes
Когда Docker Compose всё ещё подходит для production и как выстроить вокруг него вменяемый процесс эксплуатации
Инфраструктура
Закон об иностранных словах и IT: когда Deployment стал Разверженіемъ
Федеральный закон 168-ФЗ об ограничении иностранных слов вступил в силу 1 марта 2026. Что это значит для IT-индустрии, документации, курсов и повседневного общения разработчиков
Сообщения
RabbitMQ, Kafka, NATS и Redis: как не выбирать messaging layer по моде
Выбор брокера сообщений: чем в реальности различаются RabbitMQ, Kafka, NATS и Redis (Lists, Pub/Sub, Streams), какие задачи они решают лучше всего и где начинаются типовые ошибки выбора
Rust
Rust для backend: где он действительно уместен
Где Rust в backend даёт реальный выигрыш, а где переплата сложностью. Кейсы Discord, Cloudflare, Figma. Сравнение с Go и Java, диаграмма принятия решения, примеры кода
Kubernetes
Kubernetes для домашней лаборатории: когда он действительно нужен
Kubernetes в домашней лаборатории и небольших системах: когда он действительно полезен, какие задачи решает, где добавляет лишнюю сложность и как понять, нужен ли он именно вам
Java
Java для backend и контейнеров: где она по-прежнему очень сильна
Java в современном backend и контейнерной эксплуатации: где она особенно сильна, какие у неё реальные компромиссы, как выглядит контейнеризация на практике и почему образ языка как «тяжёлого энтерпрайза из прошлого» уже давно слишком упрощён
Архитектура
System Design без культа идеальных схем
Системный дизайн без академизма и культа «идеальных схем»: с чего начинать проектирование, как думать про контекст и trade-offs, и почему хорошая архитектура почти никогда не выглядит как красивая универсальная диаграмма
Docker
Docker Buildx и multi-arch образы: одна сборка для amd64 и arm64
Как собирать и публиковать multi-arch Docker-образы через buildx для amd64 и arm64: manifest list, кэширование, QEMU vs нативные builders и проверка результата
Наблюдаемость
OpenTelemetry Collector: зачем он нужен и как на него правильно смотреть
Зачем нужен отдельный слой сбора телеметрии, как Collector устроен, сколько ресурсов потребляет, какие deployment-паттерны бывают, типичные ошибки и когда он действительно оправдан
Docker
Docker volumes: как использовать тома правильно для скорости, надёжности и контроля доступа
Как правильно использовать Docker volumes и bind mounts, почему это влияет на производительность и надёжность, и как ограничивать доступ к данным
Go
Go: конфигурация через env без хаоса
Как выстроить конфигурацию Go-приложения через env vars без расползания параметров, неочевидных дефолтов и ошибок старта
Инфраструктура
Docker-хосты в Proxmox: LXC или VM
Как выбрать между LXC и VM в Proxmox для Docker-нагрузок и не усложнить себе сопровождение
Базы данных
Redis: где он помогает, а где только усложняет систему
Redis: когда он действительно нужен, какие паттерны и анти-паттерны встречаются чаще всего, где проходят его ограничения и почему “просто поставим кэш” — плохая постановка задачи
Инфраструктура
Proxmox VE: что это такое, какие есть подписки и когда он уместен
Proxmox VE: модель лицензирования и подписок, основные возможности, кластер, backup и честные плюсы и минусы
Docker
Golden builder image и Docker Registry: ускоряем сборку и публикуем образы
Когда нужен golden builder image, как его сопровождать и как работать с Docker Registry вне Docker Hub
Docker
Production-сборка Docker-образов: secrets, proxy, healthcheck и CI
Практики production-сборки Docker-образов: линтеры, сканирование, BuildKit secrets, proxy, healthcheck и разделение build-time и runtime
Docker
Multi-stage builds в Docker: собираем Go-приложение правильно
Как уменьшить Docker-образ Go-приложения с помощью multi-stage сборки и не потерять удобство эксплуатации
Go
Graceful shutdown в Go: завершаемся правильно
Как корректно завершать Go-сервис, не теряя запросы, останавливая фоновые задачи и закрывая ресурсы