Aetòs: от хаоса к инженерному совершенству — трёхлетняя трансформация
Как мы изменили инженерную продуктивность, построив внутреннюю платформу для разработчиков (Internal Developer Platform, IDP), которая сегодня обрабатывает ~50 млн API-вызовов в сутки, управляет 14 000 виртуальных машин и обеспечивает более 80 релизов в год — и чему вы можете научиться на нашем опыте.
Прежде чем перейти к рассказу об Aetòs, хочу сделать одно уточнение: этот материал не о том, как выбрать «правильный» язык, фреймворк или инструментальный стек. Вы разберётесь с этим сами. Технологии — не самое сложное. Самое сложное — всё то, что вокруг них.
Большинство инженеров так долго живут с поломанными рабочими процессами и бесконечной ручной работой, что боль стала нормой. Изменить это — фундаментально культурная проблема, а не техническая. Никто не платит за вашу внутреннюю платформу и никто не обязан ею пользоваться. Принятие зарабатывается, а не насаждается.
Вы побеждаете только тогда, когда побеждают они. Этот текст — о том, как я прошёл этот путь вместе с Aetòs.
Aetòs в цифрах
Масштаб и производительность
-
~50 млн API-вызовов в сутки — оркестрация всего инженерного жизненного цикла
-
14 000+ виртуальных машин под управлением — при ежедневной ротации 3 000–4 000 ВМ
-
80+ релизов в год — рост примерно в 2,5 раза по сравнению с периодом до Aetòs
-
99,9% времени безотказной работы — надёжность платформы на производственном масштабе
Бизнес-результаты
-
$2,5 млн экономии на облачных расходах ежегодно — три года подряд, снижение затрат на облако примерно на 70%
-
10 000+ инженерных часов, сэкономленных каждый квартал — время переключено с рутины на инновации
-
Сокращение времени на разбор инцидентов (triage) более чем на 90% — за счёт анализа сбоев с помощью ИИ
-
~50% ускорение цикла выпуска — от коммита до продакшна
-
Доля работы по «поддержанию огня» снизилась с 76% до 36% — большая часть инженерного времени теперь уходит на новые инициативы, а не на повторяющиеся операционные задачи
Инженерная эффективность
-
8 000+ модулей ядра на релиз — полностью автоматизированная квалификация
-
50+ конфигураций платформы — непрерывная сертификация и тестирование
-
500+ млн записей в базе данных — глубокая историческая аналитика
-
90% сокращение ручного вмешательства — автоматизация на каждом уровне
Точка разрыва
Апрель 2022 года. Проработав в VMware более десяти лет, я только что присоединился к команде Portworx компании Pure Storage. Я сидел перед ноутбуком и изучал список проблем с продуктивностью, который передал мне Раджан Ядав (Rajan Yadav), директор по разработке платформы.
Наша DevOps-команда последние несколько кварталов вручную координировала тестовую инфраструктуру, выслеживала нестабильные сбои и пыталась добиться стабильных результатов в постоянно усложняющейся матрице дистрибутивов Kubernetes, Linux-дистрибутивов и облачных провайдеров.
Проблема была не в людях — у нас работали блестящие инженеры, которые трудились в полную силу. Проблема в том, что мы переросли наши инструменты. Каждый релиз давался с трудом, как будто катишь камень в гору.
В тот вечер я начал набрасывать то, что впоследствии стало Aetòs (в переводе с греческого — «орёл»): платформой, которая должна была изменить не только то, как мы выпускаем программное обеспечение, но и то, как мы в целом думаем об инженерной эффективности.
План, который едва не остался планом
Portworx работал как стартап с минимальным штатом — большинство инвестиций вполне обоснованно направлялось на функциональность, ориентированную на клиентов. Выделить отдельные ресурсы на внутреннюю платформу было нереально, поэтому мы договорились создавать первую версию параллельно с основной работой.
Это ограничение поставило нас перед выбором: ждать идеальных условий или начать с малого и доказать ценность платформы на деле.
Решение «двадцати процентов»
Нам нужно было начать с малого, но сделать это так, чтобы система могла масштабироваться до любого уровня и фундамент был правильным.
Несколько человек из DevOps-команды выделили около 20% своего времени на создание первых компонентов Aetòs — и уже через три недели у нас работал первый микросервис: Aetòs Private Cloud.
Отсутствие выделенного бюджета обернулось неожиданным преимуществом. Оно заставило нас:
-
строить только то, что инженерам действительно нужно;
-
проверять каждую функцию через реальное использование;
-
завоёвывать поддержку, решая конкретные проблемы одну за другой.
Никакого масштабного финансируемого проекта. Только стабильные, накапливающиеся победы.
Три года спустя
Сегодня Aetòs — единственный оркестрационный слой для всех операций платформенной инженерии в Portworx. Главное — платформа вернула инженерам нечто бесценное: время — время для инноваций вместо координации.
Три года спустя небольшая DevOps-группа намеренно эволюционировала в команду платформенной инженерии (Platform Engineering), для которой Aetòs стал основным продуктом, который мы создаём и развиваем для остальных инженеров.
Благодаря тому что Aetòs берёт на себя тяжёлую работу, мы теперь управляем высокопроизводительной организацией платформенной инженерии с соотношением инженеров примерно 20:1. Один платформенный инженер эффективно поддерживает около двадцати продуктовых инженеров, не тормозя их работу — без этого IDP-фундамента такое было бы невозможно.
По задумке Aetòs может поддержать любой продукт с минимальной кастомизацией.
Решение на пяти столпах: как строился Aetòs
Aetòs держится на пяти ключевых столпах, каждый из которых закрывает критическую часть задачи повышения инженерной эффективности.
Столп 1: управление частным облаком — инфраструктура в масштабе
Сегодня Aetòs управляет 14 000+ виртуальных машин при примерно 700 развёртываниях в сутки и ежедневной ротации 3 000–4 000 ВМ. Мы эксплуатируем частные облака как на базе vSphere, так и на базе KubeVirt, и постепенно переводим новые рабочие нагрузки на модель KubeVirt + Portworx.
Результаты
-
Стабильные пайплайны с показателем успешности инфраструктуры 95%+
-
Снижение облачных расходов примерно на 70%
-
Около $2,5 млн экономии в год три года подряд
Что мы построили
Aetòs Private Cloud — программный сервис, который скрывает KubeVirt и vSphere за единым, чётко структурированным API и пользовательским интерфейсом.
Ключевые возможности:
-
управление ресурсами, квотами и арендой с встроенными ограничителями;
-
автоматическая очистка и рекультивация истёкших сред;
-
уведомления и процессы расширения для инженеров, которым нужно больше времени;
-
единообразные метаданные о каждой ВМ и среде.
При тысячах ВМ, сменяющих друг друга каждый день, сбои неизбежны. Поэтому мы встроили логику повторных попыток и плавную деградацию (graceful degradation) в каждый компонент. Система ожидает отказов и справляется с ними, не будя людей без необходимости.
Для вашей организации
Между управлением локальным дата-центром и управлением частным облаком — большая разница. Многие предприятия тратят миллионы на локальное оборудование, но по-прежнему обращаются с ним как со статичным инвентарём.
Вывод: относитесь к локальной инфраструктуре так же, как к ресурсам публичного облака — с арендой, квотами, тегированием и автоматизацией.
Столп 2: пайплайны и управление — к ежедневным готовым к выпуску сборкам
Сердце Aetòs — движок оркестрации пайплайнов. Он даёт инженерам сквозную видимость и возможность отлаживать прямо из браузера, и именно благодаря ему мы можем выпускать 80+ релизов в год.
Проблема, которую мы решили
До Aetòs:
-
пайплайны работали изолированно на разных наборах изменений, поэтому «зелёный» статус не всегда означал, что один и тот же код реально был протестирован;
-
тестовые матрицы составлялись вручную;
-
инженеры дежурили рядом с долгими задачами;
-
результаты были разбросаны по нескольким системам.
На координацию одного релиза легко уходило 20–40 часов инженерного времени.
Сегодня — ключевые возможности
-
Интеллектуальная оркестрация тестов — система анализирует метаданные сборки и автоматически запускает нужные пайплайны.
Многоуровневое тестирование:
-
L1 — дымовые тесты (smoke tests), ~2 часа
-
L2 — функциональные тесты, ~8 часов
-
L3 — системные тесты, 24+ часа
Движок рекомендаций по сборкам — продвижение между уровнями происходит только при прохождении ворот качества (quality gates).
Интеграция Aetòs AI (на базе нашего внутреннего движка LongClaw):
-
сокращение времени на разбор инцидентов более чем на 90%;
-
автоматическая классификация и кластеризация логов;
-
человекочитаемые сводки по сбоям с предложенными ответственными.
Результаты
-
80+ релизов в год по нескольким продуктам
-
~90% сокращение ручного вмешательства в пайплайны
-
~50% ускорение цикла от сборки до релиза
Для вашей организации
Если вы не знаете, с чего начать — начните отсюда. Оркестрация релизов даёт наибольший возврат на инвестиции, потому что затрагивает всех и каждый день. Сначала создайте движок пайплайнов и обеспечьте наблюдаемость с первого дня. Если инженеры не видят, что происходит и почему, они не будут доверять автоматизации.
Столп 3: EaaS (среда как услуга) — развёртывание в один клик
EaaS (Environment as a Service) полностью изменила то, как инженеры думают о тестовых средах. То, что раньше занимало дни, теперь занимает минуты.
Мы поддерживаем каталог рецептов развёртывания под названием Starting States («начальные состояния»). Каждый шаблон аккумулирует годы накопленных знаний: точную конфигурацию, необходимую для конкретных сценариев в AWS, GCP, Azure, IBM, Oracle, а также в локальных средах vSphere или на bare-metal.
До EaaS
-
Инженер создавал тикет в команду инфраструктуры.
-
Ждал 1–3 дня, пока не появится доступ к преднастроенной среде (которая зачастую не совсем соответствовала нужному).
-
Вручную настраивал Portworx и сопутствующие компоненты.
-
И лишь затем приступал к тестированию.
С EaaS
-
Инженер выбирает продукт и Starting State.
-
Нажимает Deploy.
-
Получает готовую к работе среду с управлением жизненным циклом через аренду и автоматическим удалением.
Результаты
-
10 000+ инженерных часов экономии каждый квартал
-
Тестовые стенды доступны в vSphere, AWS, Azure, GCP и на bare-metal
-
Автоматическая очистка предотвращает неконтролируемый рост ресурсов
-
«Мгновенные» стенды для типовых рабочих процессов (например, можно прямо во время разговора с клиентом одним кликом развернуть среду для демонстрации возможностей продукта)
Для вашей организации: начните с шаблонов для трёх наиболее частых сценариев. Не пытайтесь сразу охватить все возможные комбинации. Позвольте реальному использованию диктовать, что добавлять дальше.
Столп 4: квалификация Linux-дистрибутивов — автоматизированная поддержка ядер в масштабе
Если вы поставляете модули ядра, вам знакома эта боль: вселенная Linux-дистрибутивов и версий ядра непрерывно расширяется, а клиенты ожидают быстрой поддержки.
Для Portworx это вопрос критической важности.
Задача
Для каждого релиза мы обязаны обеспечить поддержку нашего FUSE-модуля для:
-
8 000+ модулей ядра;
-
множества дистрибутивов: RHEL, Oracle Linux, Rocky, Ubuntu, Photon OS, Amazon Linux, SUSE и других;
-
непрерывно обновляемых ядер — порой еженедельно.
Требования к качеству строгие: каждое ядро должно быть протестировано и квалифицировано, прежде чем мы заявляем о его поддержке.
Решение: автономные пайплайны квалификации дистрибутивов
Мы создали движок автономной квалификации дистрибутивов (Unattended Distro Qualification Engine), который работает полностью без участия человека: обнаруживает новые ядра, запускает процессы квалификации и ведёт актуальную базу данных матрицы поддерживаемости.
Интеллектуальные рекомендации:
-
анализирует показатели прохождения тестов и паттерны регрессий;
-
автоматически рекомендует ядра для поддержки при прохождении всех проверок.
Результаты
-
SLA по квалификации ядер улучшился с 7 дней до 48 часов
-
Ручная работа, которой раньше занималась отдельная команда, теперь выполняется Aetòs
-
Видимость в реальном времени по всем поддерживаемым Linux-дистрибутивам
Для вашей организации
Это была довольно уникальная задача, и мы не нашли готового решения на рынке. Если вы сталкиваетесь с чем-то подобным, не стесняйтесь обращаться — прежде чем изобретать велосипед заново.
Столп 5: единая панель управления и аналитика — решения на основе данных
Нельзя улучшить то, чего не видишь. Наши дашборды превратили решения «по ощущениям» в решения на основе данных.
Революция наблюдаемости
Результаты тестов в реальном времени
По каждому запуску мы можем ответить на вопросы:
-
Что выполняется прямо сейчас?
-
Что прошло или упало в последней сборке?
-
Какие тесты стабильно нестабильны (flaky)?
-
Какова историческая доля успешного прохождения конкретного теста?
Инженеры узнают значительно быстрее, сломало ли их изменение что-нибудь, — а не спустя часы или дни.
Анализ исторических тенденций
Работая с историческими данными, мы обнаружили паттерны, которые иначе бы не заметили — например:
-
некоторые наборы тестов показывали ~80% успешных прохождений из-за нестабильности инфраструктуры, а не проблем с продуктом. Исправив инфраструктуру, мы сэкономили тысячи инженерных часов, которые раньше тратились на погоню за ложными сбоями.
Метаданные решают всё
Мы тегируем всё: кто запросил, какой продукт, какая команда, какой проект. И это не всё — ещё версия ядра, git-коммит, номер сборки и многое другое. Это питает:
-
распределение затрат;
-
планирование мощностей;
-
аналитику использования.
Если не можешь измерить — не сможешь оптимизировать.
Результаты
-
Время обнаружения регрессий: с 24–48 часов до 2–6 часов
-
100% прослеживаемость тестов
-
Решения о релизах и изменениях инфраструктуры принимаются в 3 раза быстрее
Для вашей организации: не начинайте с грандиозного проекта по созданию дашбордов. Начните с одной метрики, которая важна больше всего. Для нас это была видимость пайплайнов с категоризацией нестабильности и ошибок. Добавляйте визуализации только тогда, когда раз за разом ловите себя на том, что отвечаете на одни и те же вопросы вручную.
Уроки трёхлетнего пути
-
Платформенная инженерия требует чаще говорить «нет», чем «да». Каждая команда хочет кастомизацию. Платформа обязана соблюдать стандарты — иначе побеждает сложность.
-
Наблюдаемость в масштабе — не опция. Наша способность диагностировать сбои инфраструктуры, сетевые несоответствия и нестабильность CI возникла именно из глубокой наблюдаемости.
-
Управление затратами нужно инженерить, а не декларировать. Aetòs стал слоем принуждения к экономически оптимальным решениям: утечки видны в дашбордах, а не в квартальных отчётах.
-
Управление сборками — самый недооценённый ускоритель скорости выпуска. Когда инженеры доверяют сигналам тестирования, всё остальное тоже ускоряется.
-
Культура меняется только тогда, когда новый путь проще старого. Чистый UX и надёжная автоматизация вытеснили «племенные» практики — никакие политические документы с этим не справились бы.
Заключение
Aetòs фундаментально изменил то, как мы создаём, тестируем и выпускаем программное обеспечение в Portworx. То, что начиналось как самодельный побочный проект, превратилось в комплексную платформу инженерной эффективности, которая сегодня охватывает каждый этап нашего цикла разработки.
Сегодня менее 35% нашего времени уходит на «поддержание огня» — против 76% в начале. С каждым кварталом всё больше инженерных ресурсов направляется на новые инициативы, а не на повторяющиеся операционные задачи.
Но за цифрами стоит культурный сдвиг. Речь идёт о том, чтобы:
-
наделить инженеров возможностями самообслуживания;
-
принимать инженерные решения на основе данных, а не интуиции;
-
автоматизировать рутинную работу, чтобы люди могли сосредоточиться на творческой.
По пути вы будете слышать «нет» — культурные изменения требуют времени. Вам не нужна большая команда или огромный бюджет, чтобы начать. Нужны ясное видение, дисциплина — решать одну проблему за раз — и терпение, пока доверие к платформе не окрепнет.
🚀 Готовы строить собственную платформу? Начните отсюда
Вам не нужно воссоздавать Aetòs, чтобы получить пользу. Вот облегчённая дорожная карта, основанная на том, что сработало у нас.
Месяц 1 — выявление и проверка
Недели 1–2: найдите главную болевую точку
-
❏ Проведите опрос среди инженеров, разберитесь в их проблемах
-
❏ Выберите одну задачу для решения (пайплайны, инфраструктура или среды)
-
❏ Определите метрики успеха (сэкономленное время, снижение числа ошибок, уровень принятия)
Недели 3–4: создайте MVP по принципам дизайн-мышления (Design Thinking)
-
❏ Разработайте архитектуру, которая сможет масштабироваться, даже если первый сценарий невелик
-
❏ Автоматизируйте сначала самую повторяющуюся задачу с наибольшим эффектом
-
❏ Следуйте принципу API first — UI может подождать
-
❏ Инструментируйте всё с первого дня: логи, метрики, трейсы
Месяц 2 — доказательство ценности
Недели 5–6: найдите реальных пользователей
-
❏ Привлеките 3–5 ранних последователей — это ваши партнёры
-
❏ Сидите рядом, пока они пользуются системой; не просто собирайте отзывы — разрабатывайте вместе
-
❏ Быстро исправляйте проблемы, чтобы завоёвывать доверие
Недели 7–8: выстраивайте доверие
-
❏ Делайте результаты видимыми: дашборды, уведомления в чат, простые отчёты
-
❏ Предоставляйте механизмы безопасного переопределения (доверие растёт, когда люди чувствуют контроль)
-
❏ Задокументируйте основные рабочие процессы
-
❏ Делитесь конкретными победами с цифрами
Месяц 3+ — постепенное масштабирование
Недели 9–12: расширяйте принятие
-
❏ Откройте доступ для немного большей группы
-
❏ Добавьте вторую по востребованности функцию — на основе реального использования
-
❏ Добавьте простой UI для наиболее типовых рабочих процессов
Квартал 2 и далее — позвольте пользователям тянуть, не толкайте сами
-
❏ Проводите регулярные рабочие часы или сессии обратной связи
-
❏ Стройте только то, что пользователи реально запрашивают и готовы принять
-
❏ Каждый месяц измеряйте и публично делитесь метриками результативности
Технологический стек
-
Portworx Enterprise с DR (аварийное восстановление)
-
Pure Storage (FlashArray / FlashBlade) для бэкенд-хранилища
-
Kubernetes (Red Hat OpenShift)
-
Portworx + KubeVirt и vSphere для частного облака
-
Python 3.12+
-
FastAPI
-
MongoDB
-
Redis
-
Elasticsearch, Logstash и Kibana (Elastic / ELK-стек)
-
Prometheus
-
Grafana
-
Jenkins
-
Slack
-
ChatGPT (используется для ИИ-триажа и суммаризации в Aetòs)
-
Open Policy Agent
-
И много кофе
Узнать больше
-
Посмотреть демо Aetòs (старое демо, но даёт представление о том, что мы построили)