Upgrade without downtime
От: Шубин Евгений Россия http://erladvisor.blogspot.de/
Дата: 05.07.19 18:18
Оценка:
Вот есть у нас приложение (язык вам на выбор), которое лезет в реляционную базу, Postgres для простоты.
Допустим приложение одно и не надо его разбивать на микросервисы, чтобы отсечь пустой трёп людей с SOA-головного мозга.
Естественно схема базы данных может менятся при релизах. Пусть даже будет master-slave репликация базы.
Как же выкатить релиз 100% без downtime при условии что меняется и схема базы и код приложения?

Я видел попытки в aws beanstalk, где делают swap dns имён и sticky connections в loadbalancer, но ведь при любом сценарии обновления сервера приложений будет ситуация, когда код будет ожидать другую схему базы.
Я знаю про hot code upgrade в erlang, но это не просто сложно, а очень сложно.
И не надо писать что код должен уметь работать и с последней схемой базы и с предпоследней — это тоже не реально практически.

У меня есть чувтво что master-slave и wal файлы могут прийти на помощь, но даже теоретически не вижу такой сценарий.

Поделитесь опытом как такое делается.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.