Deploy (деплой) — что это такое? Дословный перевод слова деплой на русский язык означает «развертывать». Давайте разберемся что именно мы развертываем и каким образом.
После того как программный код сайта написан, возникает вопрос: что-же необходимо сделать, чтобы он появился в интернете? Как правило, классический путь состоит из 3-х шагов:
- Покупка доменного имени.
- Приобретение и настройка хостинга.
- Деплой.
Простыми словами, деплой — это процедура переноса вашего сайта на сервер. Данная операция может быть очень затруднительной и напрямую зависит от применяемых инструментов. Когда программисты начинают реализовывать deploy, они выполняют следующие действия:
- код вашего будущего ресурса загружается на сервер;
- устанавливаются все зависимости, которые требуются;
- выполняется процесс сборки, к примеру собирается frontend часть;
- реализуются так называемые миграции, например, SQL-скрипты, изменяющие скелет базы данных;
- загружается обновленная версия кода.
Мы привели в пример один из возможных и очевидных вариантов для понимания, на самом деле их бесчисленное множество.
Хочется отметить, что многие web-студии до сих пор реализовывают данный процесс вручную. То есть программист заходит на сервер и включает git pull. После чего реализовывает вышеуказанные пункты. Данный подход к деплоингу — неправильный. Web-deploy подразумевает под собой полную автоматизацию всех задач, которые необходимо выполнить.
По большому счету, на сегодняшний день все работы, связанные с настройкой и обслуживанием серверов должны быть максимально автоматизированы и отточены.
Однако невзирая на множество различных вариантов деплоя проектов, существует одно неотъемлемое правило для каждого — запрещено делать откаты. Другими словами, если в процессе выполнения deploy вы допустили ошибку и все пошло не по плану, то следует «деплоить» по новой версию, которая была ранее.
Помимо этого, deploy можно подразделять на категории откатов и обновлений:
- пошаговое обновление — сервера обновляются поочередно;
- сине-Зелёный деплой— прямое копирование всей инфраструктуры с подменой.
Так же следует отметить такой способ, как канареечный релиз (canary release). Применяя такую методологию переход на обновленную версию происходит поэтапно — первоначально для малого количества пользователей, а потом для всех остальных.
Выбираемый вариант деплоинга напрямую зависит от применяемого хоста, а также метода настройки сервера. Вот перечень основных хостингов:
- Выделенный сервер — другими словами, либо собственный, либо взятый в аренду. Как правило, программисты уделяют намного больше времени подобному хостингу, нежели чем другим, но, в результате, у вас будет наилучшее соотношение в плане цены и качества.
- VPS/VDS — довольно сбалансированный тип работ, в перечень которых включена виртуальная машина. Преимущества данного хостинга заключаются в возможности использовать максимальный объем серверных ресурсов: память, диск и ЦПУ. Однако заранее установленного программного обеспечения не предусмотрено — все работы придется выполнять самостоятельно. Зато, если сравнивать данный хостинг с виртуальным, у вас нет каких-либо ограничений и вы можете настраивать его, как вам захочется.
- Виртуальный хостинг (Shared Hosting) — один из самых бюджетных вариантов, как можно размесить ваш ресурс в интернете. Подобный способ содержит в себе следующие возможности: доступ на сервер с заранее настроенным ПО под определенный стек, к примеру: Linux + PHP + MySQL. Такой вариант будет актуален для самых легких ресурсов и практически не нуждается в дополнительных настройках.
- PaaS (Platform as a Service) — платформа, подразумевающая под собой полноценный сервис. Один из самых дорогих и автоматизированных вариантов для выкладки ресурса в интернете. Можно сказать, что размещение сайта выполняется по команде git push. Помимо стоимости следует брать во внимание применяемые инструменты. PaaS включает в себя наибольшее количество запретов в отношении того, что и как можно реализовывать. Однако в качестве компенсации вам предоставляется не обычный автоматизированный хост, но и целая платформа, которая автоматически сформируется и «акклиматизируется» под нагрузку.
- IaaS (Infrastructure as a Service) — инфраструктура как сервис. Тип хоста, при котором основная часть ресурсов представляется в виде сервиса. Как пример Amazon Web Service (AWS).
По большому счету все варианты web-деплоя разделены на 2 составляющих: на PaaS и все прочее.
Теперь вы знаете, что такое деплой для сайта или приложения. Также следует отметить, что существует такое понятие, как Deployer для PHP. Данная опция позволяет загрузить на сервер определенную ветку системы контроля версий. Более того, ему можно написать задачи наподобие выполнения миграции после выкачивания ветки на рабочий сервер.
Надеемся данный материал был для вас полезен. В случае, если вы не смогли найти ответа на ваш вопрос или в чем-то не до конца разобрались — пишите нам в комментарии, и мы обязательно ответим.