Какие есть паттерны для применения миграций в мультитенантном приложении?
Подскажите, пож-та, что почитать, для решения следующей задачи:
Выполнение миграций в в мультитенантном приложении .
Суть:
Есть сервис, написанный на laravel, реализует некое апи, умеет разделять тенанты на разные бд.
Приходит новый клиент => регистрируем новую бд => проводим там миграцию => он может уже работать, никому не мешая.
Это приложение содержит php файлы описывающие миграции.
Для регистрации тенантов, реализован другой сервис, self - management:
- создает бд
- выполняет миграции
- и конфигурирование тенанта
Сейчас для выполнения, миграций, он ходит на машину с апи, для выполнения команды миграций, с указанием параметра тенанта.
Но кажется, есть более красивый подход, может идеи или ссылки на паттерны / практики?
Был вариант с выгрузкой sql - миграций! Но тогда встает вопрос синхронизации и версионирования, этих файлов ,между сервисами
Дмитрий, при создании тената, создается только БД , на одном в каком-кластере, база кода ( апи сервиса ) не знает когда нужно применять миграции , в ней только хранится список миграций
не знаю как реализованы миграции в ларавел, но предполагаю что аналогично юи и симфони т.е. установленные миграции фиксируются в таблице бд. я бы сделал общий гит репозиторий из которого тенанты через апи получают нужные версии пакетов, при установке пакета накатываются миграции отсутствующие в таблице миграций.
p.s. тенанты, а не тенаты
спасибо за правку,
в вашем предложении, если я правильно поняла, предполагается, что из апи выгружаются миграции, в виде sql скриптов, а гит в данном случае является синхронизатором, между базой кода апи ( где лежат модели и миграции ) и сервисом выполняющий создание тенанта? верно
тенант обращается к апи для получения определенных версий пакетов, апи получает эти пакеты из гита в виде архивов, в которых в том числе находятся и миграции laravel