Рубрики
Без рубрики

Развертывание кода в G приключениях

При приключениях мы развертываем 20+ раз в день для многих разных услуг, которые обрабатывают миллионы … Помечено DevOps, CI, Python, разработка программного обеспечения.

При g veventures мы развертываем 20+ раз в день для многих разных услуг, которые обрабатывают миллионы запросов и миллионов долларов в сделках, сохраняя его просто

Данил Полшин от существительного проекта

Одним из моих руководящих принципов разработки и развертывания программного обеспечения всегда было, чтобы сохранить его как можно более просто. Преждевременная оптимизация отдает ценное время разработчика, решение проблем, которые никогда не могут быть реальными. Одна из областей, в которых это очевидно в G приключениях, это то, как мы развертываем код. Сегодня я собираюсь поговорить о распространенных способах, которые мы развертываем код, плюсы и минусы каждого пути и какое будущее может выглядеть для нас.

Окружающая обстановка

На G, мы гордимся в использовании правильного инструмента для работы. Хотя мы в первую очередь, магазин Python, используя Django для наших веб-сайтов, у нас также есть несколько услуг, написанных в Go и запустили наши передние концы, используя реагирование. Каждая среда поставляется с различными проблемами и лучшими практиками, когда речь идет о развертывании, которую я опишу их ниже.

Мы используем Github Чтобы разместить наш код, Дженкинс и Трэвис CI Чтобы автоматизировать наши тесты, и в настоящее время большинство наших приложений и кода живут в VMS в колотеке недалеко от Торонто. Мы находимся в процессе перехода к AWS, но я оставлю это для другого поста.

Другие общие технологии, которые мы используем, являются Postgres (первичные дб), Redis (Кэш и ключ/магазин значений), Rabbitmq (Брокер обмена сообщениями) и Сельдерей (Очередь задачи). В будущих постах в блоге мы распустим отдельные команды и стеки.

Исторически каждая команда разработала свои собственные процессы вокруг кодовых обзоров, миграции и развертывания. Как мы выращивались, мы предприняли усилия по стандартизации наших процессов, чтобы команды было легче поделиться разработчиками и ресурсами. До сих пор очевидно в том, как мы развертываем с каждой командой, сделав ее немного по-другому.

Текущие стратегии развертывания

Ткань + git pull

Это наш простейший и старый метод развертывания наших приложений. Использует Ткань , инструмент командной строки для упрощения подключений SSH и Гит Чтобы обновить код на наших серверах и развернуть новую версию наших приложений.

Вышеуказанный гид довольно близко к тому, что мы делаем в производстве для наших приложений Django. У нас есть какой-то код, который определяет, какая среда для развертывания, а также публикация статуса развертываний для расслаивания.

Как вы можете видеть, что эта стратегия развертывания чрезвычайно проста и работала в нескольких командах в течение многих лет. Простота позволяет нам быстро и уверенно развернуть новые приложения и довести новых сотрудников в курсе и развертывание их изменений в течение первой недели их запуска.

Есть некоторые недостатки для такого простого процесса развертывания. Сервер, Github и Pypi Connection могут оставить приложение в непоследовательном состоянии. Теоретически, запуск нескольких развертываний одновременно может вызвать проблемы миграции. На практике мы редко проводим в связи с проблемами соединения, и, поскольку мы публикуем статус развертываний в расслоенный канал, все, что нужно для разработчика, чтобы проверить, что другие развертывания заканчиваются до начала собственного.

SymLink.

Подход, который мы сделали совсем недавно, – это полностью создать новую среду на каждой из машин, а затем обновить SymLinks Nginx использует для обслуживания контента. Это позволяет нам развернуть и убедиться, что приложение находится в согласованном состоянии перед переключением SymLinks и перезапуска серверов приложений.

Ниже приведен пример того, как мы развертываем одно из наших наших приложений RACT.

Это развертывание почти так же просто, как метод Git Pull, но добавляет дополнительный этап клонирования в новую папку (например, app-2018010410224) и только переключение Symlink после того, как она будет развернута на всех наших серверах.

Основная выгода этой стратегии заключается в том, что если какое-либо из требований выходит из строя (подключение к серверу, клонируя репо, создание приложения) по любому из серверов, вся развертывание будет остановлена, а продукция не будет обновляться. Это было чрезвычайно полезно, поскольку мы начали двигаться в AWS и заметили увеличение тайм-аутов соединения. Развертывание спины назад также легче с этой стратегией. Вы просто обновляете SymLinks к предыдущему рабочему развертыванию и перезапускаете Nginx.

По-прежнему все еще есть пару уменьшающихся стратегии развертывания. Серверы все еще могут иметь разные зависимости, если вы не блокируете требования к вашим требованиям PIP или узел, и вам необходимо управлять тем, сколько прошедших развертываний вы сохраняете на сервере или потенциально запускаете использование всего дискового пространства. Для приложения React вы также все еще устанавливаете все свои узловые модули на каждом сервере, который не только занимает много времени, но также использует много дискового пространства. Этого можно легко исправить, создавая локально и доставку от приложения на каждый сервер.

Будущее

Как видно из приведенных выше примеров, мы смогли развернуть десятки тысяч раз, используя простые стратегии развертывания. Когда мы начинаем проталкивать последние 50 разработчиков, мы смотрим на пути улучшения того, как мы развертываем код.

Самая большая вещь, которую мы смотрим сейчас, – это непрерывное развертывание после того, как все наши тесты работают. У нас уже есть постоянная интеграция для всех наших приложений, поэтому следующий логический шаг – это запустить окружающую среду, требования и код и отставьте его после успешного пропускания тестов. Мы также смотрим на контейнерные наши наши приложения, чтобы помочь нам управлять развертыванием (мы только начали смотреть на это).

Как вы тестируете и разверните свой код? С какими стратегиями вам наиболее удобны? Мы хотели бы услышать от вас в комментариях.

Продолжайте следовать нам на Средний и Twitter Для большего количества фрагментов технологического мира в соответствии с G!

Хотите помочь G приключениям присоединиться к нашей растущей команде и путешествовать по миру? Проверьте все наши работы и подать заявку сегодня Отказ

Первоначально опубликовано tech.gadventures.com

Оригинал: “https://dev.to/gadventurestech/deploying-code-at-g-adventures-37mh”