4 позиции, консенсуса нет с января 2026. Возможно становится moot point в направлении loinc-unification-direction (один сервис → нет inter-service cache).
Контекст
normalization-service и loinc-harmonization-service — отдельные сервисы. .NET API хранит cache на бэке ((name, unit, material) → normalizationId). Когда нормализация улучшает свой алгоритм / правит маппинг — backend-cache становится stale. Старый ID может выдаваться даже после того как нормализация перешла на новый.
Кто должен инициировать инвалидацию?
Позиции
A. Cache consumer владеет invalidation (Артур)
«Не ответственность сервиса нормализации поддерживать кеши на беках. Лечим симптомы, а не причины. Будет 10 сервисов — и во все надо отправлять?»
За: служба = чёрный ящик; consumer знает свой cache, знает свои нужды; clean separation of concerns. Против: consumer не знает когда что-то поменялось upstream; нужен polling или event subscription anyway.
B. Service push через webhook (Влад)
Нормализация шлёт webhook когда mapping меняется — как Langfuse PubSub.
За: event-driven, real-time, consumer reactive. Против: coupling между сервисами через webhook-конфиг; что если webhook fail / consumer offline; multiple consumers.
C. Две разные проблемы — split (Ильдар)
«Две разные проблемы — офлайн (human-in-the-loop, миграции) и онлайн (кеш). Для офлайн — миграции. Для онлайн — посредник.»
За: разделение по timescale делает решение proportional к stakes. Против: требует двух механизмов; design-cost выше.
D. Pub/Sub event bus (Женя)
Generic event bus; producers publish, consumers subscribe.
За: loose coupling, multiple consumers без webhook-config-explosion. Против: infrastructure cost; ordering / replay semantics needs to be designed.
Что нужно для разрешения
Реальная архитектура loinc-unification-direction может закрыть вопрос автоматически:
- Если один сервис LOINC + normalization fallback inside → нет inter-service invalidation
- Если переход в Inngest substrate → event-driven natively (вариант D становится default)
Иначе разрешение требует:
- Решения по реализации (один сервис vs несколько)
- Если несколько остаётся — выбор push (B) vs pull (A) vs hybrid (C) vs event-bus (D) на основе volume / latency / consumer count
Связано
- normalization-service — source of contested behavior
- loinc-harmonization-service — adjacent
- loinc-unification-direction — потенциально moot-маker
- inngest — substrate-кандидат для event-driven direction