Кейсы: инфраструктура, платформа и управление сервисами
Версия на 2 минуты для нанимающего руководителя. Я работаю в четырёх областях: масштабирование платформ, снижение стоимости инфраструктуры, повышение стабильности production и построение операционной модели для инфраструктурных команд. Ниже — кейсы по этим осям; можно отфильтровать под свою боль.
Два направления в корпорации ITG. В SimpleOne — инфраструктура и платформа продукта: подготовка к Kubernetes, объектное хранилище, процессы и capacity. В ITGLOBAL.COM — Managed Services: команда из 13 инженеров (DevOps, SRE, Managed Apps, Linux/Windows, DBA).
SimpleOne · Head of Infrastructure
Инфраструктура и платформа в SimpleOne
Продукт развёртывается как HA-кластер на 20+ серверах (Docker Compose + Ansible) и поставляется заказчикам on-prem. Мои кейсы здесь — про подготовку к Kubernetes, объектное хранилище, воспроизводимые процессы и осознанный capacity planning.
15репозиториев микросервисов в аудите готовности к Kubernetes
~8 TiBproduction-данных в плане миграции S3 (1.8M объектов)
до 180 GBпотенциал сокращения объектного хранилища
01Платформа · Kubernetes
Аудит готовности к Kubernetes — 15 микросервисов
Контекст
Продукт развёртывается как HA-кластер на 20+ серверах через Docker Compose и Ansible; стратегическая цель — переход в Kubernetes. Кодовая база микросервисов создавалась под Compose: сеть через внешнюю Docker network, DNS через embedded resolver, конфиги БД и брокеров ссылались на 127.0.0.1/localhost как дефолты. В Kubernetes эти допущения молча ломаются при деплое — нужно было понять, что блокирует миграцию, и оценить масштаб изменений.
Что сделал
провёл статический анализ 15 репозиториев: Go-сервисы, PHP-монолит, HAProxy/Nginx-конфиги, интеграционные сервисы
категоризировал находки по критичности: migration-critical (блокируют запуск) против low-priority (dev/CI/test)
нашёл 12+ мест с захардкоженными DNS/IP-допущениями, 7+ loopback-дефолтов для БД и брокеров, Docker-специфичные resolver в proxy и healthcheck, привязанный к localhost вместо pod IP
по каждой находке дал конкретную рекомендацию: заменить дефолты на обязательные env-переменные с fail-fast на старте, перевести Docker network на K8s Services, вынести захардкоженные gRPC-адреса в конфиг
выделил отдельный класс проблем: сервис с адресом peer-сервиса прямо в компилируемом коде — требует рефакторинга, а не смены конфига
Результат
В срок
K8s-песочница продукта развёрнута и запущена, Q2 2026
документ принят как архитектурная основа для планирования K8s-миграции
сформирован бэклог технических историй для команд платформы и инфраструктуры на Q3
ADR: выбор нового S3-бэкенда для поставок продукта
Контекст
Продукт поставляется заказчикам со встроенным S3-хранилищем — один экземпляр на инсталляцию. Объём production: ~8 TiB, 1.8M объектов; хранилище используют основное приложение, несколько Go-сервисов, Ansible-плейбук, инструменты резервного копирования БД, container registry и корпоративный мессенджер. Текущий S3-бэкенд изменил лицензионную политику OSS-редакции (часть функциональности ушла в Enterprise, консоль убрана из community) — поставлять его on-prem заказчикам юридически рискованно, тем более с учётом импортозамещения.
Что сделал
составил матрицу требований к S3 — 20+ критериев: Data/Control Plane, Event Notifications → AMQP, Bucket Lifecycle, IAM Bucket Policy, SSE-KMS, Prometheus-метрики, path-style, Sigv4, совместимость с тремя S3-клиентами и инструментами резервного копирования
сравнил три варианта: статус-кво (100% матрицы, но лицензионный блокер); вариант A — отклонён (нет Event Notifications в AMQP, нет SSE-KMS, ограниченный Lifecycle, AGPL); SeaweedFS (Apache 2.0, ~95% матрицы, AMQP → RabbitMQ, совместим со всеми клиентами)
выбрал SeaweedFS — единственный вариант с OSS-лицензией без feature-gating, пригодный для поставки заказчикам
разработал тест-план: 15 кейсов Spike (Go/No-Go) + 15 PoC/prod — multipart-загрузка >10 ГБ, presigned URL с перегрузкой заголовков, Bucket Lifecycle, SSE-KMS через внешний KMS, нагрузочный прогон 30 мин для сравнения p99 latency
проанализировал схемы хранения: репликация (×2 overhead, от 2 нод) против Erasure Coding 10+4 (×1.4 overhead, от 14 нод) — с рекомендацией по каждой группе данных
подготовил 10-шаговый план миграции prod: синхронизация с верификацией контрольных сумм, read-only окно переключения, smoke-проверки, контрольный период эксплуатации
Результат
Apache 2.0
лицензионный риск устранён — SeaweedFS утверждён для всех новых поставок
все существующие клиенты сохраняют совместимость без изменений кода — только смена endpoint и credentials
Продукт развёртывается на нескольких Linux-дистрибутивах; enterprise-заказчики в РФ запрашивают поддержку отечественных ОС. Процесс добавления новой ОС был неформальным: инженер добавлял дистрибутив в список допустимых — и считал задачу закрытой. Без чёткого gate ОС попадала в документацию без полного цикла проверки (нагрузочное тестирование пропускалось, distributed/offline-режимы не проверялись) — риск, что заказчик получает ОС в списке поддерживаемых, а при развёртывании находит несовместимость.
Что сделал
разработал регламент с 3 статусами ОС (Supported / Deprecated / Removed) и 4-этапным SDLC-чеклистом: Assessment → In Progress (Done) → Testing → Released
определил структуру задачи: Feature → User Stories по командам → Subtasks на каждый вид работ (спецификация, тест-план, план НТ, стенды, документация)
закрепил требования к стендам: совпадение версий ОС/Docker/Compose, установка и настройка автоматически через pipeline/ChatOps до перехода в работу
зафиксировал обязательный вход в работу: Ansible facts ОС, сведения о Docker/containerd/Compose, нагрузочный scope (согласованный со Scaling Team), известные риски
прописал состав итоговых артефактов: MR/branch, CI jobs (pre-check/deploy/post-check), smoke/E2E, k6-артефакты (runtime.zip, JSON, xlsx, HTML, Grafana), вывод Scaling Team, known limitations
сделал нагрузочное тестирование обязательным gate для статуса Supported и определил триггеры повторной проверки: смена major/minor версии ОС, Docker-pins, репозитория, kernel/cgroup-дефолтов, CA/GPG/proxy, ключевых компонентов или базового k6-сценария
Результат
2 ОС
подтверждена поддержка за квартал, Q2 2026
регламент принят и передан на утверждение
сформирован воспроизводимый gate: ОС считается поддерживаемой только после всех этапов и фиксации результата в коде, задаче и документации
Стек
AnsibleDockerk6PlaywrightPrometheusGrafanaGitLab CI
04Хранилище · аудит
Аудит объектного хранилища — 18 бакетов, ≥400 GB
Контекст
Продукт использует внешнее S3-хранилище для релизных артефактов, резервных копий БД, CI-артефактов и вспомогательных сервисов. Точный объём не отслеживался — capacity planning делался приблизительно.
Что сделал
провёл read-only инвентаризацию 18 бакетов без изменения данных
для каждого бакета зафиксировал объём, число объектов, дату последней записи, тип содержимого
установил, что ~75% объёма (≥300 GB) занимают релизные артефакты, накопленные с 2022 года без политики ретеншена
выявил несколько резервных репозиториев без ограничений ретеншена — бесконтрольный рост объёма
нашёл бакеты без записей 1.5–4 года суммарно ≥19 GB (бэкапы тестовых сред, образы registry, зеркала репозиториев) и дубли-пересборки одного минора релиза
подготовил приоритизированные рекомендации: retention для релизов, forget --prune (restic), wal-g delete retain, lifecycle expiration для временных артефактов, per-bucket мониторинг
Результат
до 180 GB
потенциал освобождения + ≥19 GB от неактивных бакетов
выявлены резервные репозитории без ограничений ретеншена — рост предотвращён до инцидента с capacity
аудит проведён без простоя и без изменения данных
Стек
S3 APIPythonrcloneWAL-Grestic
ITGLOBAL.COM · Head of Managed Services
Управленческие кейсы в ITGLOBAL.COM
Managed Services — команда из 13 инженеров (DevOps, SRE, Managed Apps, Linux/Windows, DBA). Фокус — превратить сервисную эксплуатацию из набора ручных договорённостей в управляемую инженерную систему: с понятными зонами ответственности, измеримыми очередями, прозрачной экономикой и воспроизводимым качеством услуг.
−88%технический долг команды: 286 → 34 задачи
5,9 днмедианное время выполнения (было 7); p90 — 19 дней (было 28)
×2доход DevOps-услуги у ключевого клиента
+48%выручка на час работы инженера (кастомная услуга)
7 минSLA на реакцию по кастомной услуге, режим 24×7
4продуктированных managed-сервиса
05Операционка · ITSM/SDLC
Построение управляемой операционки для инженерного отдела
Контекст
Статус значительной части работ приходилось уточнять у исполнителей. Операционные и проектные задачи смешивались, инженеры самостоятельно выбирали следующую работу, а у руководства не было единого набора показателей по очередям, загрузке и скорости выполнения.
Что сделал
разделил операционную работу в ITSM и проектную работу в SDLC
создал отдельные очереди для инцидентов, запросов, проблем, изменений и нераспределённых задач
ввёл приоритетную обработку очереди вместо самостоятельного выбора задач инженерами
установил требования к актуальности статусов и комментариев в длительных задачах
внедрил метрики возраста и размера очереди, загрузки сотрудников, трудозатрат и времени выполнения
связал показатели операционной деятельности с ежемесячным KPI команды
Результат
−88%
технический долг: 286 → 34 задачи
медианное время выполнения задачи уменьшилось с 7 до 5,9 дня
время закрытия на уровне p90 уменьшилось с 28 до 19 дней
состояние работ стало доступно из ITSM/SDLC без дополнительного опроса исполнителей
06Команда · структура
Реструктуризация команды из 13 инженеров
Контекст
Сотрудники были объединены преимущественно по исторически сложившимся технологическим специализациям. Зоны ответственности пересекались, руководитель оставался точкой входа для большого числа операционных вопросов, а переключение контекста снижало производительность.
Что сделал
разделил отдел на три направления: DevOps, SRE и Managed Apps
назначил лидов и закрепил за командами сервисы и зоны ответственности
сформировал модель ролей и FTE для capacity planning
ввёл квартальный цикл оценки сотрудников и регулярные встречи one-to-one
разработал матрицу компетенций для DevOps-направления
включил менторинг, knowledge sharing и улучшение процессов в систему мотивации
Результат
3 команды
DevOps, SRE и Managed Apps — с лидами и зонами ответственности
операционные и технические решения делегированы лидам
появилась возможность планировать загрузку не только по сотрудникам, но и по направлениям
квартальные performance review стали регулярным процессом для всей команды
параллельно с текущей эксплуатацией были запущены новые DevOps- и SRE-проекты
07Продукт · сервисы
Перепроектирование портфеля Managed Services
Контекст
Существующие описания услуг не всегда позволяли однозначно определить состав работ, ограничения и ответственность клиента и исполнителя. Это создавало риски на presale, при активации услуги, в эксплуатации и при последующем биллинге.
Что сделал
Продуктировал четыре базовых managed-сервиса — Managed Monitoring, Managed Logging, Software Backup и Managed OS. Для портфеля подготовил:
единые описания услуг на русском и английском языках
SLA и матрицы ответственности
требования и опросники для активации
перечни типовых запросов
правила изменения параметров и деактивации услуг
GPL и единицы тарификации
presale-калькуляторы
пакеты инженерных часов XS–XL с прогрессивной скидкой
Результат
4 сервиса
Monitoring, Logging, Backup, OS — с SLA и presale-калькуляторами
состав и границы услуг стали единообразными для продаж, архитекторов и эксплуатации
появились повторяемые процедуры presale, активации и передачи услуги в поддержку
услуги получили измеримые единицы тарификации: VM, сервис, кластер, инстанс, объём хранения и инженерные часы
снизился риск появления неоплачиваемых работ за пределами согласованного SLA
08Экономика · P&L
Экономика отдела и автоматизация биллинга
Контекст
Данные о доходах, выставляемых услугах, трудозатратах и стоимости команды находились в разных системах и отчётах. Было сложно определить прибыльность конкретного клиента или услуги и отличить оплачиваемую деятельность от операционных потерь.
Что сделал
свёл данные из биллинга, 1С, ITSM и timesheets
разработал первую модель P&L отдела
ввёл план-факт по доходам и расходам
начал считать валовую маржинальность по услугам
добавил показатели выручки и прибыли на сотрудника
автоматизировал часть ежемесячных биллинг-отчётов
организовал регулярный анализ трудозатрат по клиентам и услугам
Результат
По одному из контрактов анализ показал, что фактическая стоимость работ превышала получаемую оплату. После пересмотра состава услуги:
68%
финансовый эффект от объёма высвобожденной инженерной ёмкости
неоплачиваемый объём работ, который остановили, составлял ~30% трудозатрат по контракту
освободившаяся ёмкость направлена на более маржинальные проекты
09Коммерция · pricing
Пересборка коммерческой модели DevOps-услуги
Контекст
У крупного продуктового клиента фактический объём DevOps-работ и используемая модель оплаты перестали соответствовать друг другу. В рамках одного контракта смешивались разработка, сопровождение, консультации и поддержка инфраструктуры.
Что сделал
провёл аудит задач, трудозатрат и объектов инфраструктуры
разделил работы на Build и Support
рассчитал необходимый состав команды и доли FTE
разработал модели T&M и пакетной тарификации
сформировал отдельные ставки для junior-, middle-, senior- и architect-ролей
стандартизировал ежемесячную отчётность по DevOps и Managed IT
подготовил сервисную матрицу и калькулятор стоимости поддерживаемой инфраструктуры
Результат
×2
доход по DevOps-услуге у ключевого клиента
коммерческая модель стала учитывать реальную структуру команды и характер работ
появилась прозрачная связь между объёмом поддержки, инженерной ёмкостью и выставляемой стоимостью
отчётность клиента и внутренний биллинг приведены к единому формату
10Надёжность · observability
Развитие observability и практики PIR
Контекст
Модели здоровья части сервисов были неактуальны, некоторые алерты создавали лишний шум, а знания об архитектуре и сценариях отказа оставались у отдельных инженеров. После крупного инцидента с DNS-сервисом выяснилось, что часть конфигурации PostgreSQL/Patroni была внесена вручную и не сохранялась в распределённом хранилище конфигурации. При переключении кластера это привело к нарушению репликации.
Что сделал
организовал актуализацию моделей здоровья сервисов
внедрил отдельную модель здоровья и алертинг для DNS-сервиса
оптимизировал алерты для PostgreSQL и PHP-FPM
формализовал хронологию крупного инцидента и его root cause
координировал коммуникацию между инженерами, смежными командами и сервисным центром
перевёл corrective actions из ручных операций в конфигурацию кластера и автоматизированное развёртывание
закрепил изменения в DCS/etcd и инфраструктурных playbook
Результат
80%
моделей здоровья сервисов актуализировано
причина инцидента отделена от симптомов и зафиксирована в PIR
критичная конфигурация перестала зависеть от ручного изменения конкретного узла
появился воспроизводимый сценарий восстановления и повторной инициализации кластера
технические выводы инцидента преобразованы в конкретные изменения автоматизации
11Кастомная услуга · SLA
Полный цикл кастомной услуги: мониторинг и алертинг с реакцией 7 минут 24×7
Контекст
Заказчику был нужен не типовой мониторинг из каталога, а кастомная услуга под его критичные сервисы — с гарантированной реакцией на инциденты в режиме 24×7. Готового продукта под такой уровень реакции в портфеле не было, а разовые договорённости не давали ни предсказуемого качества, ни понятной экономики.
Что сделал
Провёл услугу через полный цикл — от требований до эксплуатации и биллинга:
собрал требования, объекты наблюдения и критичные сценарии, согласовал пороги и приоритеты
спроектировал и разработал кастомный мониторинг и алертинг под сервисы заказчика
заложил SLA на реакцию 7 минут в режиме 24×7 с дежурствами, маршрутизацией и эскалациями
упаковал услугу коммерчески: состав работ, единицы тарификации, SLA-матрица и калькулятор
провёл активацию, передачу в эксплуатацию и регулярную отчётность
Результат
+48%
выручка на час работы инженера
7 мин
SLA на реакцию, режим 24×7
сформирован воспроизводимый шаблон для похожих кастомных услуг — от presale до эксплуатации
Approach
Общий подход
Во всех кейсах — и инженерных, и управленческих — я использую один и тот же принцип:
сделать текущее состояние прозрачным;
определить измеримые показатели;
закрепить ответственность;
устранить ручные и неформализованные операции;
связать технические изменения с экономическим или операционным результатом.
Моя задача как руководителя — не выполнять всю инженерную работу самостоятельно, а построить систему, в которой команда стабильно принимает решения, поддерживает сервисы и развивает инфраструктуру без постоянного ручного контроля.
P.S. Похожая задача — навести порядок в эксплуатации, подготовить инфраструктуру к Kubernetes, выбрать хранилище или собрать управляемую операционку и связать её с экономикой? Обсудить можно в контактах или отдельно по консалтингу на gomanov.pro →