Замените «авось заработает»
на git push origin main
Контейнеры, CI/CD-пайплайны, Kubernetes, инфраструктура как код (IaC), observability (наблюдаемость) и автоматизация релизов — всё от одной команды. Разработчик выполняет «git push», а линтинг, тесты, сборка, проверка безопасности, загрузка образа и развёртывание проходят автоматически за считаные минуты. Если что-то пошло не так, откат занимает 18 секунд. По немецким стандартам DevOps.
Единственный способ превратить релиз из «события» в рутину — дисциплинированная автоматизация. Если вы хотите перестать дежурить по ночам в пятницу, вы обратились по адресу.
Релизы «на авось» выматывают вашу команду
Посмотрим на цифры честно: неудачный релиз — это не только потерянные деньги, но и потерянное доверие внутри команды. Вот пять самых распространённых проблем, с которыми мы сталкиваемся.
Если человек подключается к серверу по SSH, вручную забирает файлы и перезапускает сервисы, такой релиз съедает полдня работы. Пропущенный шаг обнаруживается только в понедельник. Развёртывание, запланированное на вечер пятницы, затягивается до полуночи, а DevOps-инженер, у которого должен быть выходной, на деле не отдыхает. К концу месяца этот цикл приводит к выгоранию, к концу квартала — к увольнениям. Решение: кнопку развёртывания нажимает не человек, а пайплайн.
Если после релиза возникает ошибка, подход «git revert + повторное развёртывание» занимает часы, а не минуты. Всё это время не проходят платежи, не создаются регистрации, а колл-центр захлёбывается от звонков. В правильном пайплайне откат — это кнопка: предыдущий образ по-прежнему лежит в реестре, Deployment в Kubernetes возвращается к прошлой ревизии, и за 18 секунд всё снова работает как раньше. Для отката нужен не «план», а механизм.
Без CI-пайплайна тесты не запускаются, потому что «сейчас некогда». Каждая мелкая ошибка в продакшене копится внутри, ведь клиенту о ней не сообщают. В какой-то момент разработчики перестают писать код и начинают отвечать на обращения в поддержку. Решение: каждый коммит автоматически запускает весь набор тестов, статический анализ, проверку типов и сканирование безопасности. Код, не прошедший проверку, никогда не попадает в main.
6 месяцев назад кто-то изменил конфигурацию nginx на продакшен-сервере. Этот человек уже не работает в компании. Об изменении никто не помнит. При настройке нового сервера воспроизвести то же поведение не получается. Решение — инфраструктура как код (IaC): Terraform, Pulumi, Helm-чарты, манифесты Kubernetes — всё живёт в git. Удалите сервер и за 8 минут поднимите точно такой же.
Система упала в субботу в 03:14. Оповещения в Slack нет, только клиент в понедельник утром пишет: «не открывается». 4 часа уходит на поиск логов, ещё 3 — на выяснение причины. Настоящий DevOps означает следующее: оповещение Prometheus будит вас в субботу в 03:14, причина видна на дашборде Grafana, запускается runbook, и за 12 минут проблема решена. Выходные остаются выходными.
Продакшен, который сам восстанавливается и постоянно улучшается
От автовосстановления подов Kubernetes до IaC на Terraform, от метрик DORA до отката в один клик — ниже показываем, как на самом деле выглядит ежедневная эксплуатация.
> под web-7d4 готов за 2,1 с — сервис продолжает работу
resource "aws_eks_cluster" "prod" {
name = "partnerfy-prod"
version = "1.29"
role_arn = aws_iam_role.eks.arn
vpc_config {
subnet_ids = aws_subnet.priv[*].id
}
}
Plan: 14 to add, 0 to change, 0 to destroy.
Apply complete! Resources: 14 added.
Четыре ключевых показателя здоровья продакшена
Вернуться к предыдущей ревизии
kubectl rollout undo deployment/web
Для каких команд это особенно важно?
Мы много лет внедряем DevOps в разных отраслях. Ниже — восемь профилей команд, которым наша работа приносит больше всего пользы.
SaaS с ежедневными релизами
Запрос клиента → ветка → ревью → продакшен за 30 минут. 5–15 релизов в день должны быть рутиной.
E-commerce с частыми A/B-тестами
Feature flags направляют вариант на 5% трафика, метрики сравниваются автоматически, победитель включается сам.
Регулируемый финтех
Цепочка согласований, журнал аудита, неизменяемые сборки, разделение обязанностей. Пайплайн, готовый к SOC2 и PCI.
Мультитенантный B2B
Отдельная среда для каждого клиента, поэтапный rollout, feature flags с учётом тенанта, мониторинг SLA по каждому клиенту.
CD в TestFlight / Play
Fastlane + Bitrise + автоматизация подписи. Каждый PR автоматически собирает IPA/AAB и доставляет сборку на тестовые устройства.
Стартап, переходящий с монолита на сервисы
Паттерн strangler fig, service mesh (Istio/Linkerd), постепенное переключение. Оба мира работают параллельно.
Крупная компания, модернизирующая устаревшие системы
Контейнеризация виртуальных машин on-premise, перенос старого Jenkins на GitOps, а Active Directory — на OIDC.
Агентство с 20+ клиентскими репозиториями
Шаблоны пайплайнов, repo-of-repos, централизованное управление секретами. Новый клиент = запуск за 2 часа.
Десять уровней DevOps-стека
На каждом уровне мы выбираем наиболее подходящий инструмент: не навязываем технологию, а ищем баланс между привычками вашей команды и устойчивостью в долгосрочной перспективе.
Контейнеризация
Приложение упаковывается в Dockerfile, multi-stage-сборка создаёт минимальные образы, которые автоматически отправляются в реестр. Один и тот же образ проходит путь dev → staging → prod.
CI-пайплайн
На каждый коммит: линтинг, модульные и интеграционные тесты, статический анализ, сканирование безопасности, сборка образа. Код, не прошедший проверку, не попадает в основную ветку.
CD-пайплайн
Подход GitOps: манифесты в git — единственный источник истины. ArgoCD постоянно синхронизирует состояние, а при дрифте сразу исправляет его или поднимает тревогу.
Настройка Kubernetes
Управляемый (EKS/GKE/AKS) или self-hosted (k3s, kubeadm). Размер кластера, пулы узлов, автомасштабирование и сетевые политики проектируются совместно.
Helm-чарты
Приложение упаковывается в параметризованный чарт с разными файлами значений для staging и prod. Обновление версии — одна команда.
IaC на Terraform / Pulumi
Облачные ресурсы (VPC, RDS, S3, IAM) описываются кодом. Цикл plan → ревью → apply, удалённое и заблокированное состояние, обнаружение дрифта.
Управление секретами
Файлы .env, уязвимые для утечек, уходят в прошлое. Секреты зашифрованы в Vault или SOPS: пайплайн получает их динамически во время выполнения, а разработчик никогда их не видит.
Наблюдаемость
Метрики (Prometheus) + логи (Loki) + трейсы (Tempo) + дашборды (Grafana). Оповещения на основе SLO и контроль бюджета ошибок.
Дежурства и оповещения
Какое оповещение кого будит? Ротация, эскалация, оповещения со ссылками на runbook. Больше никаких звонков не тому человеку в 3 часа ночи.
Сканирование безопасности
CVE в образе? Критическая уязвимость в зависимости? Пайплайн останавливает сборку и предлагает автоматическое исправление в PR. Shift-left security.
От старого процесса к современному пайплайну за шесть шагов
Мы не меняем всю инфраструктуру за одну ночь. Двигаемся поэтапно, не останавливая бизнес и вместе с вашей командой.
Аудит текущего пайплайна
Двухнедельный спринт: как вы сейчас выполняете развёртывание, какие шаги делаются вручную, какой сервис является единой точкой отказа, где хранятся секреты.
Контейнеризация приложений
Каждый сервис получает Dockerfile, уменьшается с помощью multi-stage-сборки и отправляется в реестр. В dev и prod — один и тот же пакет.
Создание CI-пайплайна
Линтинг, тесты, сборка и сканирование автоматизированы. При открытии pull request бот за 6–8 минут выдаёт зелёный или красный результат.
Создание CD-пайплайна
GitOps на ArgoCD или Flux: staging — автоматически при каждом слиянии, prod — после одного подтверждения. Canary и откат готовы.
Подключение observability
Prometheus + Grafana + Loki. Формулируются SLO, правила оповещений связываются с runbook, настраивается ротация дежурств.
Обучение команды и передача
Двухдневный воркшоп + документация + набор runbook. Следующие 3 месяца — ненавязчивая поддержка: отвечаем на ваши вопросы в течение часа.
Технологии, которые мы используем в продакшене
До и после — в цифрах
Jenkins → GitHub Actions + ArgoCD. Через 12 минут после слияния изменение уже в продакшене. Страх перед развёртыванием в пятницу вечером остался в прошлом.
Prometheus + PagerDuty + автоматизация runbook. Оповещение приходит до падения, нужному человеку и вместе с шагами по устранению.
Неизменяемые сборки, разделение обязанностей, полный аудиторский след, зашифрованные секреты. Готовность к аудиту за 6 месяцев, у аудитора ни одного замечания.
Rolling update + readiness probe + canary-релизы. За 6 месяцев ни одного сбоя, заметного клиентам.
Fastlane + Bitrise + автоматизация подписи. Через 4 минуты после каждого PR команда QA видит новую сборку на своём устройстве.
Переиспользуемый workflow в GitHub Actions + bootstrap CLI. Новый клиент открывает репозиторий и запускается за 2 часа.
Что спрашивают чаще всего
Короткий ответ: нет. При небольшом масштабе (1–3 сервера в одном регионе, менее 20 тыс. запросов/мин) варианты вроде Docker Compose, AWS ECS Fargate, GCP Cloud Run, Fly.io или Render создают гораздо меньше операционной нагрузки. Реальная ценность Kubernetes проявляется, когда появляется потребность в 5+ сервисах, нескольких регионах, автомасштабировании, продвинутых стратегиях rollout (canary/blue-green) и межсервисном mesh. Решение принимаем вместе на встрече по итогам аудита; мы не будем заставлять вас «следовать моде». Если переход на K8s всё же нужен, рекомендуем управляемый вариант (EKS/GKE/AKS): вам не придётся самостоятельно администрировать кластер.
Как правило, нет, по крайней мере не сразу. Если Jenkins работает, мы запускаем новый пайплайн параллельно (GitHub Actions / GitLab CI / Drone). Новые сервисы идут через новый пайплайн, старые остаются в Jenkins. Обе системы работают бок о бок 2–3 месяца, и когда команда привыкает, миграция завершается. Подход «выбросить всё и переписать с нуля» занимает 6 месяцев и оставляет всё недоделанным. Наш опыт: стратегия strangler fig всегда даёт лучший результат. Если Jenkins действительно невозможно сопровождать (старая версия, взрывной рост числа плагинов, никто в нём не разбирается), мы скажем об этом честно.
Типичный график: базовый CI/CD (контейнеры + тесты + сборка + развёртывание) — 2–4 недели. Добавление Helm + Kubernetes — +2–4 недели. Полная observability (Prometheus + Grafana + Loki + оповещения) — +2–3 недели. Управление облаком через Terraform/IaC — +3–6 недель (зависит от имеющихся ресурсов). Итого: 4 недели для небольшой команды, 8–10 недель для средней, 12–16 недель для крупной компании. Главное: работа идёт поэтапно, бизнес не останавливается. Польза появляется сразу после первого этапа, а каждый следующий добавляет ценность. Мы не ждём единого момента, когда «всё готово».
Да, и мы считаем это частью работы. После завершения настройки вы получаете: (1) полную документацию пайплайна в Markdown, (2) двухдневный практический воркшоп в живом формате, (3) 30-дневный период сопровождения: мы наблюдаем со стороны, команда работает сама, а мы отвечаем на вопросы. В повседневной работе разработчика меняется совсем немного: он делает git push, и пайплайн запускается. Вся сложность скрыта на стороне инфраструктуры. Для операционной части (обработка оповещений, runbook, откат) мы настраиваем ротацию дежурств. Через 3 месяца ваша команда будет достаточно зрелой, чтобы самостоятельно владеть пайплайном.
Есть две статьи расходов: (а) наше внедрение + 3 месяца сопровождения при передаче: цена зависит от проекта, от нижней части четырёхзначного диапазона для небольшого проекта до середины пятизначного для корпоративного (в EUR/USD, фиксированная цена). (б) Постоянные расходы на инфраструктуру: вы оплачиваете их напрямую со своего облачного аккаунта, мы не выступаем посредником. Типичные суммы на облако: небольшой SaaS — 200–600 EUR в месяц, средний — 1500–4000 EUR, крупная компания — 8000+. Важно: правильная архитектура обычно экономит 30–50% затрат на облако (rightsizing, spot-инстансы, автомасштабирование). Как правило, инвестиции в DevOps окупаются за шесть месяцев.
Да. AWS, GCP, Azure, Hetzner и DigitalOcean: у нас есть действующий опыт работы в продакшене на каждой из этих платформ. Terraform/Pulumi обеспечивают абстракцию, не зависящую от провайдера, а манифесты Kubernetes работают на любом кластере. Часто multi-cloud — это не то, что вам действительно нужно (операционная сложность возрастает в 2,5 раза): обычно мы рекомендуем одно основное облако + другой регион (multi-region) + второго провайдера для аварийного восстановления. Если нужен настоящий multi-cloud (например, данные ЕС в AWS, а данные США в GCP), мы настроим и его. Выбор региона из-за требований к суверенитету данных (GDPR/KVKK) — частая тема в нашей работе.
Да. Мы создавали пайплайны, соответствующие ISO 27001, SOC2 Type II, PCI DSS, GDPR и KVKK (турецкий закон № 6698 о защите персональных данных). Что мы внедряем: неизменяемые сборки (их нельзя изменить задним числом), разделение обязанностей (автор кода не может выполнять развёртывание), полный аудиторский след (кто, когда и что утвердил), зашифрованные секреты (Vault/SOPS), шифрование при хранении и передаче, доступ к продакшену только через MFA, проверку уязвимостей при каждой сборке. Документы для аудитора предоставляются в виде готовых шаблонов. У нас есть 6+ случаев, когда независимые аудиторы одобрили созданные нами пайплайны; можем предоставить рекомендации.
Если после релиза обнаружена проблема, есть два пути. (1) Kubernetes rollout undo: предыдущая ревизия остаётся в истории Deployment; одна команда или кнопка в интерфейсе ArgoCD — и старый образ снова активен за секунды, а не минуты. Типичное время — 12–25 секунд. (2) Если есть миграция базы данных, нужна большая аккуратность: сначала обратная миграция, затем откат контейнера. Поэтому мы всегда делаем миграции обратно совместимыми (двухшаговый паттерн вроде NULL allow → fill → NOT NULL). Правило автоматического отката: нарушение SLO или всплеск доли ошибок автоматически останавливает progressive rollout в ArgoCD и при необходимости откатывает его. Вмешательство человека необязательно.
Пусть релизы перестанут пугать
За 30-минутную встречу мы вместе оценим ваш текущий пайплайн: где можно выиграть, какие шаги критичны — и составим конкретный план на 90 дней.