Решить, когда инвестировать в повышение производительности разработчиков сложно. Если вы находитесь на стороне OPS, вы обычно обеспокоены производством и выпусками. Если вы разработчик, вы обеспокоены тем, что вы можете получить новые функции как можно быстрее.
Обычно команды делают повышение производительности развития в двух ситуациях. Либо исправление настолько мало, что вы можете просто сделать это в дополнение к другой вашей работе, либо развитие настолько болезненное, что внесение изменений остается остановкой.
Тем не менее, есть еще большая мутная средняя земля: как вы решаете, что стоит инвестировать в Большое изменение к вашему рабочему процессу разработки До того, как разработка остановится?
Реми ДеВольф потратил три года, принимая такие решения в качестве Главный инженер команды Devtools в Eventbrite Анкет Он был частью решения построить Як
, который переместил среду разработки EventBrite в облако. Это было очень рассчитанное решение, поскольку оно стоило нескольких экземпляров EC2 на одного инженера и Як
был построен с нуля.
В этом первом посте мы рассмотрим, как Реми принял это трудное решение, и получит вклад в остальную часть компании. В нашем следующем посте мы рассмотрим, как работает их среда удаленного развития и каково это для разработчиков.
Читать Часть 2 этого интервью О конкретной настройке EventBrite и 3 неожиданных преимуществах удаленных средах.
Как архивируется приложение Eventbrite?
Это общая история, которую вы найдете во многих стартапах. Инженеры -основатели создали монолит, и стратегия состояла в том, чтобы быстро создавать функции и захват рынка. Это был очень успешный подход.
По мере того, как компания росла со временем, большая команда, работающая над монолитом, стала сложной задачей. И после определенного размера было также труднее продолжать масштабировать монолит вертикально.
Со временем некоторые из монолита перенесены на микросервисы. Новые услуги, как правило, контейнеры, а монолит контейнер в разработке, но не в производстве.
Какова ваша среда разработки сейчас?
Каждый инженер работает ~ 50 контейнеров что соответствует монолиту, микросервисам, хранилищам данных (MySQL, Redis, Kafka…) и различным инструментам (ведение журнала, мониторинг).
Разработчики используют як
(который мы построили внутренне) для развертывания и управления их удаленными контейнерами.
Мы используем AWS для кластеров Kubernetes, в которых у каждого разработчика есть свое пространство имен. У нас есть сотни разработчиков и много кластеров EKS.
Як
очень похож на дирижабль Поскольку это позволяет инженерам управлять своими удаленными контейнерами, не подвергая их сложности Kubernetes.
Как вы решили, что пришло время построить як?
До Як
Каждый разработчик управлял своей средой разработки на местном уровне на своем ноутбуке. Тем не менее, среда разработки стала настолько большой, что замедлила ноутбуки для разработчиков.
Основная проблема заключалась в том, что вы, возможно, не осознаете, что это была проблема, потому что она ползала по одной службе за раз.
Как только мы добавили инструментализацию в наши инструменты, мы начали понимать масштаб проблем. Переезд в облако стоит дорого, но когда мы смогли положить его бок о бок впустую инженерное время, решение было легко для нас.
Другая цель Як
должен был сделать Kubernetes легко для разработчиков. Мы сохранили его максимально минимальным, и файлы конфигурации являются простыми файлами Kubernetes. Цель состояла в том, чтобы накормить любопытство разработчика, чтобы они больше узнали о Kubernetes с течением времени.
Какие области вы рекомендуете отслеживать в отношении производительности разработчиков?
Когда это возможно, выровняйте цели по повышению производительности разработчика с бизнесом. Каждая команда Devtool должна понимать, как они вносят свой вклад в цели компании и наоборот. Если это неясно, я бы начал с этого.
Затем убедитесь, что производительность разработчиков является частью плана, а не запоздалой мыслью. Например, некоторые инженерные команды переходят на микросервисы и отслеживают количество услуг и время безотказной работы в производстве. Это отличные показатели, но они неполны. Они приведут к несоответствию, и опыт разработчика со временем пострадает.
С точки зрения каких метрик выбрать, нет общей рекомендации. Важно понимать, как работают разработчики, понимать, как часто они выполняют критические задачи, а инструменты, которые они используют. С помощью этих данных вы сможете определить наиболее важные области для инвестирования и отслеживания прогресса с течением времени.
Я также рекомендовал бы иметь метрику о среднем времени для восстановления (MTTR). Если разработчик полностью застрял, как бы вы вернули их в чистое состояние, чтобы он мог возобновить свою работу? Для этого, если вы запустите среду разработчика на местном уровне, у вас будет много разных комбинаций ОС/Инструментов/версий, что приведет к множеству различных проблем. Если вы находитесь в облаке и используете общее решение (например, Docker + Kubernetes), эта проблема будет намного проще для решения.
Как вы собрали отзывы на Eventbrite?
У нас было много каналов:
- Инструментарий в инструменты. Каждый раз, когда разработчик строит, запускает или развертывает изображения Docker, мы отправляли метрики. Точно так же каждая работа CI будет делать то же самое. Затем мы создали бы несколько панелей мониторинга для метрик, чтобы отслеживать и измерить прогресс с течением времени. Если вы используете инструмент, такой как Sumologic или DataDog, очень легко отправлять пользовательские метрики и создать информационные панели.
- Ежеквартальные обследования.
- Демо: пригласите других инженеров показать им прогресс и взаимодействовать с ними.
- Новые сотрудники: эти новые сотрудники приносят новую перспективу, и они не боятся задавать вопросы и оспаривать статус -кво.
- Сеть: строить отношения с другими разработчиками (перерывы в кофе, посещения офиса, обеды и т. Д.)
Можете ли вы привести примеры производительности разработчиков OKR?
Время начать среду разработчика находится под X мин
На этот раз обычно теряется время, поэтому важно отслеживать его и улучшить его. Если стек DEV ненадежный или медленный, он будет захвачен в этом OKR.
Взаимодействие превышает x%
Если вы отправляете обследование взаимодействия каждый квартал, у вас может быть OKR, чтобы убедиться, что тенденция вверх. Видение падения означало бы, что команда может не работать над самыми релевантными проектами.
Среднее время от совершения QA/Prod
Этот будет захватывать эффективность трубопровода CI/CD. Если вы испытаете некоторые сложенные тесты или ошибки развертывания в трубопроводе, это негативно повлияет на ключевые результаты.
Со временем некоторые OKR будут исчерпаны, поэтому подумайте об обновлении их с течением времени. Например, если в вашем опросе всегда есть одинаковые вопросы, разработчики в конечном итоге перестанут отвечать. Кроме того, если OKR был значительно улучшен, сейчас самое время сместить приоритеты.
По своему личному опыту, я сосредоточился бы на нескольких OKR, а не слишком много. Иногда, пытаясь угодить всем, у вас не будет большого влияния. Некоторые проекты могут потребовать полного фокуса команды, что может временно повлиять на другие OKR. Это было бы рассчитанной стратегией, поскольку эти проекты принесут огромные улучшения при доставке.
Есть ли какие -либо предупреждающие знаки, на которые люди должны искать, чтобы узнать, что их производительность разработчика страдает?
Здесь важно иметь хорошие показатели и контролировать их с течением времени. Вы должны быть в состоянии почувствовать импульс ваших разработчиков, просматривая различные точки данных. В идеале, вы бы привязали их к своим OKRS и просмотрите прогресс каждый спринт и внесите коррективы.
Если у вас нет этих данных, все еще есть предупреждающие признаки того, что производительность страдает:
- Увеличение случаев поддержки и/или запросов на помощь. Если разработчикам нужна внешняя помощь для выполнения своей работы, это признак того, что процесс слишком сложно использовать или не задокументирован.
- С другой стороны, я буду беспокоиться, если вы узнаете, что некоторые процессы не работают должным образом Но никто не сообщил об этом вашей команде. Вы хотите, чтобы разработчики всегда искали улучшения и не принимали сломанный процесс.
Келда долгое время сотрудничает с Eventbrite. Сначала мы встретились, когда строили предшественника в БИРПИС , что перемещает ваш Docker сочинять среду разработки в облако. Eventbrite уже построил Як
Внутренне, и мы пытались создать общее решение. С тех пор мы обменивались идеями.
Проверьте Бризоджень Чтобы получить преимущества Як
не создавая его самостоятельно!
Рекомендации
Читать Часть 2 этого интервью О конкретной настройке EventBrite и 3 неожиданных преимуществах удаленных средах.
Смотрите Команды и использование) использование в документах
Читать 5 Обыкновенный Docker составляю ошибки
Реми ДеВолф Среда
Оригинал: «https://dev.to/ethanjjackson/q-a-how-eventbrite-prioritizes-developer-productivity-33m0»