⚡️Как жить с нестабильной интеграцией



Иногда возникают ситуации, что ваш сервис ходит в какую-то внешнюю (относительно команды или вообще компании) систему, которая работает нестабильно. Из-за этого может страдать стабильность и вашего сервиса



Представим, что внешнюю систему чинить не сильно торопятся, а альтернатив у вас нет. Что можно сделать в такой ситуации в рамках вашего сервиса, чтобы повысить стабильность?



1. Если ваш сервис только забирает данные из внешней системы



В таком случае можно сделать локальную копию данных, которая вам нужна от внешней системы. Например, сделать кеш. Кеш можно устроить по разному в зависимости от контекста:



- Либо раз в какое-то время подгружать полный слепок данных и сохранять к себе

- Либо кешировать результаты отдельных запросов с каким-то TTL

- Либо обновлять кеш по эвентам от внешней системы (если она их отправляет)



2. Если ваш сервис только отправляет данные во внешнюю систему



Пример: отправка каких-нибудь нотификашек. В таком случае можно уменьшить связность между вашим сервисом и внешней системой, заменив синхронную интеграцию на асинхронную. Например, добавив очередь сообщений. Это позволит в случае недоступностей внешней системы доставить сообщение "когда-нибудь потом"



3. Если ваш сервис отправляет данные во внешнюю систему и ожидает чего-то в ответ



Пример: создание сущности во внешней системе и получение id в ответе



Пишите в комментах, какие варианты повышения стабильности здесь видите