Программирование  •  06 марта  2023  •  5 мин чтения

Как и зачем применяют деплой в программировании

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

Что такое deploy

Деплой (от англ. deploy, развёртывание, приведение в действие) — это размещение готовой версии программного обеспечения на платформе, доступной для пользователей.

Пока программист пишет код, ему достаточно развернуть сайт на собственном компьютере, как большой чертёж. Финальную версию нужно отправить на деплой туда, где ею смогут пользоваться другие пользователи и тестировщики. Если этого не сделать, то другие люди не узнают о существовании сайта.

В веб-программировании в деплой входит сборка версий сайта, их упаковка, передача на сервер и распаковка на его стороне

Любое ПО проходит несколько стадий, прежде чем окажется у пользователя:

● разработка;
● тестирование;
● препродакшн тестирование;
● переход в продакшн.

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

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

Для чего нужен деплой

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

Поэтому программисты придерживаются подходов непрерывной интеграции (от англ. continuous integration) и непрерывной доставки (от англ. continuous delivery). Это означает, что разработчик передаёт на деплой только работоспособные версии ПО. Ошибки допустимы, но только те, которые не мешают пользователям взаимодействовать с программой.

Способы деплоя

Деплой веб-приложений можно выполнить тремя способами:

1. Использовать виртуальный арендованный сервер (VPS), чтобы передать файлы вручную. Это может быть скомпилированная версия, когда код переведён в машинный, или просто отдельные HTML-страницы либо JavaScript. Веб-сервер считывает изменения в файлах и отправляет их пользователю. Такой подход считается устаревшим, потому что уже никто не хранит файлы в папке на сервере.

2. На виртуальных машинах (VDS) — операционных системах, способных имитировать другое устройство или программу. Они подходят для запуска любого ПО. Для деплоя устанавливают Docker — платформу для разработки, доставки и запуска контейнерных приложений, веб-сервер, например легковесный и мощный Nginx, и уже к нему добавляют разрабатываемое ПО. Это более продвинутый путь, универсальный, но сложный.

3. С помощью специальных платформ: GitHub, GitLab, Heroku, OpenShift Online, Yandex Cloud. Это самый современный способ деплоя: разработчику не нужно ничего передавать вручную или устанавливать на компьютер дополнительные программы. Достаточно указать в коде сценарий деплоя, отправить изменение в репозиторий или хранилище данных, и все действия по сборке и деплою кода произойдут внутри платформы.

Этапы деплоя

Сложность деплоя зависит от разворачиваемой программы. Обычно процесс выглядит так

1. Отправка кода на сервер.
Файлы доставляются в рабочую среду через Git — систему контроля версий, которая позволяет сразу нескольким разработчикам сохранять и отслеживать изменения в файлах проекта.

2. Установка зависимостей.
Исходные файлы обновляются, в них прописываются связи с новыми частями кода, результат интегрируется в структуру.

3. Сборка.
Все файлы «соединяются» в единый работоспособный проект.

4. Запуск.
Предыдущая версия прекращает свою работу, запускается вариант программы с новыми функциями.

Автоматизация деплоя

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

У GitHub есть полезная функция GitHub Pages, которая позволяет публиковать живую демонстрацию кода в виде сайта в интернете. Код статических сайтов можно поместить в особую ветку — gh-pages. Для этого нужно настроить сценарий сборки через GitHub Actions. Это пайплайн, который автоматизирует процесс. Если в репозитории заранее прописать сценарий действий, сервис Actions сам выполнит все этапы деплоя.

Автоматические сборки проекта студентов на курсе Java

Чтобы настроить сценарий через GitHub Actions, нужно создать в репозитории директорию .github/workflows. В ней размещаются файлы с шагами, которые нужно выполнить в ответ на различные события. Например, проект написан на React, его нужно скомпилировать и поместить в GitHub Actions. После того как программист отправит коммит (от англ. commit, сохранить изменения), этот сценарий запустится автоматически. Платформа сама выполнит все действия: сборку, упаковку, передачу данных и запуск.

Описание процесса «Node.js CI». В терминах Github Actions написание подобных сценариев называется воркфлоу (от англ. workflow, рабочий процесс). Внутри воркфлоу определяется, на какие события реагировать и какие действия предпринять
GitHub — бесплатная платформа, но у неё есть ограничения: размер опубликованного сайта не может превышать 1 ГБ, а пропускная способность должна составлять не более 100 ГБ в месяц. Так что у разработчика есть выбор — выполнять пайплайн на публичных серверах, укладываясь в ограничения по производительности и объёму кода, или собрать всё самостоятельно у себя на компьютере. Для этого нужно установить сервер автоматизации с открытым исходным кодом, например, для Java подойдёт Jenkins, а для web-проектов будет удобен CircleCI.

Как начать деплоить

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

Посмотреть, как работать с GitHub Pages и Actions на React, можно на примере открытого проекта

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

Совет эксперта

Пётр Кушнир
Рекомендую пойти простым путём и начать с изучения проектов GitHub — Pages и Actions. Понять, как создавать ветки в репозитории, писать сценарии для платформы. Потом изучить принципы сборки фреймворков, с которыми предстоит работать, разобраться, какие файлы будут передаваться на хостинг. Когда у разработчика сложится понимание, как именно работают веб-сервер, Git и пайплайны, будет легко реализовать деплой первого веб-сайта.

Статью подготовили:

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Wed Oct 02 2024 11:12:38 GMT+0300 (Moscow Standard Time)