Лучшая практика для синхронизации нескольких избыточных магазинов

У нас есть приложение, которым управляют несколько групп, и мы хотели бы создать гибкость и изоляцию между приложениями с помощью подхода микро-интерфейса, у каждого приложения будет свой собственный магазин.

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

Я знаю, что звучит так, как будто мы должны использовать один магазин в этом случае, но все выбрали готовые к использованию несколько магазинов.

Что и как должно быть лучшим способом синхронизации данных между магазинами?

Несколько баллов:

  • Все данные были получены из наших внутренних сервисов
  • Структура данных одинакова, но не все приложения используют одни и те же данные, некоторые используют подмножество данных
  • Чтобы уменьшить дублирование вызовов API, нам бы хотелось, чтобы "небольшие хранилища" могли синхронизировать данные из "основного" хранилища.

1 ответ

Как заметил @estus

Структура данных одинакова, но не все приложения используют одни и те же данные, некоторые используют подмножество данных - да, это похоже на хороший вариант использования для одного хранилища.

... но для меня это идеальный случай для GraphQL / Apollo.

Вы можете переместить / делегировать выборку данных (или даже все локальное состояние приложения) на один "движок", и он будет работать одинаково для всех частей приложения (одна и та же конечная точка API).

Есть много хороших вещей с этим подходом:

  • отделение данных от состояния приложения (-ов);
  • кэширование и пакетирование запросов (не только удаление дубликатов, но и "склеивание" множества запросов в одном);
  • политики кеширования (только сеть, только кеш);
  • API сшивание (будущие расширения, упаковка внешних сервисов) ...

Есть хороший стартер для Apollo (содержит редукционные части).

PS. Apollo может работать с REST API

Другие вопросы по тегам