Статьи

Непрерывная доставка: правильный способ развертывания вашего программного обеспечения

Эта статья была спонсирована Codeship . Спасибо за поддержку спонсоров, которые делают возможным SitePoint!

Как вы развертываете свой веб-сайт или приложение на вашем живом сервере? Этот процесс звучит знакомо?

  1. Получить копию последней кодовой базы
  2. Добавить, редактировать и удалять код по мере необходимости
  3. Протестируйте обновление
  4. Скопируйте все / измененные файлы на сервер, используя FTP
  5. Промыть и повторить

Это простой рабочий процесс, используемый многими разработчиками. Часть разработчиков также будет управлять обновлениями без контроля исходного кода, такого как Git или SVN.

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

Проблемы с традиционным рабочим процессом

1. Тестирование не является надежным

Ваша локальная система точно соответствует вашей серверной среде?

2. Это подвержено ошибкам

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

3. Вы развертываете в живую систему

Пользователи могут столкнуться с проблемами доступа, даже если процесс успешно завершен в течение нескольких минут. Смирились бы пользователи Amazon, Gmail, Facebook или Twitter с частой ненадежностью?

4. Сложно вернуться обратно

Ваши ошибки живы; отменить изменения не всегда легко, даже если вы используете систему контроля версий.

5. Контроль источников может не охватывать все возможности

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

6. Это не будущее

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

7. Доставка медленнее

Ручное развертывание является болезненным, поэтому выпуск исправлений и обновлений выполняется реже.

8. Развитие непредсказуемо, и провал не может быть вашей (прямой) ошибкой

Новая версия Ruby, обновление Node.js, обновление фреймворка или изменение базы данных на вашем работающем сервере могут привести к остановке приложения. Мы редко рассматриваем другое программное обеспечение в нашем стеке, но даже обновление операционной системы или инфраструктуры может быть рискованным. Вы избегаете обновлений, чтобы минимизировать риски, несмотря на преимущества, которые они приносят скорости, стабильности и безопасности?

Основная проблема: процесс трудоемок

Вы могли бы делать гораздо более продуктивную работу. Зачем вам терпеть обновления вручную, когда программное обеспечение и службы могут выполнять утомительные задачи для вас? Возможно, вы уже используете инструменты сборки, такие как Grunt , Gulp , make или Rake — так почему бы не завершить рабочий процесс автоматической непрерывной доставкой?

Непрерывная доставка в двух словах

Непрерывная доставка позволяет вам и членам вашей команды быстро, надежно и многократно развертывать исправления, улучшения и новые функции на вашем действующем сервере. Целью является снижение риска и ручного вмешательства. Вы также столкнетесь с термином « Непрерывная интеграция», который относится к тестовой части этого процесса. Тем не менее, эти два термина часто используются взаимозаменяемо.

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

  1. Разработчик пишет автоматические программные тесты и код перед локальным тестированием и проверкой их обновлений. Над разными обновлениями может работать любое количество разработчиков, каждый из которых создал собственную ветку текущего приложения.
  2. Ветвь отправляется в центральное хранилище контроля версий, такое как GitHub или BitBucket. Как правило, это приводит к запросу на извлечение, который может быть рассмотрен другим разработчиком до слияния с основной ветвью программного обеспечения.
  3. Система непрерывной доставки автоматически извлекает обновленное программное обеспечение, запускает процессы сборки и снова выполняет автоматические тесты. Это происходит на промежуточном сервере, который имеет среду, идентичную живому серверу. Разработчики уведомляются о любых сбоях.
  4. Владельцы продукта и / или клиенты могут выполнять дополнительное приемочное тестирование и оценку на промежуточном сервере.
  5. После окончательного утверждения все изменения развертываются на работающем сервере быстро и безболезненно, без каких-либо усилий со стороны разработчика.

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

  • Процесс развертывания является надежным. Вы будете уверены, что обновление будет работать до его установки на работающий сервер.
  • Есть меньше рисков. Процесс менее подвержен человеческим ошибкам, и в случае катастрофического сбоя вы можете откатить приложение до рабочего состояния.
  • Контроль качества поддерживается. Только одобренный код должен быть запущен.
  • Ваша команда становится более продуктивной, а затраты на разработку снижаются. Первоначальные затраты времени на установку окупятся в течение нескольких дней, поскольку разработчикам не нужно участвовать в процессах развертывания вручную.

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

Автоматизированные службы непрерывной доставки

Установка, настройка и управление набором программных продуктов Continuous Delivery может быть сложной, трудоемкой и дорогой, с некоторыми продуктами сложно работать. В то время как приложения и сервисы, такие как Slack, Crashlytics и Pusher, упрощают другие задачи разработчика, другие делают то же самое для Continuous Delivery.

Одним из таких примеров является Codeship , продукт, ориентированный на UX, который может позаботиться о процессе непрерывной доставки для вас. Их системы разработаны так, чтобы быть удобными для пользователя, но вы можете получить помощь и совет от реального человека, если вам это потребуется. Среднее время настройки? Четыре минуты Это быстрее, чем один сеанс FTP, и вам нужно сделать это только один раз! У них также есть бесплатный план , предлагающий до пяти частных проектов и 100 сборок в месяц.

Чтобы узнать немного больше о непрерывной доставке, Codeship предлагает пятидневный «ускоренный курс» по электронной почте по этой теме — в левом нижнем углу их домашней страницы есть ссылка для регистрации .

Непрерывная доставка — отличный способ избавиться от тяжелой работы по развертыванию FTP, надеюсь, навсегда и заслуживающей изучения.

Вы дали Непрерывную доставку? Каковы ваши советы по управлению развертыванием?