Назад | Перейти на главную страницу

Стратегии многосерверного развертывания - Git на производственных серверах?

Главный вопрос: является ли развертывание с использованием Git на производственных серверах хорошей стратегией?

Многие, многие стратегии развертывания, которые я вижу, вращаются вокруг наличия Git на ваших серверах (разработка, подготовка и производство).

Преимущества этого кажутся очевидными для развертывания на стадии / производстве:

Однако я вижу в этом некоторые недостатки:

Компании по развертыванию в качестве услуги (например, Beanstalkapp.com, deployhq.com) используют FTP, SFTP или SSH. Beanstalkapp, в частности, хорош только для изменения файлов на основе истории git (вместо повторного развертывания каждого файла). Эти службы не запрашивают, чтобы у вас был git на ваших сценических / производственных серверах (хотя, если вы развертываете через SSH, возможно, вы использовали бы / могли бы использовать эту стратегию).

Я обнаружил, что мне нравится использовать sftp:

Стоит ли простота использования git на производственном сервере с точки зрения лучших практик и безопасности? Если нет, то как лучше всего выполнить развертывание без использования инструментов непрерывной интеграции?

(Я спрашиваю только о том, чтобы пропустить инструменты CI, поскольку временные / бюджетные / клиентские ограничения не позволяют мне использовать их в повседневной жизни).

Отвечая на ваш вопрос: Да, развертывание с использованием git (или любого другого элемента управления версиями) - это правильный путь, особенно когда ваша инфраструктура начинает становиться сложной / большой.

Отвечая на ваши вопросы

  • Безопасность должна быть многоуровневой, и даже если бы git был действительно опасным вектором атаки, кому-то все равно пришлось бы получить доступ к серверам для этого. Имейте хорошую безопасность сервера, аутентификацию на основе ключа SSH и контроль доступа / ведение журнала, и у вас будет очень низкий риск.

  • Если вы хотите написать инструмент развертывания, конечно, вы должны рассмотреть процедуру отката в случае сбоя обновления кода. Хорошо то, что такие инструменты, как capistrano (с которыми я более знаком), уже имеют все эти встроенные шаги, и вы можете изменить поведение и т. Д.

Я думаю, что лучше всего использовать инструмент развертывания, например капистрано или Влад Развертыватель или даже Chef развертывает если у вас уже есть Chef (или другой инструмент управления конфигурацией).

Capistrano, например, по умолчанию ориентирован на рельсы, но вы можете адаптировать его для развертывания чего угодно. Он будет подключаться к вашим серверам, обновлять код (сохраняя некоторые старые версии на случай, если вам нужно откатиться к предыдущей версии), выполнять такие задачи, как миграция или очистка БД, а затем при необходимости перезапускать службы. Вы можете адаптировать это для своей среды и даже иметь разные среды (я работал с производством, заявив + 3 других).

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