img

Деплой: как код превращается в работающее приложение

Каждое приложение проходит разные этапы разработки перед тем как попасть к пользователю. Один из них — деплой (от англ. deploy — развертывание), то есть размещение и запуск приложения на сервере. Это важный этап, который позволяет начать работать с приложением. Давайте разберемся подробнее, как проходит деплой, зачем он нужен и какие этапы включает.

Что такое деплой 

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

После того как разработчик написал код и протестировал его на своем компьютере, необходимо отправить код на сервер, где он будет доступен пользователям. 

Типы деплоя

1. Ручной деплой. На ранних этапах разработки приложение может быть развернуто вручную. Это можно сделать через командную строку или с помощью FTP (File Transfer Protocol). Такой метод подойдет для небольших проектов, но имеет множество рисков, связанных с ошибками, так как все действия выполняются вручную.

2. Автоматический деплой. Гораздо чаще используется автоматический деплой с помощью инструментов непрерывной интеграции и непрерывной доставки (CI/CD) Этот процесс автоматизирует все этапы — от тестирования и сборки кода до его развертывания на сервере. Такой подход помогает избежать ошибки и ускоряет выпуск новых версий.

Зачем нужен деплой

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

Без деплоя код так и останется на рабочем компьютере разработчика, и никто, кроме него, не сможет им воспользоваться. Конечно, можно писать код прямо на сервере, но это неудобно, небезопасно и может привести к сбоям.

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

Что можно деплоить?

Запустить можно не только целое приложение, но и его отдельные компоненты. К примеру, в App Store или Google Play появилась новая версия мобильного приложения. Это деплой. В приложении изменились только иконки — и это тоже считается деплоем! Рассмотрим основные варианты:

1. Веб-приложения и сайты

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

2. Сервисы, работающие внутри компании

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

3. Отдельные части приложения

В разработке редко выкатывают всю систему сразу. Чаще новые функции разрабатываются по отдельности и деплоятся по мере готовности. Это может быть обновленная система уведомлений, авторизация или оплата. Деплой проходит только для отдельной части, а всё остальное приложение остаётся без изменений.

Кто занимается деплоем?

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

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

Как выглядит развертывание пошагово

На практике весь процесс проходит в несколько этапов, каждый из которых важен для успешного запуска. 

Шаг 1. Подготовка кода

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

Шаг 2. Сборка приложения

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

Шаг 3. Настройка окружения

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

Шаг 4. Перенос кода на сервер

На этом этапе приложение загружается на сервер. Это можно сделать вручную или автоматически, если используется система CI/CD. Часто компании стремятся автоматизировать этот процесс, чтобы снизить количество ошибок.

Шаг 5. Запуск и тестирование на сервере

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

Шаг 6. Переключение пользователей на новую версию

Если приложение работало раньше, его обновляют так, чтобы пользователи могли им пользоваться и не заметили проблем. В этом случае применяются техники плавного обновления, например, blue-green deployment (одна версия работает, пока тестируется новая) или canary release (обновление получает сначала небольшая группа пользователей, а затем все остальные).

Шаг 7. Мониторинг и устранение возможных ошибок

Даже если всё протестировано и отлично работает, после деплоя важно следить за приложением. Системы мониторинга отслеживают ошибки, нагрузку на сервер и время отклика. Если что-то идет не так, разработчики могут быстро откатить изменения или исправить проблемы.

Какие инструменты понадобятся

Docker. С его помощью можно упаковать приложение и все его зависимости в контейнер. Это упрощает развертывание на разных серверах, так как контейнер работает одинаково в любой среде.

Kubernetes. Это система оркестрации, которая управляет контейнерами (например, Docker) и помогает автоматизировать их развертывание и масштабирование.

Jenkins и GitLab CI пригодятся для автоматической сборки, тестирования и деплоя. Они подключаются к репозиторию с кодом и могут автоматически запускать деплой каждый раз, когда разработчик вносит изменения.

 

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Еще по теме:
img
SQL или NoSQL, вот в чём вопрос! И как раз с этим вопросом мы поможем сегодня разобраться. Что использовать в каких случаях, где есть какие преимущества и как возможно использовать их все вместе.
img
Вебхуки позволяют различным системам обмениваться данными в реальном времени. В этой статье мы разберём, что такое вебхук, как он работает, где и зачем его использовать, а также как настроить.
img
Redis — один из самых популярных инструментов для хранения данных. В статье разбираем, что такое Redis и как его можно использовать.
img
Маска подсети помогает определить, какие устройства находятся в одной сети, а какие – за её пределами. В этой статье разберём, что такое маска подсети, зачем она нужна и как её использовать.
img
Чтобы понять сети и IP-адреса, нужно знать маску подсети. Она помогает определить устройства в одной сети и важна для настройки интернета и локальных сетей.