В конце 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 команд приведены ниже: