Сервис каталога переименовал колонку, а упал сервис заказов
Монолит разделили на сервисы «каталог» и «заказы», но оба продолжают работать с одной базой PostgreSQL. Команда каталога переименовала колонку products.price в products.base_price и выкатила релиз. Через минуту сервис заказов начал отвечать 500 — он читал цену прямо из таблицы products.
Какая архитектурная проблема здесь проявилась?
- Общая база связала сервисы: схема таблицы стала их скрытым контрактом
- Не хватило внешнего ключа между таблицами заказов и товаров
- Команда каталога не запустила миграции в сервисе заказов
- Сервису заказов нужен кэш цен в Redis, тогда падения бы не было
