В Часть 1 этого интервью С Remy DeWolf, главный инженер по команде Devtools в Eventbrite, мы обсудили, какую информацию учредимую в решение Eventbrite, чтобы переместить свою среду развития в облаке.
Команда Devtools в Eventbrite, решив построить Як
Потому что у них было слишком много услуг, чтобы пройти локально. Они знали, что хотели …| переместить их среду развития в облако , но это закончилось Як имели дополнительные преимущества, которые варьировались от
Общие условия к переход на работу удаленно из-за Covid Отказ
В этом посте мы копаем Как Як
работает , Что это как для разработки, чтобы использовать это , и Как это было получено Отказ
Как архиваторное приложение Eventbrete?
Это общая история, которую вы найдете во многих стартапах. Инженеры-основатели построили монолит, и стратегия состояла в том, чтобы построить функции быстро и захватить рынок. Это был очень успешный подход.
Поскольку компания вовремя росла, большая команда, работающая на монолите, стала сложной. При достижении определенного размера было также сложнее сохранить масштабирование вертикально.
Со временем некоторые из монолита были мигрированы на микросервисы. Теперь новые услуги, как правило, контейнерируются, а монолит контейнерит в Dev, но не в производстве.
Что побудило вас пожелать твоему DEV ENVES и какие проблемы вы решили решить?
Посмотреть Как вы решили, что пришло время построить Як? от части 1 интервью.
Как вы убедили вашу компанию?
В начале мы сотрудничаем с разработчиками, чтобы помочь нам сосредоточиться на самых важных особенностях, а также сохранить их взволнованными технологиями. В частности, был большой интерес узнать больше о Куберане. Мы также добавили инструментария к нашим инструментам разработчика Таким образом, мы могли бы измерить, сколько времени заработало.
Как только мы поняли, сколько времени разработчики потратили в ожидании или заниматься вопросами, Нам пришлось позвонить между трасными деньгами на облачных вычислениях или потрачении инженера . Мы представили наш план к CTO, и мы получили зеленый свет, чтобы двигаться вперед.
Как облако родные убивает производительность разработчика
Сделать переключатель на микросервисы, но думаю, что это слишком хорошо, чтобы быть правдой? Или вы уже сделали переключатель Но вы начинаете замечать, что местное развитие сложнее, чем раньше. Ты не одинок. Читать дальше этой белой бумаги
Какой рабочий процесс разработчика вроде с яком?
Каждое утро у разработчика есть два варианта:
- Подсоедините до их предыдущей сессии: Это займет несколько секунд, и они могут возобновить свою работу, откуда они оставили это предыдущий день.
- Обновите их локальную ветку и обновите их Remote Docker изображения: это занимает 5-7 минут, чтобы обновить окружающую среду.
С этого момента все их контейнеры бегут удаленно, и они могут работать через день. Вот некоторые из общих операций:
- Изменить код локально: Измененные файлы автоматически синхронизируются на их удаленные контейнеры. Обычно это занимает несколько секунд для доступных изменений. Мы используем
rsync
Для этого, который очень эффективен. Чтобы сохранить его просто, мы делаем одностороннюю синхронитуру (от ноутбука в удаленный контейнер).
Примечание. Этот поток намного быстрее, чем стандартный поток здания/нажатия/развертывания изображений, которые на практике трудно добраться до минуты для больших приложений.
- Код отладки: Разработчики могут добавлять точки останова в их коде и присоединиться к запущенному контейнеру, чтобы получить сеанс в прямом эфире. Мы предоставили команду, которая завернутая
Kubectl Приложить
под капотом. - Пробеги тесты: Разработчики могут проходить тесты на локально, но любые тесты, которые требуют зависимости (таких как DB или Redis), могут быть выполнены удаленно в POD. Для тестов интеграции они могут запускать тесты в определенном POD и подключаться к другим услугам напрямую.
Большинство изменений в интерфере выполняются локально и не требуют облака. Облако очень полезно для развития бэкэнда и разных тестов.
Как это работает?
У каждого разработчика есть свое собственное пространство имен, где они управляют своей средой удаленной разработчики. Кубернаны поднимают тяжелый подъем и як упрощают управление их контейнерами.
Как команда Devtool взаимодействует с средами развития?
Обычно нам не нужно взаимодействовать с Dev Env, но сосредоточиться на большом изображении, таких как управление кластерами, и добавление дополнительных функций для инструментов.
Мы поддерживаем разработчиков, поэтому иногда мы напрямую подключили к пространству имен для устранения неполадок в некоторых вопросах, через стандартные команды Kubernetes, такие как kubectl logs
.
Какое текущее обслуживание нагрузки?
Вначале было много работы, потому что у нас было несколько вопросов, в которых мы не поняли корневую причину, и мы также были слабыми с пользовательской документацией.
Со временем мы получили это под контролем. Документация была обновлена, и мы построили хорошую базу знаний о наиболее распространенных ошибках.
Как среда изменилась с того, когда вы впервые спроектировали?
Наш подход всегда был доставлять дополнительное значение, сначала фокусируясь на минимальном жизнеспособном продукте (MVP) и добавления функций со временем. По этим причинам мы сделали много изменений от оригинального дизайна.
Вот несколько интересных изменений:
- Наша инфраструктура работала на одном кластере EKS изначально. В какой-то момент мы имели 700 рабочих узлов и 14 000 стручек работает Отказ Мы столкнулись с проблемами с производительностью и ограничением ставок, которые заставили нас пересмотреть этот одноклассник. Со временем мы перешли на Мульти-кластерная архитектура где каждый кластер не было не более 200 узлов.
- Синхронизация кода непосредственно в беговые контейнеры могут иногда привести к стержению контейнера, если изменения сделали приложение отказаться от проверки зонда. После того, как несколько раз на то, как решить эту проблему, мы решили настроить Контейнер для Sidecar Это отвечает за синхронизацию кода.
- Чтобы сохранять данные со временем (например, чтобы сохранить файлы базы данных MySQL разработчика), мы используем устойчивые возможности, поддерживаемые объемами EBS. Однако AWS имеет ограничение вокруг объемов EBS — приложение, работающее в POD на экс, должно быть на узле в той же зоне доступности (AZ) в качестве объема EBS. Чтобы решить эту проблему, мы разделили наши узлы EKS за зону доступности И мы использовали Taints, чтобы убедиться, что наше состояние государства будет в том же AZ.
Были ли какие-либо неожиданные выгоды?
Да,
Общий ресурс : Вы когда-нибудь слышали, как разработчик, скажем, «Но это сработало для меня на месте, когда я провел тесты?» Согласованность улучшается, работая в облаке. Способность обмениваться средами разработчиков оказалась очень полезной при попытке понять сбои на тестирование или работу по вопросам, которые трудно воспроизвести.
Работаю по всему миру : У нас есть глобально распределенная команда, но большая часть инфраструктуры теста/QA находится в США. Простые операции, такие как разрешение зависимости приложений или загрузки докера, требуется много сетевых круглых поездок. Если задержка сети плохая, эти операции медленные.
Забегая на облаке, разработчик открывает соединение с некоторыми контейнерами (с переадресами порта или получение оболочки), а затем они могут запускать свои команды из того же области AWS, где находится остальная часть инфраструктуры. Для наших инженеров, основанных за пределы США, возможность развития на облаке было огромное улучшение.
Переход во время COVID : Когда COVID произошло, все разработчики перешли на работу удаленно. Для некоторых, это означало обмен домашним интернет-соединением с другими домохозяйствами или возвращаться к своей семье. Для некоторых из них было бы крайне сложно или невозможно запустить среду разработчика локально. Операции, такие как вытягивание документов докера или разрешающие прикладные зависимости, потребуют гигабита данных ежедневно. Развиваясь на облаке, переход к удаленной работе был довольно бесшовным, а разработчики смогли продолжить свою работу из дома.
Кельда долгое время сотрудничала с Eventbrite. Сначала мы встречались, когда мы строили предшественника к Blimp , который перемещает вашу среду разработки Docker в облаке. Eventbrite уже построил Як
Внутренне, и мы пытались сделать общее решение. Мы с тех пор мы торгуют идеями.
Проверьте Blimp Чтобы получить преимущества Як
без необходимости построить его самостоятельно!
использованная литература
Часть 1 интервью: Почему управление средами Dev — полная работа в Eventbrite
Читать Блимпные команды и использование в документах
Посмотрите, если вы делаете любой из этих 5 Common Docker Compose ошибки
Среда Remy Dewolf
Оригинал: «https://dev.to/ethanjjackson/why-eventbrite-runs-a-700-node-kube-cluster-just-for-development-2l9p»