На собеседованиях мы можем задать вопрос вида: “Как код попадает на боевые сервера?”
Вопрос деплоя сервиса имеет множество аспектов. Ожидается, что кандидат обратит внимание на несколько сред выполнения.
В нашей команде используются следующие среды выполнения сервиса:
development— локальная разработка сервисаstand— стенд с работающей версией сервиса для каждого pull requesttesting— собранный релиз-кандидатprestable— продакшн версия сервиса с частью реального трафикаproduction— продакшн версия сервиса с 100% пользовательского трафика
Разработчики проводят большую часть времени в окружениях development и stand, где происходит разработка и отладка сервиса.
Тестировщики в основном фокусируются на окружениях stand и testing, где осуществляется основной отлов багов.
Тем не менее, как разработчики, так и тестировщики следят за всеми окружениями.
Конечные пользователи видят два окружения: prestable и production. В обеих средах развертывается финальная версия сервиса, однако prestable получает только небольшую долю продакшн трафика.
Для небольших сервисов мы можем пропустить prestable, но для критичных сервисов prestable помогает обнаружить неудачные релизы и вовремя их откатить с минимальными потерями.
Кроме того, существуют специализированные окружения, такие как stress, о которых можно поговорить в другой раз.