Развертывание SQL серверной базы данных на нескольких серверах с использованием DevOps (ma c в качестве ноутбука для разработки) - PullRequest
0 голосов
/ 18 марта 2020

I,

В настоящее время мы работаем над базовым проектом. net, который будет использовать несколько баз данных с одинаковой структурой. Короче говоря, это мультитенантный проект, и каждый арендатор будет использовать одно и то же веб-приложение (несколько раз за балансировщиком нагрузки) НО каждый арендатор будет иметь свою собственную базу данных.

Мы ищем лучшее решение для облегчения процесса развертывания. При обновлении приложения (и БД) нам необходимо обновить структуру базы данных на всех SQL серверах и всех базах данных (один SQL может содержать x баз данных).

FYI, приложение и SQL сервер расположен на AWS, наш CI / CD - Azure DevOps.

И последнее (но не менее важное) ограничение: мы работаем только на VSCode (MA C & Linux ноутбук) .

Итак, мы искали несколько решений:

  • Использование проектов базы данных (.sqlproj) + генерация DACPA C, развернутая с использованием DevOps, но она не доступна в VSCode
  • Использование миграции: не работает с несколькими базами данных и динамическими c строками подключения
  • Использование SQL сценария: слишком сложно, чтобы поддерживать вручную сценарий SQL, который заботится о возможных случаях

Так может ли кто-нибудь дать нам совет по решению этой проблемы?

1 Ответ

1 голос
/ 18 марта 2020

Общее решение здесь - генерировать SQL сценарии для каждого развертывания и интегрировать их в процесс CI / CD.

Вы можете использовать EF Migrations для создания SQL сценария, то есть протестировано, развернуто в вашем репо как первоклассный актив и развернуто вашим конвейером CI / CD. Или вы можете использовать SSDT для управления схемой и создания сценариев изменений. Но это не единственные разумные способы.

Если вы изменяете схему вручную без использования SSDT, вы обычно просто используете инструмент для генерации сценария изменения. И go оттуда.

Существует множество инструментов (включая SSDT), позволяющих вам отличить среду разработки от целевой производственной схемы и сгенерировать сценарии изменений. Например, Redgate ReadyRoll

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

И подготовка, проверка, тестирование и редактирование сценариев изменения базы данных - это не то, что нужно каждой команде разработчиков. Таким образом, вы всегда можете подумать о том, чтобы перейти на Windows VM для этой задачи.

...