У нас есть система (веб-приложение Java), которая уже долгое время находится в активной разработке / обслуживании (что-то около десяти лет).
То, что мы смотрим, это реализация RESTful API для веб-приложения. Это веб-приложение, использующее Джерси, будет отдельным проектом с намерением, чтобы оно могло запускаться вместе с основным приложением или развертываться в облаке.
Из-за характера и возраста нашего приложения нам пришлось реализовать (несколько) всеобъемлющий уровень кэширования поверх базы данных (postgres), чтобы помочь снизить нагрузку. В любом случае, для RESTful API идея заключается в том, что GET-запросы сначала будут идти в кеш, а не в базу данных, чтобы поддерживать загрузку базы данных.
Кэш будет заполняться таким образом, чтобы обеспечить наличие большинства вещей, которые понадобятся зарегистрированным пользователям API.
В случае отсутствия кэша необходимые данные должны быть извлечены из базы данных (также в процессе ввода в кэш).
Очевидно, это должно оставаться прозрачным из методов конечной точки RESTful в моем коде. Мы придумали идею создания «брокера» для обработки связи с БД и кешем. Слой REST будет просто передавать идентификаторы (если вы хотите получить) или заполненные объекты Java (если вы хотите вставить / обновить), а посредник позаботится о получении / обновлении / аннулировании и т. Д.
Существует также проблема расширяемости. Начнем с того, что API будет жить вместе с остальными серверами, поэтому доступ к базе данных не будет проблемой, однако, если мы развернем в облаке, нам понадобится другая реализация Broker, которая будет взаимодействовать с системой ( а именно базы данных) другим способом (возможно, посредством использования внутреннего API).
У меня уже есть приблизительное представление о том, как я могу это реализовать, но меня поразило, что это, вероятно, проблема, для которой может существовать подходящий шаблон. Если бы я мог следовать установленному шаблону, а не придумывать собственное решение, это, вероятно, будет лучшим выбором. Есть идеи?