Задать вопрос
Ответы пользователя по тегу Развёртывание ПО
  • Есть проблемка с symlinks... Как деплоить с минимальным downtime?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    1. Деплой в каталог по номеру выполняемой задачи
    2. Выполнить скрипты подготовки деплоя приложения
    3. Удалить симлинк на текущую версию проекта
    4. Создать новый симлинк на свежую версию
    5. Выполнить скрипты завершения деплоя приложения

    А если запустить два-три инстанса приложения - то можно их обновлять по очереди и без полной остановки проекта. Само собой если в коде проекта допускается работа в несколько инстансов.
    Ну и если что-то пойдёт не так - можно быстро откатить версию.
    Ответ написан
  • Как правильно настроить сервер(а) для dev/test/prod?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Все настройки ваших серверов сводятся к установке приложения gitlab-runner (либо настройке SSH для CI/CD сервера: т.е. CI/CD сервер подключается к целевому серверу по SSH/SFTP, копирует файлы и выполняет скрипты на целевой машине), а так же настройке требуемых зависимостей вашего проекта. Stage сервер настраивается идентично Prod серверу. Dev сервер настраивается для прямого доступа к нему со стороны разработчиков для отладки и дебага багов, не воспроизводящихся локально. В гитлабе настраивается CI/CD для деплоя через gitlab-runner или SSH, развертывается отдельный CI/CD сервер с приложением gitlab-runner и докером для запуска CI/CD задач и деплоя на серверы. Для каждой ветки настраиваются свои правила и ограничения деплоя под отдельные сервера. Итого у вас должно быть минимум пять серверов: гитлаб, cicd, dev, stage, prod. Плюс еще есть роль VPN сервера - эту роль вполне можно совместить с гитлабом. CI/CD - только отдельный сервер, ибо задачи штука ресурсоёмкая (компиляция, сборка, установка зависимостей и прочее). Еще очень полезная штука - кэширующий сервер для образов докера и пакеты (harbor - топ). Ускоряет работу задач и экономит трафик. Prod сервер может быть как сервером, так и группой серверов - prod-app, prod-db, prod-files и т.п. В идеале stage должен быть идентичной конфигурации, но обычно обходятся простыми виртуалками для экономии ресурсов, в отличии от prod сервера.
    Ответ написан
    Комментировать
  • Как разместить web api на FTP сервере?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    После загрузки исполняемого файла на сервер его еще надо запустить как приложение или сервис. Кроме того, просто обычный фтп сервер для документов и сервер с фтп сервисом для загрузки файлов на него - это две разные вещи. Вообще, вам надо не фтп, а стандартный SSH для подключения к серверу, загрузки файлов на него и настройки сервера для запуска вашего приложения на нём.
    Ответ написан
    6 комментариев
  • Независимая выкатка микросервисов. Как сделать так, чтобы на продакшен не попадал неготовый код?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Делаете три окружения: develop, staging, production. Develop - WIP, то, над чем сейчас идет работа. Staging - следующий стабильный продакшен. Тестирование отдельных фич можно проводить как в рамках staging так и в develop. Еще можно завести отдельный testing - туда отдельно вливать и деплоить изменения конкретно для тестирования. Работа ведется в рамках рабочего процесса github flow. Для каждого окружения поднимаете все нужные сервера и сервисы. Настраиваете автоматический деплой по PR в ветку для develop/testing/staging. Настраиваете автоматический запуск тестирования, при этом если тесты не проходят - деплой тоже не происходит. Деплой в production запускается либо по событию "релиз" либо вручную. Кроме того, сам деплой в production настраивается пошагово с возможностью отката на предыдущую версию. В целом же, рекомендую сделать декомпозицию вашего решения и рассмотреть возможность разделить ваш шлюз на несколько независимых компонентов/модулей.
    Ответ написан
    Комментировать