модуль 4 из 6 · Акт II · ~30 мин · 7 решений
сцена
Среда, полдень. Платежи уже месяц как отдельный сервис, и Тимур наконец катит их первое серьёзное обновление: в событие о проведённом платеже добавили поле rounding_mode — аудиторам нужно знать, как округлили копейки. Выкатка зелёная.
Через минуту в чат падает Лера:
У меня половина заказов зависла в статусе «оплата обрабатывается». Не отваливаются, не подтверждаются — просто висят.
Платежи отвечают двести, деньги списываются. На их стороне всё чисто.
(листая логи Заказов) Вот оно. Обработчик события оплаты в Заказах падает на разборе сообщения: встретил незнакомое поле rounding_mode и растерялся. А Заказы мы сегодня не трогали вообще — выкатили только Платежи.
Стоп. Раньше это была одна кодовая база — поменял формат в одном месте, он поменялся везде разом. Хотя… помнишь округление из седьмого модуля? Формат и в монолите умел разъезжаться. А теперь Платежи уехали вперёд, Заказы остались на старом коде — и падают. Ну, Тимур же и говорил: сеть всё усложнит.
Усложнила не сеть. Усложнил независимый деплой — то самое, ради чего мы платежи и вынесли. Пока всё было в одном куске, обе стороны менялись одновременно. Теперь они выкатываются порознь, и какое-то время в проде живут старая и новая версия сразу. Значит, формат сообщений обязан это переживать. Нам нужен общий язык, который не ломается от того, что кто-то выучил новое слово.
Выкатили только Платежи. Заказы на старом коде встретили незнакомое поле — и упали на разборе.