Обзор сравнения
Platform и DevEx команд

В конце 2024 года эксперты из компании DX взяли интервью у 14 руководителей Platform и Developer Experience (DevEx) команд из различных компаний, изучив их обязанности и уникальные подходы.

Platform Engineering и Developer Experience (DevEx) — два новых направления, привлекающие внимание и демонстрирующие активный рост в современной инженерной среде. Оба типа команд охватывают широкий круг функций — от управления исходным кодом и мониторинга до обучения и развития разработчиков. Практически каждая команда также занимается непрерывной интеграцией, управлением исходным кодом и окружениями, управлением инцидентами и метриками продуктивности.

Интервью были проведены с руководителями Platform и DevEx команд из следующий компаний:
  • Менее 100 инженеров (Anonymous 1, Sourcegraph, Extend);
  • 100–1 000 инженеров (LaunchDarkly, SmartRecruiters, Anonymous 2, Plaid, Monzo, OVO);
  • 1 000–5 000 инженеров (Anonymous 3, Adyen, Yelp, Ocado, Twilio, Booking.com).

Для детального сравнения эксперты рассмотрели следующий спектр обязанностей, которыми традиционно занимаются Platform и DevEx команды:
Build (Сборка)
  • Artifact Management (Управление артефактами). Хранение и версионирование скомпилированных пакетов, образов и других артефактов сборки;
  • Change Control (Контроль изменений). Управление процессом проверки и утверждения изменений в кодовой базе;
  • Code Coverage (Покрытие кода). Измерение доли кода, охваченной автоматическими тестами;
  • Continuous Integration (Непрерывная интеграция). Автоматическая сборка и тестирование кода при каждом коммите;
  • Ephemeral Environments (Временные среды). Создание краткосрочных изолированных сред для тестирования отдельных изменений;
  • Infrastructure as Code (Инфраструктура как код). Управление и развертывание инфраструктуры с помощью практик из разработки;
  • Local Development (Локальная разработка). Инструменты и среды для разработки и отладки кода на машине разработчика;
  • Remote Development (Удалённая разработка). Облачные среды разработки, позволяющие писать и запускать код без зависимости от локального железа;
  • Low-code App (Low-code приложения). Платформы для создания приложений с минимальным написанием кода вручную;
  • Software Testing (Тестирование ПО). Инструменты и фреймворки для автоматизированной проверки качества и корректности кода;
  • Source Code Management (Управление исходным кодом). Системы контроля версий для хранения, ветвления и слияния кода.

Run (Эксплуатация)
  • Compute Runtime (Вычислительная среда выполнения). Платформы и инфраструктура для запуска приложений в продакшене;
  • Deploy Orchestration (Оркестрация деплоя). Автоматизация и координация процессов развертывания приложений;
  • Observability/Monitoring (Наблюдаемость/Мониторинг). Сбор и визуализация метрик, трейсов и логов для отслеживания состояния систем;
  • Logging (Логирование). Централизованный сбор и хранение журналов событий приложений и инфраструктуры;
  • Incident Management (Управление инцидентами). Процессы и инструменты для обнаружения, реагирования и разбора сбоев;
  • DNS (DNS). Управление системой доменных имен для маршрутизации трафика к нужным сервисам;
  • Networking (Сетевая инфраструктура). Настройка и поддержка сетевых компонентов: балансировщиков, VPN, межсетевых экранов;
  • Certificate Management (Управление сертификатами). Выпуск, обновление и хранение сертификатов;
  • Vulnerability Management (Управление уязвимостями). Выявление, приоритизация и устранение уязвимостей в коде и инфраструктуре;
  • Secrets Management (Управление секретами). Безопасное хранение и предоставление доступа к паролям, ключам и токенам;
  • Container Scanning (Сканирование контейнеров). Автоматическая проверка образов контейнеров на наличие уязвимостей;
  • Tracing (Трейсинг). Отслеживание пути запроса через распределенные сервисы для диагностики проблем с производительностью.

Measure and Learn (Измерение и обучение)
  • Cost Management (Управление затратами). Отслеживание и оптимизация расходов на облачную инфраструктуру и инструменты;
  • Productivity Metrics (Метрики продуктивности). Сбор и анализ данных об эффективности работы инженерных команд;
  • Profiling (Профилирование). Анализ производительности приложений для выявления узких мест;
  • Metadata (Метаданные). Сбор и управление данными о сервисах, зависимостях и владельцах систем.

Enable (Поддержка)
  • Access Management (Управление доступом). Контроль прав и разрешений для доступа к системам и ресурсам;
  • Dev Training & Education (Обучение разработчиков). Программы и материалы для повышения квалификации и онбординга инженеров;
  • Software Catalog (Каталог ПО). Централизованный реестр сервисов, библиотек и инструментов, используемых в организации.

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

Проведенное исследование показало, что корреляции между размером организации и широтой ответственности обнаружено не было. Команды в крупных компаниях, таких как Booking, Adyen и Monzo, нередко управляли более узким кругом задач, тогда как другие компании сопоставимого масштаба охватывали значительно более широкий спектр. Это разнообразие отражает решение каждой компании о том, что должна контролировать централизованная команда, а что продуктовые инженерные команды должны управлять самостоятельно. Например, в OVO отдельные команды сохраняют автономию над определенными технологиями.

Эксперты также попросили руководителей рассказать, почему они выбрали то или иное название — Platform или Developer Experience:
  • Jesse Adametz из Twilio поделился: "Мы назвали команду Developer Platform, потому что создаем несколько команд, ориентированных на Platform Engineering. Это название объединяет несколько ключевых областей экосистемы разработчиков с той строгостью, которой не подразумевает исключительный фокус на Developer Experience";
  • Leo Kraan из Booking.com отметил: "Мы используем название Developer Experience, поскольку оно больше ориентировано на клиента, тогда как наша команда Platform Engineering занимается дата-центрами, вычислительными платформами и сетевой инфраструктурой";
  • Samantha Betts из OVO предложила иной взгляд: "Я всегда называла свою команду DevEx, потому что этот термин хорошо воспринимается в сообществе разработчиков, хотя его трактовка варьируется от компании к компании. В последнее время я предпочитаю воспринимать DevEx скорее как концепцию, нежели как название команды. Любая команда — Platform, SRE, Infrastructure, — которая снижает когнитивную нагрузку на технические команды, практикует DevEx";
  • Mitali Parthasarathy из Yelp описала, как их команды Engineering Effectiveness сосредоточены на повышении продуктивности и опыта разработчиков, управлении пайплайнами сборки и релизов, а также автоматизации крупномасштабных миграций кода. "Наши команды Platform Engineering, однако, концентрируются на масштабируемой и надежной инфраструктуре в области сетей, данных и безопасности", — пояснила она;
  • Fabien Deshayes из Monzo отметил: "Наша группа Platform в Monzo создала фундаментальную инфраструктуру, позволившую нам масштабироваться глобально. Developer Velocity сосредоточена на устранении узких мест — это может пересекаться с Platform, но имеет отдельную миссию";
  • Mariusz Łuciów из Ocado Technology рассказал, что они используют название "Engineering Productivity", чтобы отразить цель повышения продуктивности инженеров как через платформу, так и через развитие возможностей.

Итоговые таблицы сравнения Platform и DevEx команд приведены ниже:
Если вам интересно развитие Platform Engineering и Developer Experience в вашей компании, обращайтесь к нам за помощью. Мы помогаем создавать и улучшать внутренние платформы, адаптируем модели зрелости и фреймворки, формируем и развиваем платформенные и DX команды, проводим исследования, анализ и оценку платформенных сервисов, процессов и практик, готовим рекомендации по повышению зрелости платформ и платформенных команд, помогаем реализовать рекомендации на практике.

Не забывайте подписываться на наш канал Enabling.team Insights, чтобы оставаться в курсе технологических трендов.