Stage что это в разработке

Среды, код и релизы

Лучшие практики по именованию и разграничению сред в соответствии с их предназначением, взаимному соответствию сред и ветвей кода, и процессу выпуска.

Именование сред

Разработки [dev] — та среда (база данных, сайт, ВМ и т.д.), где развёртываем свежий код и смотрим, что получается.

Демо [demo] — тут промежуточный результат показывается заказчику. Пока развёрнутый здесь полуготовый функционал ждёт внимания заказчика, на [dev] можно всё сломать, работая дальше.

Тестовая [test] — тут тестируется функциональность. Среда наполнена тестовыми данными, которые могут отражать редко возникающие (в рабочей среде) случаи или быть удобными для тестирования. Пока тут идёт тестирование того, что готовится в продакшен, на [dev] уже появляется код следующего релиза.

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

Продакшен [prod] — тут работают пользователи.

Связь с кодом

В зависимости от системы бывает, что код идёт в развёртывание вместе с конфигурацией (набором переносимых настроек). При этом, сам код ведётся в репозитории, а конфигурация в среде.

Изначально, код, попадающий в ветвь /dev, выкатывается в среду [dev], где настраивается конфигурация к нему. Затем, код и конфигурация (иногда по частям) переносятся в другие среды.

Путь кода

То, что исправляется в /main при тестировании, естественно → /dev.

Путь конфигурации

[dev] → экспорт в репозиторий отдельно от кода.

Ошибки проектирования систем

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

Двусторонняя зависимость

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

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

Бывает, что в покупной системе есть несколько путей создания вещей, таких как структуры данных или объекты. Например, в ELMA-BPM есть создание объектов через конфигуратор, а есть через плагин к Visual Studio. Выбирайте более низко-уровневый способ, иначе попадёте на описанную двустороннюю зависимость.

Логика в базе данных

Переразвернуть базу данных гораздо сложнее чем пересобрать код.

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

Из-за постоянной работы в общей базе (читай «среде»), в свою очередь, теряется смысл ветвления кода в репозитории.

В итоге, от /dev бессмысленно отделять ветви фич, что, в свою очередь, не позволяет выделять длинные работы и делать релизы независящими от них.

Кроме того, поскольку перенос из среды в среду (ибо это из базы в базу) сложнее, количество сред в процессе пытаются сократить, не выходя за [dev] → [stage] → [prod] (а то и [dev] → [prod]). Тестируют и демонстрируют функционал прямо на [dev].

Логика в БД сегодня, это ошибка архитектуры (по многим причинам), которую, наверное, мало кто будет отрицать (хотя случается и такое). В данном случае, это ограничение для повышения качества и сокращения цикла выпуска.

Источник

Кто такой стейдж-дизайнер и почему за этой профессией будущее?

Отвечает главная российская студия интерактивных медиа Sila Sveta.

Stage что это в разработке. 9d56bf547d6977f0986337da5c360384. Stage что это в разработке фото. Stage что это в разработке-9d56bf547d6977f0986337da5c360384. картинка Stage что это в разработке. картинка 9d56bf547d6977f0986337da5c360384

Stage что это в разработке. 6602ee9df8501260a7f10ade15b3ad47. Stage что это в разработке фото. Stage что это в разработке-6602ee9df8501260a7f10ade15b3ad47. картинка Stage что это в разработке. картинка 6602ee9df8501260a7f10ade15b3ad47

Обложка: Sila Sveta / YouTube

Проекты Sila Sveta впечатляют зрителей объёмом, графикой и масштабностью. Для фестиваля Signal в Никола-Ленивце команда придумала грандиозный проект — 40-метровую антенну Contact, которая может отправлять послания в космос.

Звучит как сюжет из научной фантастики, но это реальная инсталляция. Подробнее о проекте и о том, как создаётся стейдж-дизайн, мы поговорили с основателем студии Александром Усом, продюсером Дмитрием Бабаниным и техническим директором Мурсалом Мамедовым.

Кто такой стейдж-дизайнер

Sila Sveta в буквальном смысле зародилась в клубе. Тогда, 15 лет назад, Александр Ус начал эксперименты с проекторами и создавал первые инсталляции для техно-вечеринок. В скором времени в арсенале студии появились и другие осветительные приборы, а также голограммы.

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

Stage что это в разработке. 12495427102021 62e51761c08ca233eee70b5c80c9bf4451cf0b75. Stage что это в разработке фото. Stage что это в разработке-12495427102021 62e51761c08ca233eee70b5c80c9bf4451cf0b75. картинка Stage что это в разработке. картинка 12495427102021 62e51761c08ca233eee70b5c80c9bf4451cf0b75

Александр Ус

«Важно, чтобы у «объекта» был потенциал работы в течение долгого времени. Желательно постоянно трансформироваться и всегда удивлять зрителя. Например, в клубе ты должен отработать до восьми часов. Это очень много. Бывает, что ты придумываешь классную форму, но зритель устаёт от неё всего за час. Поэтому всё нужно предусмотреть заранее.

Можно придумать навороченный объект, но потом его невозможно будет построить. Именно поэтому стейдж-дизайнер должен понимать малые архитектурные формы и разбираться в технике: как устроены лебёдки, как крепить подвесы и так далее. Нужно понимать, как работают LED, свет и проекция, почему они плохо совмещаются и засвечивают друг друга.

При этом любой стейдж-дизайн должен начинаться с создания макета. Поэтому базовое образование точно должно быть. Например, Сергей Фадеев учился на архитектора, и он понимает многие процессы. А я, честно говоря, самоучка. Но за 15 лет работы в этой сфере у меня появился колоссальный опыт».

Инсталляция в Никола-Ленивце

Синопсис Contact звучал так: «Нужно поставить огромный диодный столб, который будет отправлять сообщения в космос». Разработка проекта началась ещё в марте, а основные работы по установке начали проводить в июне. Команда придумала несколько вариантов того, как это сделать.

Stage что это в разработке. 13043727102021 c0c954a3a268bfc515e88839a41a25de5bd1b194. Stage что это в разработке фото. Stage что это в разработке-13043727102021 c0c954a3a268bfc515e88839a41a25de5bd1b194. картинка Stage что это в разработке. картинка 13043727102021 c0c954a3a268bfc515e88839a41a25de5bd1b194

Stage что это в разработке. 13440427102021 2229e417950c39bd1ac90259b6c781a232a40430. Stage что это в разработке фото. Stage что это в разработке-13440427102021 2229e417950c39bd1ac90259b6c781a232a40430. картинка Stage что это в разработке. картинка 13440427102021 2229e417950c39bd1ac90259b6c781a232a40430

Stage что это в разработке. 13440327102021 71b97f3681cfd481f98f8279e17d064ae63ea66a. Stage что это в разработке фото. Stage что это в разработке-13440327102021 71b97f3681cfd481f98f8279e17d064ae63ea66a. картинка Stage что это в разработке. картинка 13440327102021 71b97f3681cfd481f98f8279e17d064ae63ea66a

Sila Sveta договорились со строительной компанией Liebherr, которая согласилась предоставить технику и провести расчёты нагрузок. Оставалось понять, где и как поставить кран. Для этого специалисты по геодезии провели исследование почвы, в ходе которого выяснилось, что часть территории — это заливные луга.

Stage что это в разработке. 13440427102021 b96f49b701f581862428f9c58e1a46c731d0aa89. Stage что это в разработке фото. Stage что это в разработке-13440427102021 b96f49b701f581862428f9c58e1a46c731d0aa89. картинка Stage что это в разработке. картинка 13440427102021 b96f49b701f581862428f9c58e1a46c731d0aa89

Stage что это в разработке. 13440427102021 d75dd4921f9f5ca9dc828e1efafbd5a21dfa9c5d. Stage что это в разработке фото. Stage что это в разработке-13440427102021 d75dd4921f9f5ca9dc828e1efafbd5a21dfa9c5d. картинка Stage что это в разработке. картинка 13440427102021 d75dd4921f9f5ca9dc828e1efafbd5a21dfa9c5d

Stage что это в разработке. 13440427102021 cece785eb92cd643f5e788e5f37e3d933a76f56c. Stage что это в разработке фото. Stage что это в разработке-13440427102021 cece785eb92cd643f5e788e5f37e3d933a76f56c. картинка Stage что это в разработке. картинка 13440427102021 cece785eb92cd643f5e788e5f37e3d933a76f56c

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

Stage что это в разработке. 12524227102021 9e2e669db20237c908aae2c867ddc06fbc3a3d08. Stage что это в разработке фото. Stage что это в разработке-12524227102021 9e2e669db20237c908aae2c867ddc06fbc3a3d08. картинка Stage что это в разработке. картинка 12524227102021 9e2e669db20237c908aae2c867ddc06fbc3a3d08

Дмитрий Бабанин

«По большей части мы всегда используем 3D-модель помещения, потому что обязательно нужно понимать, где у тебя точки подвесов, где какие выступы и как устроена геометрия сцены. В случае с инсталляцией в поле нам не пришлось создавать 3D-модель самой площадки.

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

Каждый проект — это поиск. Иногда кажется, что всё просто, но оказывается, что только подготовка займёт месяц. А иногда бывает так, что проект большой, но при этом тебе всё понятно, как делать, потому что есть готовые технические решения и ничего сверхъестественного не требуется».

Работа с контентом

Так как была задача отправлять сообщения, команде пришлось создать чат-бот в Telegram — в этом помогли коллеги из EORA Group. Все послания проходили две ступени модерации:

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

Источник

Как организовать модель Development, Staging, Production?

30k уников в день, три выделенных сервера в распоряжении. У меня стоит две задачи: построить fail-safe работу двух (трёх?) продакшн серверов (один серв. упал, сайт жив); и организовать работу сторонних фриланс-разработчиков, которые будут обновлять сайт.

Предполагаю сделать 1 сервер load balancer’ом, и два зеркальных production — обрабатывать запросы.

Как лучше поступить с разработчиками? Прочитал про Development — (Integration) — Staging — Production. Стоит ли поднимать виртуальные машины для Development и Staging, или вполне можно держать их на одном из продакшн, на отдельном IP, со своей копией БД?

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

Что почитать про Best Practices организации работы разработчиков над проектом?

Stage что это в разработке. 51fefa2d570bec423c8a49e09c16cae3. Stage что это в разработке фото. Stage что это в разработке-51fefa2d570bec423c8a49e09c16cae3. картинка Stage что это в разработке. картинка 51fefa2d570bec423c8a49e09c16cae3

Разработчики должны иметь свое изолированное окружение, обычно локальное
Дальше неплохо иметь промежуточный dev сервер, как для последнего прогона тестов, так и для интеграционных тестов
Далее dev копируется в продакшн, или снепшот из продакшена копируется в дев и они меняются ( если что можно мгновенно переключиться в старый )
Заливка из VCS только в дев.

Можно ли ставить дев и продакшн в одной среде зависит от того когда тестируется производительность и прочие нагрузочные вещи. Если до заливки в дев, то можно, иначе — нельзя — есть риск завалить тестами или кривыми изменениями.

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

Источник

Окружения развёртывания программного обеспечения

Stage что это в разработке. image loader. Stage что это в разработке фото. Stage что это в разработке-image loader. картинка Stage что это в разработке. картинка image loader

Только что опубликовал в русской википедии перевод статьи Deployment environment.

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

В развёртывании программного обеспечения, окружение или ярус является компьютерной системой в которой компьютерная программа или компонент программного обеспечения развёртывается и выполняется. В простом случае, такое развёртывание и немедленное выполнение программы на той же машине, может выполнятся в единственном окружении, однако при промышленной разработке используется разделение на development окружение (‘окружение разрабочика’) (где делаются исходные изменения) и production окружение (которое используют конечные пользователи); часто с промежуточными этапами (‘stages’) посередине. Этот структурированный процесс управления релизами может иметь фазы deployment (rollout, ‘развёртывание’, ‘выкатка’), testing (‘тестирование’), и rollback (‘откат’) в случае проблем.

Окружения могут существенно отличаться в размерах: deployment окружение это обычно рабочая станция отдельного разработчика, в то время как production окружение может быть сетью множества географически разнесённых машин в случае с дата-центров, или виртуальными машинами в случае с облачными решениями. Код, данные и конфигурация могут быть развёрнуты паралельно, и нет необходимости связи с соответствующим ярусом — например, pre-production код может подсоединяться к production БД.

Архитектуры

Архитектуры развёртывания существенно разнятся, но в целом, ярусы начинаются с develpment (DEV) и заканчиваются production (PROD). Распространённой 4-х ярусной архитектурой является каскад ярусов deployment, testing, model, production (DEV, TEST, MODL, PROD) c деплоем софта на каждом ярусе по очереди. Другое распространённое окружение это Quality Control (QC), для приёмочного тестирования; песочница или экспериментальное окружение (EXP), для экспериментов не предназначенных для передачи в продакшен; и Disaster Recovery (‘аварийное восстановление’), для предоставления возможности немедленного отката в случае проблемы с продакшеном. Другой распространённой архитектурой является deployment, testing, acceptance and production (DTAP).

Такая разбивка в частности подходит для серверных программ, когда сервера работают в удаленных дата-центрах; для кода который работает на конечных устройствах пользователя, например приложений (apps) или клиентов, последний ярус обозначают как окружение пользователя (USER) или локальное окружение (LOCAL).

Точные определения и границы между окружениями варьируется — test может рассматриваться как часть dev, приёмка может рассматриваться как часть test, часть stage, или быть отдельной и так далее. Основные ярусы обрабатываются в определённом порядке, с новыми релизами при развёртывании (rolled out или pushed) на каждом. Ярусы experimental и recovery, если представлены, являются внешними к этому процессу — experimental релизы являются конечными, в то время как recovery являются обычно старыми или дублирующими версиями production, развёрнутыми после production. В случае проблем, в последнем случае можно сделать roll back к старому релизу, и большинство просто выкатывают старый релиз таким же способом как новый. Последний шаг, деплой в production («pushing to prod») самый чувствительный, т.к. здесь любые проблемы напрямую влияют на пользователя. По этой причине это часто управляется по разному, но как минимум мониторится более тщательно, и в некоторых случаях имеется фаза отката или простого переключения. Лучше всего избегать названия вроде Quality Assurance (QA); QA не означает тестирование софта. Тестирование важно, но это отличается от QA.

Иногда развёртывание выполняется вне обычного процесса, главным образом для предоставления срочных или небольших изменений, без необходимости полного релиза. Это может быть один патч, большой service pack или небольшой hotfix.

Окружения могут быть очень разных размеров: разработка обычно идёт на индивидуальных машинах разработчиков (хотя это могут быть тысячи разработчиков), в то время как продакшеном могут быть тысячи географически распределённых машин; тестирование и QC может быть маленьгим и большим, зависеть от предоставленных ресурсов, а staging может варьироваться от единичной машины (подобно canary) до точных дубликатов продакшена.

Окружения

Local

Development/Thunk

Сервер разработки выступающий как песочница где разработчик может выполнить unit-тестирование

Integration

Основа для построения CI, или для тестирования сайд-эффектов разработчиком

Testing/Test/QC/Internal Acceptance

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

Staging/Stage/Model/Pre-production/External-Client Acceptance/Demo

Production/Live

Серверы конечных пользователей/клиентов

Окружение разработчика

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

В контексте управления ревизиями, особенно при участии множества разработчиков, проводятся более тонкие различия: разработчик имеет рабочую копию исходного текста на своей машине, и изменения вносятся в репозиторий, будучи закомиченными либо в «стволе», либо в ветке, в зависимости от методологии разработки. Окружение на отдельной рабочей станции, на которой изменения отработаны и опробованы, может называться локальным окружением или песочницей. Сборка копии исходного кода репозитория в чистом окружении является отдельным этапом интеграции (интеграция разрозненных изменений), и это окружение может называться интеграционным окружением или окружением разработчика; при непрерывной интеграции это делается часто, так же часто, как и для каждой ревизии. Понятие уровня исходного кода звучащее как «фиксация (коммит) изменения в репозитории» с последующей сборкой «ствола» или ветки — соответствует переходу от локального (индивидуального окружения разработчика) к интеграции (чистой сборке); плохой релиз на этом этапе означает, что изменение сломало сборку, а откат релиза соответствует либо откату всех сделанных изменений, либо отмене только ломающего изменения, если это возможно.

Тестовое окружение

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

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

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

Staging

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

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

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

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

Продакшен-окружение

Продакшен-окружение также известно как live (в частности в применении к серверам) так как это окружение, с которым непосредственно взаимодействуют пользователи.

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

Развертывание новой версии обычно требует перезапуска, если только нет возможности горячего переключения, и поэтому требует либо прерывания обслуживания (обычно это пользовательское ПО, когда приложения должны быть перезагружены), либо дублирования — постепенного перезапуска экземпляров «за спиной» у балансировщика нагрузки, либо заблаговременного запуска новых серверов с последующим простым перенаправлением трафика на новые сервера.

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

Источник

Среды разработки

Stage что это в разработке. blog promo e872632493a971b3ba0722ccffaec76d1df333a297017200dadbff257e5959c1. Stage что это в разработке фото. Stage что это в разработке-blog promo e872632493a971b3ba0722ccffaec76d1df333a297017200dadbff257e5959c1. картинка Stage что это в разработке. картинка blog promo e872632493a971b3ba0722ccffaec76d1df333a297017200dadbff257e5959c1

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

Производство

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

Кроме этого, код в среде разработки обычно пишется не в основной ветке вашей системы контроля версий, а в ветке-фиче. Это важно, так как не блокирует возможность делать быстрые правки, если на сервере что-то поломалось, и нужно поправить только небольшой кусок, а новые наработки вы ещё не готовы выливать.

Читайте также: DevOps — что это такое и почему эти практики меняют мир разработки уже сейчас

Сборка

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

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

Контроль и испытания

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

Ведь даже собрав всё в одну ветку (все фичи) и проверив их локально, нельзя быть до конца уверенным, что в бою, на реальных данных, всё заработает хорошо. Кроме этого, скорее всего, у вас есть менеджер или даже тестировщики, которые тоже хотят посмотреть/проверить, всё ли хорошо. И тут на сцену врывается ещё одна производственная среда, которая называется средой интеграции (предпродакшен), или стейджинг (staging), как её все называют.

Stage что это в разработке. IRAEp3I. Stage что это в разработке фото. Stage что это в разработке-IRAEp3I. картинка Stage что это в разработке. картинка IRAEp3I

Тут появляется ещё одно новое слово: «релиз». Релиз по-другому называют «выпуск». С одной стороны, это процесс выкатки в бой новой версии системы. С другой стороны, так иногда называют сборку, которая представляет из себя новую версию системы.

Continuous Integration Server

Одна из разновидностей сборочной среды называется «сервер непрерывной интеграции». Это такая отдельная машина (а может быть целый парк машин), на которую выливается код для проверки в автоматическом режиме. Обычно это происходит по какому-нибудь событию, например, на Github это пулреквест. В настроенных проектах каждый пулреквест отправляется в сервис, подобный https://travis-ci.org. Этот сервис прогоняет тестовый набор на нужной ветке (с фичей) и после этого прикрепляет отчет к пулреквесту, в котором пишет о результатах проверки.

Такая система позволяет очень сильно ускорить процесс интеграции. Сильно снижается нагрузка на разработчиков и автоматизируется рутина. Разработчику достаточно писать код и отправлять его в репозиторий, а система сама будет проводить необходимые проверки и выполнять слияние. Непрерывная интеграция является частью практик под названием «экстремальное программирование (XP)».

Доставка

Мы упустили один важный момент. Каким образом новый код попадает в предпродакшен и в продакшен-среду после того, как вы закончили разработку? Делает он это благодаря процессу, который в простонародье называют «деплой».

Как показывает практика, многие до сих пор делают деплой руками. Заходят на сервер (а если их много?) клонируют код, руками меняют базу и так далее.

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

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

Основные задачи, которые стоят перед вами во время деплоя:

Источник

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

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