Перейти к содержимому
Внедрение DevOps и CI/CD

Замените «авось заработает»
на git push origin main

Контейнеры, CI/CD-пайплайны, Kubernetes, инфраструктура как код (IaC), observability (наблюдаемость) и автоматизация релизов — всё от одной команды. Разработчик выполняет «git push», а линтинг, тесты, сборка, проверка безопасности, загрузка образа и развёртывание проходят автоматически за считаные минуты. Если что-то пошло не так, откат занимает 18 секунд. По немецким стандартам DevOps.

Единственный способ превратить релиз из «события» в рутину — дисциплинированная автоматизация. Если вы хотите перестать дежурить по ночам в пятницу, вы обратились по адресу.

Развёртываний на этой неделе +2250%
47
раньше: 2 в неделю
~/app — zsh
$ git push origin main
Enumerating objects: 24, done.
Counting objects: 100% (24/24), done.
Delta compression using up to 8 threads
Writing objects: 100% (13/13), 2.41 KiB | done.
To github.com:partnerfy/api.git
a3f12b9..c8e441d main -> main
Pushed to GitHub.
# workflow #4719 started
CI/CD-пайплайн #4719 PASS
1
Линт
2
Тесты
3
Сборка
4
Проверка
5
Загрузка
6
Релиз
линт → тесты → сборка → безопасность → образ → развёртывание
Продакшен — rolling update 0 с простоя
v1.2.1 (старая)
P
P
v1.2.2 (новая)
P
P
развёртывание 78% • готовность OK • healthcheck PASS
Проблема

Релизы «на авось» выматывают вашу команду

Посмотрим на цифры честно: неудачный релиз — это не только потерянные деньги, но и потерянное доверие внутри команды. Вот пять самых распространённых проблем, с которыми мы сталкиваемся.

01 — Ручное развёртывание = пятница длиной в два дня

Если человек подключается к серверу по SSH, вручную забирает файлы и перезапускает сервисы, такой релиз съедает полдня работы. Пропущенный шаг обнаруживается только в понедельник. Развёртывание, запланированное на вечер пятницы, затягивается до полуночи, а DevOps-инженер, у которого должен быть выходной, на деле не отдыхает. К концу месяца этот цикл приводит к выгоранию, к концу квартала — к увольнениям. Решение: кнопку развёртывания нажимает не человек, а пайплайн.

02 — Нет плана отката

Если после релиза возникает ошибка, подход «git revert + повторное развёртывание» занимает часы, а не минуты. Всё это время не проходят платежи, не создаются регистрации, а колл-центр захлёбывается от звонков. В правильном пайплайне откат — это кнопка: предыдущий образ по-прежнему лежит в реестре, Deployment в Kubernetes возвращается к прошлой ревизии, и за 18 секунд всё снова работает как раньше. Для отката нужен не «план», а механизм.

03 — Непротестированный код в продакшене

Без CI-пайплайна тесты не запускаются, потому что «сейчас некогда». Каждая мелкая ошибка в продакшене копится внутри, ведь клиенту о ней не сообщают. В какой-то момент разработчики перестают писать код и начинают отвечать на обращения в поддержку. Решение: каждый коммит автоматически запускает весь набор тестов, статический анализ, проверку типов и сканирование безопасности. Код, не прошедший проверку, никогда не попадает в main.

04 — Незадокументированные изменения инфраструктуры

6 месяцев назад кто-то изменил конфигурацию nginx на продакшен-сервере. Этот человек уже не работает в компании. Об изменении никто не помнит. При настройке нового сервера воспроизвести то же поведение не получается. Решение — инфраструктура как код (IaC): Terraform, Pulumi, Helm-чарты, манифесты Kubernetes — всё живёт в git. Удалите сервер и за 8 минут поднимите точно такой же.

05 — Тушение пожаров по выходным

Система упала в субботу в 03:14. Оповещения в Slack нет, только клиент в понедельник утром пишет: «не открывается». 4 часа уходит на поиск логов, ещё 3 — на выяснение причины. Настоящий DevOps означает следующее: оповещение Prometheus будит вас в субботу в 03:14, причина видна на дашборде Grafana, запускается runbook, и за 12 минут проблема решена. Выходные остаются выходными.

Инженерия

Продакшен, который сам восстанавливается и постоянно улучшается

От автовосстановления подов Kubernetes до IaC на Terraform, от метрик DORA до отката в один клик — ниже показываем, как на самом деле выглядит ежедневная эксплуатация.

Kubernetes — автовосстановление
Если под падает, kubelet мгновенно поднимает новый
SELF-HEALING
P1
P2
P3
P4
P5
P6
replicas
6/6
restarts
3
uptime
99.98%
> проверка liveness не пройдена, контейнер перезапущен (OOMKilled)
> под web-7d4 готов за 2,1 с — сервис продолжает работу
infrastructure/main.tf
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   } }
$ terraform apply -auto-approve
Plan: 14 to add, 0 to change, 0 to destroy.
Apply complete! Resources: 14 added.
Метрики DORA

Четыре ключевых показателя здоровья продакшена

Частота развёртываний
47 / неделю
Уровень Elite
Время поставки
34 min
Уровень Elite
MTTR
12 min
Уровень Elite
Доля неудачных изменений
2.1 %
Уровень Elite
Откат в один клик

Вернуться к предыдущей ревизии

kubectl rollout undo deployment/web

Откат выполнен за 18 секунд
Для кого

Для каких команд это особенно важно?

Мы много лет внедряем 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-стека

На каждом уровне мы выбираем наиболее подходящий инструмент: не навязываем технологию, а ищем баланс между привычками вашей команды и устойчивостью в долгосрочной перспективе.

01
Docker · Buildah · Podman

Контейнеризация

Приложение упаковывается в Dockerfile, multi-stage-сборка создаёт минимальные образы, которые автоматически отправляются в реестр. Один и тот же образ проходит путь dev → staging → prod.

02
GitHub Actions · GitLab CI · Jenkins · CircleCI

CI-пайплайн

На каждый коммит: линтинг, модульные и интеграционные тесты, статический анализ, сканирование безопасности, сборка образа. Код, не прошедший проверку, не попадает в основную ветку.

03
ArgoCD · Flux · Spinnaker

CD-пайплайн

Подход GitOps: манифесты в git — единственный источник истины. ArgoCD постоянно синхронизирует состояние, а при дрифте сразу исправляет его или поднимает тревогу.

04
EKS · GKE · AKS · k3s

Настройка Kubernetes

Управляемый (EKS/GKE/AKS) или self-hosted (k3s, kubeadm). Размер кластера, пулы узлов, автомасштабирование и сетевые политики проектируются совместно.

05
Helm · Kustomize

Helm-чарты

Приложение упаковывается в параметризованный чарт с разными файлами значений для staging и prod. Обновление версии — одна команда.

06
Terraform · Pulumi · OpenTofu

IaC на Terraform / Pulumi

Облачные ресурсы (VPC, RDS, S3, IAM) описываются кодом. Цикл plan → ревью → apply, удалённое и заблокированное состояние, обнаружение дрифта.

07
Vault · SOPS · AWS Secrets · Doppler

Управление секретами

Файлы .env, уязвимые для утечек, уходят в прошлое. Секреты зашифрованы в Vault или SOPS: пайплайн получает их динамически во время выполнения, а разработчик никогда их не видит.

08
Prometheus · Grafana · Loki · Tempo

Наблюдаемость

Метрики (Prometheus) + логи (Loki) + трейсы (Tempo) + дашборды (Grafana). Оповещения на основе SLO и контроль бюджета ошибок.

09
PagerDuty · Opsgenie · Grafana OnCall

Дежурства и оповещения

Какое оповещение кого будит? Ротация, эскалация, оповещения со ссылками на runbook. Больше никаких звонков не тому человеку в 3 часа ночи.

10
Snyk · Trivy · Anchore · Dependabot

Сканирование безопасности

CVE в образе? Критическая уязвимость в зависимости? Пайплайн останавливает сборку и предлагает автоматическое исправление в PR. Shift-left security.

Процесс

От старого процесса к современному пайплайну за шесть шагов

Мы не меняем всю инфраструктуру за одну ночь. Двигаемся поэтапно, не останавливая бизнес и вместе с вашей командой.

01

Аудит текущего пайплайна

Двухнедельный спринт: как вы сейчас выполняете развёртывание, какие шаги делаются вручную, какой сервис является единой точкой отказа, где хранятся секреты.

02

Контейнеризация приложений

Каждый сервис получает Dockerfile, уменьшается с помощью multi-stage-сборки и отправляется в реестр. В dev и prod — один и тот же пакет.

03

Создание CI-пайплайна

Линтинг, тесты, сборка и сканирование автоматизированы. При открытии pull request бот за 6–8 минут выдаёт зелёный или красный результат.

04

Создание CD-пайплайна

GitOps на ArgoCD или Flux: staging — автоматически при каждом слиянии, prod — после одного подтверждения. Canary и откат готовы.

05

Подключение observability

Prometheus + Grafana + Loki. Формулируются SLO, правила оповещений связываются с runbook, настраивается ротация дежурств.

06

Обучение команды и передача

Двухдневный воркшоп + документация + набор runbook. Следующие 3 месяца — ненавязчивая поддержка: отвечаем на ваши вопросы в течение часа.

Инструменты

Технологии, которые мы используем в продакшене

Docker Kubernetes GitHub Actions GitLab CI ArgoCD Flux Terraform Pulumi Helm Ansible Prometheus Grafana Loki Sentry Datadog Vault Snyk Trivy
Кейсы

До и после — в цифрах

SaaS · команда из 35 человек
2 развёртывания в неделю 47 развёртываний в неделю

Jenkins → GitHub Actions + ArgoCD. Через 12 минут после слияния изменение уже в продакшене. Страх перед развёртыванием в пятницу вечером остался в прошлом.

E-commerce · 4 млн посетителей/мес.
MTTR 4 часа MTTR 12 минут

Prometheus + PagerDuty + автоматизация runbook. Оповещение приходит до падения, нужному человеку и вместе с шагами по устранению.

Финтех · платёжная платформа
Нет журнала аудита Сертифицировано по SOC2 Type II

Неизменяемые сборки, разделение обязанностей, полный аудиторский след, зашифрованные секреты. Готовность к аудиту за 6 месяцев, у аудитора ни одного замечания.

B2B SaaS · 200+ тенантов
Простои, заметные клиентам SLA 99,97% выполнено

Rolling update + readiness probe + canary-релизы. За 6 месяцев ни одного сбоя, заметного клиентам.

Мобильная игра · 8 стран
Ручная сборка TestFlight Автосборка на каждый PR

Fastlane + Bitrise + автоматизация подписи. Через 4 минуты после каждого PR команда QA видит новую сборку на своём устройстве.

Агентство · 24 клиентских репозитория
У каждого клиента своё Единый шаблон пайплайна

Переиспользуемый 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 дней.

Фиксированная цена и объём работ 3 месяца поддержки при передаче Немецкий стандарт DevOps
результ.