Про интеграцию. Мысли из телеги
При интеграции решают два основных вопроса:
1) Какими данными обмениваться в каждом сценарии (состав и формат) и
2) Как их передавать между системами (протоколы обмена).
Прямой доступ к БД — самый простой в реализации, но самый небезопасный и самый граблеёмкий способ. Его используют только от отчаяния. Обычно всё же обговаривают состав данных в запросах и ответах на каждый сценарий обмена.
Самые распространённые форматы обмена — json и xml (и его обёртка soap-xml). Так получилось, потому что под них больше всего готовых инструментов и библиотек. Но могут, конечно, использоваться и другие форматы (например, текстовые или двоичные файлы оговоренной структуры).
Протоколов обмена тоже много, вот imho самые распространённые (по возрастанию сложности):
— Через файловую систему. Один участник кладёт файл с данными в нужное место, а другой его забирает-либо периодически по таймеру, либо мониторя события файловой системы. Используется в локальных интеграциях, когда оба участника работают либо на одном сервере, либо в одной сети.
— Через REST API. То есть через http. Сервер открывает в интернете (или в локальной сети) http-порт, к которому подключается клиент, и через который идёт обмен данными. Данные практически всегда передаются в форматах json или xml (по причине, указанной выше: для этих форматов полно готовых инструментов). Но ничто не мешает передавать и в других форматах. Почему http? Потому что веб-сервер, реализующий этот протокол, сейчас есть в каждой кофеварке.
— Через специальный сервис передачи сообщений (aka брокер). Это такая почта, которая берёт на себя все заботы о выборе маршрута и доставке сообщений между разными участниками. Сообщения могут накапливаться в очередях, из которых адресат выбирает их для обработки. Популярные сервисы — Kafka и RabbitMQ (но могут быть и самописные, я сам когда-то такой писал, только слово «брокер» тогда ещё не был модным).
Это самые распространённые протоколы, но в зависимости от типа систем выбирают и другие, иногда экзотические. Например, мы делали интеграцию с эквайрингом с обменом данными по протоколу ISO8583. Это вообще-то протокол авторизации по банковским картам, очень нишевый и довольно сложный для понимания. Почему его выбрали? Причина такая же, как с http: и на клиенте, и на сервере этот протокол был уже отлично реализован, почему бы просто не запихнуть данные в одно из резервных полей. Минимум кодинга, максимум надёжности.
Телега: https://t.me/c/1108401131/156079