Александр Гоманов На главную Контакты
RU EN

Cases

Кейсы: инфраструктура, платформа и управление сервисами

Версия на 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
Стек
KubernetesDocker ComposeAnsibleGoPHPHAProxyNginxgRPC
02Хранилище · ADR

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
  • Spike и PoC запланированы на Q3 2026
Стек
SeaweedFSS3 APIRabbitMQWAL-GresticrclonePrometheusGoPHPPython
03Процесс · сертификация ОС

Регламент сертификации новых операционных систем

Контекст

Продукт развёртывается на нескольких 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

Общий подход

Во всех кейсах — и инженерных, и управленческих — я использую один и тот же принцип:

  1. сделать текущее состояние прозрачным;
  2. определить измеримые показатели;
  3. закрепить ответственность;
  4. устранить ручные и неформализованные операции;
  5. связать технические изменения с экономическим или операционным результатом.

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

P.S. Похожая задача — навести порядок в эксплуатации, подготовить инфраструктуру к Kubernetes, выбрать хранилище или собрать управляемую операционку и связать её с экономикой? Обсудить можно в контактах или отдельно по консалтингу на gomanov.pro