Вот есть у нас приложение (язык вам на выбор), которое лезет в реляционную базу, Postgres для простоты.
Допустим приложение одно и не надо его разбивать на микросервисы, чтобы отсечь пустой трёп людей с SOA-головного мозга.
Естественно схема базы данных может менятся при релизах. Пусть даже будет master-slave репликация базы.
Как же выкатить релиз 100% без downtime при условии что меняется и схема базы и код приложения?
Я видел попытки в aws beanstalk, где делают swap dns имён и sticky connections в loadbalancer, но ведь при любом сценарии обновления сервера приложений будет ситуация, когда код будет ожидать другую схему базы.
Я знаю про hot code upgrade в erlang, но это не просто сложно, а очень сложно.
И не надо писать что код должен уметь работать и с последней схемой базы и с предпоследней — это тоже не реально практически.
У меня есть чувтво что master-slave и wal файлы могут прийти на помощь, но даже теоретически не вижу такой сценарий.