Ответы пользователя по тегу Развёртывание ПО
  • Как правильно деплоить?

    amark
    @amark
    rush less, feel more
    привет.
    Пойдем не по порядку.

    Первое – БД
    Для чего выносят на отдельный сервер? Делается это, как правило, когда первоначальный сервер не тянет из-за большого количества запросов к БД. У вас сейчас такая ситуация? Да – выносить на отдельный сервер. Нет – оставить сервера в покое.

    VPN – тоже оставьте в покое. Если надо выносить БД в отдельный сервер, то тогда иногда имеет смысл закрыть внешку и оставить только VPN.

    Docker – докер на проде? У вас точно такой серьезный ресурс, что нужно поднимать в день по несколько VDS и нужен докер? Когда на локале докер еще можно понять – удобство и без мусора. Но на проде? Или есть лишние деньги/ресурсы?
    Похоже, что докер тоже стоит оставить только на локале и в покое.

    Секретные ключи – это вообще никогда нельзя хранить в репозитории. Иногда можно использовать компромисс – зашифрованные файлы. Но тут нельзя быть в покое и следует всё проверить несколько раз.

    минутка занимательной теории:
    Как работает деплой? (пример из жизни в очень общих чертах для понимания принципиальной схемы)

    Разработчик отправляет пуш в гит. После этого гит кидает оповещение в CI&CD-сервис.
    CI&CD-сервис запускает свой процесс, согласно описанному в запушеной ветке протоколу (конфиг сервиса).

    Обычно, порядок действий в CI&CD-сервисе такой:
    – поднимается контейнер с ОС
    – в контейнере разворачивается репо
    – подтягиваются все зависимости, настраивается окружение, поднимается база с сидами.
    – накатываеются миграции
    – прогоняются тесты

    Далее запускается скрипт деплоя:
    – репо заливается на сервер, например, с помощью rsync или другого инструмента (в этом месте мы используем зашифрованные приватные ключи для доступа к конечному серверу)
    – на сервере запускается рутина обновления (например, накатить миграции, обновить конфиги, перезагрузить сервисы)

    По окончанию приходит уведомление о статусе. Например в слак.

    Все счастливы, разработчик отмечает успех (или устраняет результаты безуспешных тестов).

    P.S. Если у вас возникают эти вопросы, то, похоже, вы не DevOps'или раньше.
    И это не предмет для обиды или оскорбления, а, наоборот, предмет для размышления над сложностью решений. Сейчас создается впечатление, что вы хотите стрельнуть себе в колено, причем из дробовика.
    Ответ написан
    2 комментария