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

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

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

Деплоятся не только веб-сервисы, но любые сервисы, доступные по сети. Даже если эта сеть внутренняя и не доступна для запросов через интернет.

Как это происходит. Разработчики добавляют код в репозиторий. В какой-то момент они решают, что пора доставить его до продакшена. Это может происходить как по регулярному расписанию, например раз в две недели, так и просто по необходимости, вплоть до выкатки после каждого изменения. Во многом количество деплоев зависит от уровня его автоматизации — того, насколько процесс легкий в проведении и откате в случае проблем. На Хекслете деплои выполняются практически после каждого изменения, около 3 деплоев в день.

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

Для статических сайтов или отдельного фронтенда (только HTML, CSS и статические файлы) деплой сводится к обновлению кода на сервере. В ситуации деплоя бэкенда, как минимум, подключается база данных. В общем случае деплой может быть сложной процедурой, занимающей приличное время. В распределенных системах, состоящих из множества независимых веб-сервисов, вообще не бывает общего деплоя — каждая часть приложения деплоится (выкатывается) независимо.

Стоит сказать, что PaaS-платформы, такие как Heroku, берут деплой полностью на себя. Там достаточно выполнить коммит, и дальше все произойдет само. Цена за это — стоимость самой платформы

Шаги деплоя

Доставка кода на сервер

Возможны разные варианты доставки кода на сервер в зависимости от способа его упаковки. Иногда код просто копируют на сервер как набор файлов, но такое встречается редко, чаще он обновляется через Git. Раньше был популярен способ деплоя через стандартные пакетные менеджеры Linux-дистрибутивов. Сейчас он тоже встречается, и для определенных ситуаций подходит лучше всего.

Обновление базы данных

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

Запуск и остановка

Где-то в этом процессе происходит остановка старой версии и запуск новой. Если сначала остановить старую версию, а потом выполнить миграции и запустить новую, то мы получим простой (downtime) в работе сервиса. Так действительно работают многие, но это может быть болезненно для бизнеса и частых деплоев. Поэтому самые продвинутые проекты не останавливаются во время деплоя. О том, как это делать — ниже.

Автоматизация

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

Основных способа автоматизации три:

Но даже если автоматизация выполнена, все равно остается задача «запустить деплой». Запуск тоже автоматизируется. Существует целый подход, который называется Непрерывная доставка(continuous delivery). Его сложно внедрить и он не везде подходит, но если получилось, то про деплой забывают. Он выполняется полностью сам без участия людей. Главное в таком варианте — хороший мониторинг и система оповещения (алертинг) для реакции на ошибки.

Zero Downtime Deployment

Если не предпринимать специальных шагов, то каждый деплой будет приводить к остановке (возможно частичной) сервиса. В это время пользователи либо увидят ошибку, либо сообщение о происходящем обновлении. Но такого не происходит на большинстве крупных сервисов в интернете. Почему? Из-за реализации подхода «деплой без даунтайма» (downtime — простои в работе сервиса).

Zero Downtime Deployment выглядит так, как будто сервис никогда не останавливается, но при этом обновляется. Достигается это за счет одновременного запуска старой версии и новой кода. То есть когда деплоится приложение, то сначала поднимается новая версия рядом со старой. И только когда автоматика убеждается, что новая версия запустилась и работает, происходит остановка старой версии. Для выполнения этой процедуры понадобится следующее:

Источник

Что такое деплой в программировании

Deploy (деплой) — что это такое? Дословный перевод слова деплой на русский язык означает «развертывать». Давайте разберемся что именно мы развертываем и каким образом.

После того как программный код сайта написан, возникает вопрос: что-же необходимо сделать, чтобы он появился в интернете? Как правило, классический путь состоит из 3-х шагов:

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

Мы привели в пример один из возможных и очевидных вариантов для понимания, на самом деле их бесчисленное множество.

Что такое деплой сайта. Смотреть фото Что такое деплой сайта. Смотреть картинку Что такое деплой сайта. Картинка про Что такое деплой сайта. Фото Что такое деплой сайта

Хочется отметить, что многие web-студии до сих пор реализовывают данный процесс вручную. То есть программист заходит на сервер и включает git pull. После чего реализовывает вышеуказанные пункты. Данный подход к деплоингу — неправильный. Web-deploy подразумевает под собой полную автоматизацию всех задач, которые необходимо выполнить.

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

Однако невзирая на множество различных вариантов деплоя проектов, существует одно неотъемлемое правило для каждого — запрещено делать откаты. Другими словами, если в процессе выполнения deploy вы допустили ошибку и все пошло не по плану, то следует «деплоить» по новой версию, которая была ранее.

Помимо этого, deploy можно подразделять на категории откатов и обновлений:

Так же следует отметить такой способ, как канареечный релиз (canary release). Применяя такую методологию переход на обновленную версию происходит поэтапно — первоначально для малого количества пользователей, а потом для всех остальных.

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

По большому счету все варианты web-деплоя разделены на 2 составляющих: на PaaS и все прочее.

Теперь вы знаете, что такое деплой для сайта или приложения. Также следует отметить, что существует такое понятие, как Deployer для PHP. Данная опция позволяет загрузить на сервер определенную ветку системы контроля версий. Более того, ему можно написать задачи наподобие выполнения миграции после выкачивания ветки на рабочий сервер.

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

Источник

Docker: На старт. Внимание. Деплой

Как часто вам приходилось настраивать окружения сервера для деплоя вашего приложения (например веб-сайта)? Наверняка чаще чем хотелось бы.

В лучшем случае, у вас был скрипт, который все это делал автоматически. В худшем случае, это могло выглядеть вот так:

Выше я описал то, что называется vendor lock-in. Для разработки приложений, в частности серверного типа, это явление становится большой проблемой. В данной статье мы рассмотрим одно из возможных решений — Docker. Вы узнаете, как создать, задеплоить и запустить приложение на его основе.

Что такое деплой сайта. Смотреть фото Что такое деплой сайта. Смотреть картинку Что такое деплой сайта. Картинка про Что такое деплой сайта. Фото Что такое деплой сайта

/Disclaimer:/ Это не обзорный доклад о Docker. В конце этой статьи приведен список полезной литературы, которая описывает работу с Docker лучше. Это первая точка вхождения для разработчиков, которые планируют деплоить node.js приложения при помощи Docker контейнеров.

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

Что это такое и с чем его едят?

Простыми словами, Docker — это абстракция над LXC контейнерами. Это значит, что процессы, запущенные при помощи Docker, будут видеть только себя и своих потомков. Такие процессы называются Docker контейнерами.

Для того, чтобы иметь возможность создавать какие-то абстракции на базе таких контейнеров, в Docker существует образ (/docker image/). На базе Docker образа можно конфигурировать и создавать контейнеры.

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

Знакомимся ближе

На установке долго останавливаться не будем. Процесс за последние несколько релизов упростили до нескольких кликов/команд.

В этой статье мы разберем деплой Docker приложения на примере серверного Node.js приложения. Вот его примитивный, исходный код:

У нас есть как минимум два способа упаковки приложения в Docker контейнер:

Для начала скачаем официальный node.js образ:

Команда docker pull скачивает Docker образ. После этого можно выполнить команду docker run. Это создаст и запустит контейнер на базе скачанного образа.

Эта команда запустит index.js файл, произведет маппинг 3000 порта на 80 и выведет id созданного контейнера. Уже лучше! Но на одном CLI далеко не уедешь. Давайте создадим Dockerfile для нашего сервера.

Данный Dockerfile описывает образ, от какого наследуется текущий вариант, а также директорию, в которой начнут выполнятся команды контейнера и команда копирования файлов из директории, в которой запускается сборка образа. Последняя строчка указывает, какая команда запустится в созданном контейнере.

Наш контейнер готов. Мы можем запускать его при помощи команды docker run. Таким образом, мы решаем vendor lock-in проблему. Запуск приложения уже не зависит от окружения. Код доставляется вместе с Docker образом. Эти два критерия позволяют нам деплоить приложение в любое место, где мы можем запустить Docker.

Деплой

Не так страшны первые 99% как оставшиеся 99%.

После того, как мы выполнили все инструкции выше, сам процесс деплоя уже становится делом техники и вашего окружения разработки. Мы рассмотрим 2 варианта деплоя Docker:

Ручной деплой

Данный вариант хорош, если у вас нет какой-либо среды непрерывной интеграции. Сперва нужно загрузить Docker образ в место, доступное staging серверу. В нашем случае это будет DockerHub. Каждому пользователю он бесплатно предоставляет один приватный репозиторий образа и неограниченное количество публичных репозиториев.

Авторизуемся для доступа к нашему DockerHub:

Загружаем туда наш образ: docker push username/helloworld-with-docker:0.1.0.

Далее заходим на staging сервер (напоминаю, на нем уже должен быть предустановлен Docker).

Для деплоя нашего приложения на сервере нам потребуется выполнить всего одну команду:

И все! Проверьте локальный регистр образов. Если не найдете нужный результат, введите username/helloworld-with-docker для проверки DockerHub регистра. Образ с таким именем найдется в регистре, так как мы его туда уже загрузили. Docker скачает его, создаст на его основе контейнер и запустит в нем ваше приложение.

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

P.S. Данный способ не рекомендуется, если есть возможность воспользоваться Travis-CI.

Деплой при помощи Travis-CI

Первым делом добавим в Travis-CI данные DockerHub. Они будут хранится в переменных окружения.

Далее нам нужно авторизоваться и загрузить образ:

Также доставка образа может запускаться из Travis-CI различными способами:

Источник

Деплой: определение, как правильно деплоить и подробные инструкции

Что такое деплой сайта. Смотреть фото Что такое деплой сайта. Смотреть картинку Что такое деплой сайта. Картинка про Что такое деплой сайта. Фото Что такое деплой сайта

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

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

код программы разрабатывается на устройстве разработчика;

перед отправкой кода в среду запуск а е го добавляют в репозиторий для контроля версий;

если версия программы в репозитории считается работоспособной, тогда ее деплоят на рабочих серверах;

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

Этапы деплоя

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

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

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

Непрерывное внедрение деплоя

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

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

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

автоматизированный деплой при помощи специального софта;

единая культура написания кода, чтобы версии программы «дружили» между собой и были совместимыми;

база данных, совместимая с разными версиями программы, чтобы внутри БД ничего не приходилось удалять, обновлять или переименовывать для новой версии.

Заключение

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

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Деплой — Веб-разработка на PHP

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

Первый я пропущу (скоро мы его опишем в https://guides.hexlet.io), а вот про два других поговорим.

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

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

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

Кроме того, деплои можно классифицировать по способу обновления и отката:

Отдельно стоит сказать про канареечный релиз (canary release). При таком подходе переключение на использование новой версии происходит постепенно, сначала для небольшого процента пользователей, а затем и для всех.

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

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

Самый простой способ начать деплоить. Большинство PaaS-хостеров имеют бесплатные планы, достаточные для выкладки учебных проектов. Из плюсов: не придётся покупать адрес, домен третьего уровня предоставляется бесплатно. Самое популярное PaaS-решение на текущий день — Heroku, у этого сервиса прекрасная документация, следуя которой можно быстро выложить свой первый сайт. Пошаговое руководство, описывающее выкладку сайта на PHP доступно по ссылке: https://devcenter.heroku.com/articles/getting-started-with-php. Heroku используется на Хекслете для JavaScript- и PHP-проектов.

Все остальное

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

Самая первая задача — настроить окружение. Если в виртуальном хостинге всегда есть набор предустановленных программ, то во всех остальных видах хостинга нет ничего, кроме голой операционной системы. Установка необходимого ПО такой же автоматизируемый процесс как процесс деплоя и у него есть даже собственное название — Управление конфигурациями (Configuration Management). Рекомендую использовать Ansible, популярное решение для настройки (На Хекслете есть соответствующий курс).

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *