282просмотров
4 октября 2025 г.
storyScore: 310
Я привез на Flow обновленную карту интеграций. Обновлений много: Изменена структура: добавлены колонки "Семантика взаимодействия", "Стандарты", "Гарантии доставки" Добавлена семантика для REST: ресурсный стиль (REST уровня 2) и гипермедиа стиль (HATEOAS, REST уровня 3) Добавлены JSON:API, HAL, JSON-LD SOAP включен в асинхронные методы Добавлен WS-RM для SOAP — протокол гарантированной доставки Добавлены подходы к целостности транзакций: ACID и BASE Добавлено описание паттернов API Gateway и ESB Добавлено описание ETL-процесса Добавлена CAP-теорема Добавлено описание семантик гарантированной доставки Раздел "Особенности" объединен с разделом "Когда использовать" Исправлены опечатки А самое главное — я, кажется, придумал шаблон для описания любой технологии интеграции! Какие вопросы мы должны задать, когда смотрим на технологию?
1. Что это? Протокол, язык, набор принципов, конкретный продукт?
2. Какой верхнеуровневый паттерн? (по Грегору Хопу: файловый обмен, общая БД, удаленный вызов, сообщения)
3. Режим взаимодействия — синхронный или асинхронный? (скорость против пропускной способности)
4. Семантика запроса / интеграционный стиль: RPC, Query, ресурсный (REST 2 lvl — ресурсы и методы HTTP), гипермедиа (REST 3 lvl, HATEOAS), стриминг, публикация/подписка — в общем, как мы смотрим на интеграцию? 5. Протокол: опираемся на HTTP или используем что-то низкоуровневое? Если HTTP — то используем ли строку запроса и хедеры? То есть, получится ли подключить кэширование, маршрутизацию и все эти готовые штуки? 6. Формат сериализации: текстовый или бинарный? Есть ли схема? Обязательна ли она? Насколько строгая типизация? Есть ли сложные структуры: вложенные объекты, массивы, maps, множества?
7. Есть ли возможность определять и передавать кастомные ошибки?
8. Есть ли встроенные средства гарантированной доставки, и какие семантики поддерживаются?
9. Что с безопасностью? Шифрование, аутентификация, контроль прав.
10. Скорость сериализации / десериализации, размер сообщений
11. Есть ли инструменты преобразования данных?
12. Есть ли язык определения интерфейсов / спецификаций?
13. Статус стандартизации / распространенность / надежность / поддержка в разных языках и фреймворках
14. Какие особенные фишки есть у технологии?
15. С какими проблемами мы столкнемся? Вот такие 15 вопросов, возможно ещё что-то появится. Но уже с этим можно оценивать и сравнивать разные технологии — насколько они близки, что будет стоить переход и имеет ли он смысл, как вообще об этом думать. Ссылка на актуальную версию карты: https://disk.yandex.ru/i/k69r0Qr39_1P-w