Перейти к содержимому

Точка-точка (Point-to-Point)

Точка-точка — системы общаются напрямую (HTTP, gRPC, JDBC), без посредников. Плюсы: просто, быстро, низкая задержка. Минусы: тесная связанность, при росте числа систем связи растут квадратично (спагетти), нет буферизации (при сбое данные теряются). Выбирать при 2-5 системах, стабильных связях, когда важна скорость. Переходить на брокер при >5 систем, частых изменениях API, требованиях к надёжности.

Введение: Прямой разговор

Представьте, что два человека разговаривают напрямую, без телефона, без секретаря, без мессенджера. Один говорит, другой слушает. Связь прямая, быстрая, но если один ушёл — разговор прервался.

Точка-точка (Point-to-Point Integration) — это самый простой способ интеграции систем. Одна система напрямую обращается к другой. Без посредников, без брокеров, без очередей. Система А вызывает API системы Б.

Это архитектурный паттерн, при котором системы соединяются напрямую. Каждая пара систем имеет свой собственный канал связи. В отличие от подхода “через брокер”, где все системы подключаются к общему центру, здесь системы общаются один на один.

Для системного аналитика точка-точка — это базовый паттерн интеграции. Простой для понимания, но сложный для масштабирования. Выбор между “точка-точка” и “через брокер” — одно из ключевых архитектурных решений.

Как это выглядит

    graph LR
    A[Система A] -->|HTTP| B[Система B]
    A -->|JDBC| C[Система C]
    B -->|SOAP| D[Система D]
    C -->|Файлы| D
  

Примеры прямых связей:

СвязьПротоколПример
API → APIHTTP/RESTCRM вызывает API платежной системы
Приложение → БДJDBC/ODBCСервер приложения напрямую к PostgreSQL
Сервис → сервисgRPCМикросервис заказов вызывает микросервис пользователей
Система → системаОчередь (прямая)Система A отправляет в очередь, система B читает

Простейшая форма: Прямой вызов API

Самый распространённый пример точки-точка — синхронный HTTP запрос.

    sequenceDiagram
    participant A as Система A
    participant B as Система B
    
    A->>B: HTTP POST /create-order
    Note over B: Обработка
    B-->>A: 200 OK (order_id)
  

Что происходит:

  • Система A знает адрес системы B
  • Система A отправляет запрос и ждёт ответа
  • Если B не отвечает, A получает ошибку

Плюсы и минусы

Плюсы

ПлюсОбъяснение
ПростотаНет дополнительных компонентов (брокеров, очередей)
СкоростьНет задержек на промежуточном слое
Низкая задержкаПрямой вызов быстрее, чем через брокер
Простота отладкиЛегко понять, кто кому звонит
Мало движущихся частейМеньше точек отказа

Минусы

МинусОбъяснение
Тесная связанностьСистемы знают друг о друге. Изменение API одной ломает другую
Трудно масштабироватьПри росте числа систем связи растут квадратично
СинхронностьВызов блокируется, пока другая система не ответит
Единая точка отказаЕсли B упала, A не может работать
Трудно расширятьДобавление новой системы требует изменения всех, кто с ней связан
Нет буферизацииЕсли B временно недоступна, данные теряются

Проблема “Спагетти интеграции”

Когда систем становится много, связи “точка-точка” превращаются в спагетти.

    graph TD
    A[CRM] --> B[ERP]
    A --> C[Биллинг]
    A --> D[Склад]
    B --> A
    B --> C
    B --> E[Логистика]
    C --> B
    C --> D
    D --> A
    D --> E
    E --> B
    E --> C
  

Что происходит:

  • 5 систем → до 20 связей
  • 10 систем → до 90 связей
  • 20 систем → до 380 связей

Формула: N*(N-1) возможных связей.

Последствия для аналитика:

ПроблемаПроявление
Кто с кем связан?Нет единой схемы
Где данные?Данные дублируются, непонятно, где источник истины
Что сломается при изменении?Трудно оценить влияние
Как добавить новую систему?Нужно подключать её ко всем

Примеры в реальных проектах

Хороший сценарий: Мало систем, стабильные связи

СистемаСвязь
CRM → ERPЗаказы
CRM → БиллингПлатежи
ERP → СкладОстатки

Когда это работает: 3-5 систем, связи редко меняются.

Плохой сценарий: Много систем, частые изменения

СистемаСвязи с…
CRM8 систем
ERP10 систем
Биллинг6 систем
Маркетинг5 систем

Когда это ломается: Каждое изменение API требует обновления всех связанных систем.

Асинхронная точка-точка

Не всегда точка-точка означает синхронный HTTP. Можно использовать очередь напрямую.

    graph LR
    A[Система A] -->|отправляет| Q[Очередь]
    Q -->|читает| B[Система B]
  

Особенности:

ХарактеристикаСинхронная (HTTP)Асинхронная (очередь)
Ожидание ответаДаНет
БуферизацияНетДа (если B недоступна)
НадёжностьНизкаяВысокая
СложностьНизкаяСредняя

Когда выбирать точку-точку

УсловиеПочему
Мало систем (2-5)Проще, чем разворачивать брокер
Связи стабильныНе будут часто меняться
Низкая задержка критичнаПрямой вызов быстрее
Синхронность нужнаСистема A должна знать результат сразу
Нет требований к надёжностиДопустима потеря данных при сбое
Проект небольшойБрокер — оверхед

Когда точка-точка становится проблемой

ТриггерЧто происходит
Систем стало >5Связи растут квадратично
Часто меняются APIКаждое изменение требует обновления всех связанных систем
Появились требования к надёжностиНет буферизации, при сбое данные теряются
Нужно добавить новую системуПридётся подключать её ко всем
Трудно понять картину целикомНет единого центра управления

Когда пора переходить на брокер сообщений: появление 6-й системы или требование надёжности.

Пример расчёта: Стоимость изменений

Сценарий: 10 систем, связанных по принципу точка-точка. Нужно изменить API одной системы.

Что нужно сделатьКоличество работ
Изменить API системы1
Обновить всех потребителей9
Протестировать каждую связь9
Развернуть обновления9

Итого: 1 изменение → 28 работ.

С брокером сообщений: изменить API → обновить брокер → остальные системы не трогать.

Комбинированный подход

Иногда используют гибрид: часть связей точка-точка, часть — через брокер.

    graph TD
    A[CRM] -->|критичная задержка| B[ERP]
    A -->|через брокер| C[Биллинг]
    A -->|через брокер| D[Склад]
    B -->|через брокер| C
  

Пример:

  • CRM → ERP (синхронно, нужна мгновенная проверка остатков)
  • CRM → Биллинг (асинхронно, через брокер, некритично)

Резюме

  1. Точка-точка — системы общаются напрямую, без посредников. Простейший паттерн интеграции.

  2. Формы: синхронная (HTTP, gRPC) и асинхронная (прямая очередь).

  3. Плюсы: простота, скорость, низкая задержка.

  4. Минусы: тесная связанность, спагетти интеграции, трудно масштабировать, нет буферизации.

  5. Проблема “спагетти”: при N систем число связей растёт как N*(N-1).

  6. Когда выбирать: мало систем (2-5), стабильные связи, низкая задержка критична.

  7. Когда переходить на брокер: систем стало >5, частые изменения API, нужна надёжность.

Проверка знаний

Вопрос 1 из 4
Что такое интеграция point-to-point?
Когда point-to-point особенно уместен?
Какую проблему создаёт рост числа прямых связей между системами?
Какой недостаток point-to-point особенно важен?

Вопросы, где были ошибки