При изучении программирования или смежных с ним дисциплин очень часто можно услышать слово «деплой». Многие новички не до конца понимают, что оно означает. Добавляют неразберихи объяснения некоторых специалистов, которые рассказывают о том, что писать код сразу на сервере нельзя, и его обязательно нужно деплоить. Начать разбираться в этом вопросе лучше всего с основ.
Что такое deploy
В переводе с английского деплой означает «развертывание». В веб-программировании под этим словом понимается запуск сайта или приложения на хостинге или сервере. Изначально готовый проект хранится на локальном компьютере, после чего разработчик выгружает его в специальное рабочее пространство, где к нему можно посылать запросы.
Процесс выгрузки сайта на сервер или хостинг называется деплоингом. Тот же самый процесс обозначает выражение «отправить в продакшн». Если с первым словом все понятно, то со вторым тоже лучше разобраться.
Продакшн — это версия веб-приложения, которую увидят все пользователи в сети. По сути, продакшн представляет из себя одну из разновидностей деплоя. Все потому, что запустить сайт можно, например, на тестовом сервере, и пользователи в интернете его просто не увидят.
Для чего нужен deploy
С помощью деплоя разработчики размещают свой программный продукт в открытом доступе. Некоторые программисты, во время первичной разработки, пишут код прямо на сервере. В этом случае бэкенд-разработчики могут отслеживать возникающие ошибки в режиме реального времени и устраняют их, меняют настройки. Однако, у такого подхода есть серьезный недостаток: рабочую версию сайта со всеми ошибками и недоработками могут увидеть пользователи.
Чтобы такого не происходило, большинство программистов придерживаются подходов непрерывной доставки и непрерывной интеграции. В этом случае на деплой передаются только работоспособные версии программного обеспечения. Конечно, ошибки могут встречаться, но только те, которые не влияют на взаимодействие пользователя с программой.
Способы деплоя
Деплоить сайты и веб-проекты можно тремя основными способами:
- При помощи выданного в аренду виртуального сервера (VPS). В этом случае все файлы передаются вручную, что довольно неудобно. Это могут быть HTML-страницы, JavaScript или скомпилированная версия. Последняя создается путем перевода исходного кода в машинный. В полученных файлах веб-сервер считывает изменения и отправляет их обратно пользователю. Сегодня такой подход практически не используется, поскольку от хранения файлов в папках на сервере уже давно отказались.
- На виртуальных машинах (VDS), представляющих из себя операционные системы, с помощью которых можно имитировать любое устройство или программу. На них запускается абсолютно любое ПО. Чтобы начать деплоить, достаточно установить специальную платформу Docker. С ее помощью разрабатываются и запускаются контейнерные приложения или веб-серверы. Этот путь считается универсальным, но достаточно сложным, особенно для новичков.
- Средствами специальных платформ, таких как: GitHub, Yandex Cloud, Heroku, GitLab и др. Данный способ деплоя самый простой и современный. От разработчика не требуется установки дополнительных программ или ручной передачи файлов. Сценарий деплоя указывается прямо в коде, после чего все изменения достаточно отправить в репозиторий. Сборка и деплой кода произойдет автоматически, встроенными средствами платформы.
Этапы деплоя
Как и любой другой процесс, деплой состоит из этапов. Специалисты обычно выделяют 4 основных:
- Передача кода на сервер — это доставка файлов приложения в рабочую среду через систему контроля версий (Git). Она позволяет сразу нескольким разработчикам взаимодействовать с проектом: отслеживать изменения и при необходимости их сохранять.
- Установка зависимостей — подразумевает обновление исходных файлов и запись в них связей с новыми частями ПО. Полученный результат добавляется в существующую структуру.
- Сборка — объединение всех файлов в один работоспособный проект.
- Запуск — прекращение работы предыдущей версии и запуск обновленного варианта программы с расширенным функционалом.
Автоматизация деплоя
Вручную заниматься выполнением каждого из вышеперечисленных пунктов довольно долго и непродуктивно. Такая работа просто будет отнимать у программиста силы и время, а также приведет к увеличению багов и ошибок в проекте. Ручной деплой негативно сказывается на скорости выхода сайта или приложения в продакшн. Следовательно, процесс развития сервиса начинает замедляться.
Избежать этого поможет автоматизация деплоймента. Реализовать такой процесс можно несколькими способами. Выбор будет зависеть от масштаба проекта, используемых технологий, а также бюджета.
Первый способ подразумевает использование специальных надстроек и утилит, разработанных для конкретных языков программирования и их библиотек. Второй способ основан на системах автоматизации и управления или облачных сервисов для веб-приложений. Третий вариант заключается в использовании платформ, управляющих контейнерами.
Как начать деплоить
Новичкам лучше всего начинать со сценария автосборки, в котором необходимо перечислить этапы для своего программного обеспечения. Например, если предполагается деплоить проект на React, то нужно разобраться с тем, какие именно шаги надо прописать для этой библиотеки. После этого можно обратиться к сервисам по типу GitHub. Современные площадки подходят для написания бесшовных одностраничных приложений с нуля.