Смотрю сейчас в сторону gRPC и IDL. Идея в том, чтобы создавать сервисы, которые могут находить друг друга и коммуницировать между собой через заданные интерфейсы (схемы, как в GraphQL).
Например:
Сервис А предоставляет интерфейс
getUsers() {
id: Number;
name: String;
}
сервис В предоставляет похожий интерфейс
getUsers() {
id: Number;
name: String;
email: String;
}
И есть еще третий сервис С, который делает запрос
getUsers() {
id
email
}
и система сама должна найти, что запрашиваемую схему можно получить только от сервиса В и соответственно сделать к нему запрос
Или, если запрос выглядит так:
getUsers() {
id
name
}
то предоставить возможность выбора на момент выполнения запроса (этот вариант приемлем, подобно как при открытии какого-то приложения в Intent на Android он предлагает сделать выбор, если таких совпадений несколько)
Есть какие-то живые технологии, которые решают такую задачу (которые дружат с нодой)?