lenec ru

← все теги

#devops

50 постов

strace для отладки: находим баги в проде за 5 минут

Выбор логгера в Node.js — решение, которое аукнется через полгода, когда сервис начнёт обрабатывать тысячи запросов в секунду. В 2026 году два главных кандидата — Pino и Winston. Оба поддерживают…

0 13K
sysmonk

GitHub Actions: кэширование зависимостей и Docker layers для быстрого CI

Горутины — одна из главных суперсил Go. Лёгкие, дешёвые, запускаются за микросекунды. Но именно эта лёгкость создаёт ловушку: забытая горутина не падает с ошибкой, а тихо висит в памяти, пока сервис…

0 16K
devnotes_ru

Postgres FATAL: too many connections — как лечить

Postgres падает не от количества SQL-запросов и не от размера базы. Чаще всего у людей в проде он начинает выдавать вот это:FATAL: sorry, too many clients alreadyСообщение прямое: достигнут лимит…

310 11K
Зоя Хомякова

Миграции БД без даунтайма: рабочие паттерны

Раскатывать схему БД без остановки сервиса — это не магия и не специальный фреймворк. Это набор правил: сначала добавляем, потом начинаем читать и писать обратно совместимо, и только потом удаляем…

233 11K
Игнат Хорьков

Docker Compose в продакшене: что не так и как с этим жить

Docker Compose — отличная штука, чтобы за пять минут поднять локально стек из приложения, базы и Redis. Но когда тот же compose.yml уезжает на продакшен сервер, у людей внезапно обнаруживается, что…

423 17K
Игнат Хорьков

Let's Encrypt и certbot: автообновление сертификатов на nginx

Сертификат Let's Encrypt живёт 90 дней. Если ты один раз настроил его руками и забыл — через три месяца сайт встретит пользователей предупреждением о просроченном сертификате. Поэтому автообновление…

378 10K
Игнат Хорьков

nginx reverse proxy для Node: рабочий конфиг с TLS

На моём проекте Node-приложение слушает 127.0.0.1:3000, а наружу торчит nginx на 443. Так живёт уже несколько лет: обновления Node не трогают сертификаты, а правила лимитов и редиректов лежат рядом,…

360 13K
Игнат Хорьков

nginx tuning: оптимизация для высоких нагрузок на практике

Дефолтный nginx обрабатывает тысячи RPS. Но когда трафик растёт, дефолты мешают: соединения к upstream пересоздаются на каждый запрос, буферы маленькие, сжатие отключено. Разберём параметры, которые…

0 13K
sysmonk

Cost optimization в Kubernetes: resource requests/limits, vertical/horizontal scaling, spot instances

Ваше Node.js приложение работает отлично на локалхосте, но в Kubernetes начинаются проблемы: поды рестартятся без причины, пользователи получают 502 во время деплоя, load balancer продолжает слать…

0 18K
Константин Веб-Разработчиков

Kubernetes liveness vs readiness probes: в чём разница и как настроить правильно

Pydantic v2 — это не косметический апдейт, а переписывание ядра на Rust. Валидация стала в 5–50 раз быстрее, API почистили, а старые паттерны из v1 местами сломались. Разберём, что изменилось, как…

0 14K
devnotes_ru

CI/CD на Gitea Actions: рабочая альтернатива GitHub

Gitea Actions появились на стабильном уровне в Gitea 1.21 и за полтора года выросли до варианта, на котором я спокойно держу боевой CI. Расскажу, что это, чем отличается от GitHub Actions и где у…

156 17K
Влада Барсукова

Docker slim images: Alpine vs Distroless vs scratch — что выбрать

Выбор базового образа — одно из первых решений при контейнеризации. От него зависит размер итогового image, количество CVE в сканере, время cold start и возможность дебага в проде. Три главных…

0 18K
code_kitchen

eBPF для разработчика: наблюдаемость Linux без overhead

В 2026 году спор «Zustand или Redux Toolkit» — это уже не холивар фанатов, а практический выбор архитектуры. Оба инструмента зрелые, оба поддерживают TypeScript из коробки. Но подходят они для разных…

0 14K
sysmonk

k9s: управляем Kubernetes-кластером из терминала как профи

Node.js — однопоточный. Event loop справляется с I/O, но CPU-bound задачи (парсинг JSON, ресайз картинок, криптография) блокируют весь сервер. Модуль worker_threads даёт настоящие потоки с…

0 16K
devnotes_ru

ArgoCD: GitOps-деплой в Kubernetes — настройка и best practices

«Access to fetch has been blocked by CORS policy» — ошибка, которую видел каждый фронтенд-разработчик. Реакция обычно одна: поставить Access-Control-Allow-Origin: * и забыть. Но CORS — это не баг…

0 11K
devnotes_ru

Docker multi-stage builds: оптимизация размера образа

# Semantic versioning и автоматический changelog Версионирование — это не просто цифры в package.json. Это контракт с пользователями: что сломается, что добавится, что исправится. Когда проект…

0 43
Сергей Данилов

cgroups v2: управление ресурсами контейнеров в современном Linux

Текстовые логи вида INFO: User logged in работают, пока сервис маленький. Но когда у вас 50 инстансов и тысячи запросов в секунду — grep по тексту превращается в пытку. structlog решает проблему:…

0 16K
sysmonk

Dependency audit: автоматический поиск уязвимостей в npm и pip зависимостях

Если вы пришли в Rust из Python, borrow checker — это первая стена, в которую вы врежетесь. В Python память управляется сборщиком мусора, и вы никогда не думаете о том, кто «владеет» объектом. В Rust…

0 12K
backend_diary

OpenTelemetry tracing в Node.js: инструментируем микросервисы от и до

Микросервисная архитектура даёт гибкость, но усложняет отладку: один HTTP-запрос проходит через 5–10 сервисов, и без distributed tracing найти узкое место невозможно. OpenTelemetry — открытый…

0 14K
devnotes_ru

Docker layer caching: ускоряем сборку образов в CI/CD pipeline

Сборка Docker-образа в CI без кэша — это каждый раз npm ci с нуля, каждый раз скачивание всех зависимостей. На крупном проекте это 5-10 минут на каждый коммит. Layer caching и BuildKit cache mounts…

0 13K
code_kitchen

Kubernetes resource limits: правильно выставляем requests и limits для подов

Redis из коробки — single-threaded процесс без встроенной отказоустойчивости. Если мастер упал, клиенты получают ошибки до ручного переключения. Sentinel и Cluster решают эту проблему, но по-разному:…

0 10K
devnotes_ru

Terraform vs Pulumi: IaC-инструменты — HCL или настоящий код

Infrastructure as Code давно стал стандартом, но выбор инструмента по-прежнему вызывает споры. Terraform с его HCL — проверенный лидер. Pulumi предлагает писать инфраструктуру на TypeScript, Python…

0 12K
devnotes_ru

Helm charts: шаблонизация Kubernetes-манифестов на практике

Каждый, кто деплоил больше двух сервисов в Kubernetes, знает боль: десятки YAML-файлов, которые отличаются только именем, портом и парой переменных окружения. Helm решает эту проблему — превращает…

0 15K
devnotes_ru

Linux networking: ss, ip и nftables — диагностика сети за 5 минут

Если вы пришли в Rust из Python, borrow checker — первая стена. В Python память управляется GC, и вы не думаете о владении. В Rust ownership — центральная концепция, гарантирующая безопасность памяти…

0 13K
sysmonk

GitHub Actions: матричные билды и кеширование зависимостей

# Semantic versioning и автоматический changelog Версионирование — это не просто цифры в package.json. Это контракт с пользователями: что сломается, что добавится, что исправится. Когда проект…

0 48
Сергей Асинхронов

tmux для разработчика: продуктивная работа в терминале без потерь сессий

SSH-соединение оборвалось — и ваш долгий процесс умер вместе с терминалом. Знакомо? tmux решает эту проблему раз и навсегда: сессии живут на сервере независимо от подключения. Но tmux — это не только…

0 13K
sysmonk

Liveness, readiness, startup probes в Kubernetes: типичные ошибки и как настроить правильно

Probes — это та часть k8s, где даже опытные команды регулярно ловят пятёрки и шестёрки. Liveness убивает живой pod в момент пика нагрузки, readiness не отдаёт трафик после рестарта секунд тридцать,…

93 13K
Дмитрий Орлов

Grafana dashboards: проектируем информативные дашборды для микросервисов

HTTP создавался для request-response: клиент спрашивает, сервер отвечает. Но современные приложения требуют push-данных от сервера — уведомления, чаты, live-обновления. Три основных подхода: Long…

0 19K
devnotes_ru

ArgoCD vs Flux: миграция с одного на другой и где грабли

В моём опыте кластеры с GitOps-инструментами делятся на два типа: те, что начали с ArgoCD, и те, что начали с Flux. И раз в пару лет в команду приходит человек с предыдущим опытом и предлагает…

59 10K
Дмитрий Орлов

Postgres 16 → 17: чек-лист апгрейда без сюрпризов

Апгрейд мажорной версии Postgres — отдельный жанр работы. Никакого «pg_upgrade и пошёл», как в туториалах: всегда есть нюансы по расширениям, плану запросов и привычкам приложения. Я в этом году…

407 10K
Вероника Соловьёва

systemd unit файлы: пишем надёжный сервис для продакшена

Вы написали сервис, он работает в tmux на проде, и вы молитесь, чтобы никто не закрыл сессию. Знакомо? Systemd решает эту проблему: автозапуск, рестарты, изоляция, логи — всё из коробки. Нужен только…

0 10K
sysmonk

Linux perf: профилирование CPU и поиск bottleneck в продакшене

Astro — фреймворк, который отправляет браузеру чистый HTML и ноль JavaScript по умолчанию. Интерактивные компоненты подключаются точечно — как «острова» в море статики. Это делает Astro идеальным для…

0 15K
sysmonk

Dockerfile multi-stage: как собрать тонкий образ Go-приложения

Когда впервые собираешь Go-приложение в Docker, обычно получаешь образ на 800 МБ: вся golang:1.23 внутри плюс твой бинарь на 20 МБ. И это работает, но вытягивать 800 МБ при каждом deploy и хранить…

130 17K
Дмитрий Орлов

Бэкап Postgres в Kubernetes: pgBackRest в Helm-чарте, который реально работает

Бэкап Postgres в k8s — это та тема, где много туториалов, но мало кто проверял restore. Я три раза попадал на ситуацию, когда бэкап был, скрипт pg_dump отрабатывал по cron, файлы лежали в S3, а…

99 17K
Дмитрий Орлов

GitOps с ArgoCD: declarative deployments, sync policies, rollback

Вы развернули Node.js приложение в Kubernetes через kubectl apply -f deployment.yaml. Работает. Теперь нужно развернуть то же приложение в staging с другими переменными окружения, другим количеством…

0 10K
Константин Веб-Разработчиков

Миграции БД без даунтайма: рабочие паттерны

«Просто накатим миграцию ночью» — в боевом сервисе так себе план, особенно если у тебя пользователи в нескольких часовых поясах. Я набил несколько шишек с миграциями на горячих таблицах и хочу…

114 13K
Игнат Хорьков

Cloudflare Tunnel: открыть локальный сервер без публичного IP

Cloudflare Tunnel — простой способ опубликовать приложение, у которого нет публичного IP. У тебя домашний сервер, виртуалка за NAT, dev-стенд за корпоративным файрволом — Tunnel это легко решает. Я…

153 12K
Ярослав Медведев

Docker healthcheck: практические примеры для Node.js, Python и Go

В 2026 году спор «Zustand или Redux Toolkit» — это уже не холивар фанатов, а практический выбор архитектуры. Оба инструмента зрелые, оба поддерживают TypeScript из коробки. Но подходят они для разных…

0 17K
code_kitchen

Docker multi-stage builds: уменьшаем образ Node.js-приложения в 10 раз

Когда приложение в проде зависает или молча падает — первое, за что стоит взяться, это strace. Утилита перехватывает системные вызовы процесса и показывает, что именно он просит у ядра. Никакой…

0 10K
code_kitchen

PostgreSQL logical replication: настройка, мониторинг и подводные камни

Логическая репликация в PostgreSQL — механизм выборочного копирования данных между серверами на уровне отдельных таблиц. В отличие от физической репликации, которая передаёт WAL-сегменты целиком,…

0 16K
Игорь Беляев

Бэкап Postgres на S3: Selectel и Yandex Object Storage

База данных без бэкапа — это база, которую вот-вот потеряешь. Я делаю бэкапы Postgres на S3-совместимое хранилище уже несколько лет, и за это время восстанавливалась с них раза три-четыре. Расскажу…

230 16K
Эльвира Соболева

Docker Compose secrets: безопасная передача конфигов в контейнеры

Передавать пароли через переменные окружения — привычно, но небезопасно. Любой с доступом к docker inspect видит все env в открытом виде. Docker secrets решают проблему: секреты монтируются как файлы…

0 16K
code_kitchen

Node.js graceful shutdown: корректно завершаем сервер в Kubernetes

Деплой новой версии — и часть пользователей получает 502. Kubernetes послал SIGTERM, а сервер оборвал соединения на полуслове. Graceful shutdown — обязательная часть production-ready сервиса:…

0 14K
Николай Ломов

Минимальный observability-стек на open-source за день: logs, metrics, traces

В каждый новый кластер k8s через две недели после старта приходит вопрос: «а почему этот сервис тормозит ночью?». И ты понимаешь, что ничего не видишь — ни логов, ни метрик, ни трейсов. Можно…

231 19K
Дмитрий Орлов

uv vs pip: новый менеджер пакетов Python — стоит ли переходить в 2026

В 2024 году команда Astral (создатели ruff) выпустила uv — менеджер пакетов Python, написанный на Rust. За полтора года он дорос до стабильной версии и претендует на замену pip, pip-tools, virtualenv…

0 10K
Мария Соколова

requests vs limits в Kubernetes: реальная разница и как ставить адекватные значения

Когда приходишь в новый проект на k8s, первое, что бросается в глаза — это либо полное отсутствие resources у pod-ов, либо одинаковые requests/limits на всех контейнерах, скопированные из чужого…

155 14K
Дмитрий Орлов