Итак: Имеется несколько сервисов на разных языках (например Python, Node.JS)
Все эти сервисы работают +/- с одной и той же структурой данных.
Для примера:
interface UserInfo {
id: number;
username: string;
name: string;
date_joined: string;
birth_year: number;
gender: string;
}
export enum MessageTypes {
assistant = "assistant",
user = "user",
error = "error",
}
export interface MessageEntity {
type: MessageTypes;
user_id?: number;
text: string;
}
В каждом языке / сервисе приходится писать свою типизацию и декларировать эти структуры данных.
Проблема: В ходе разработки постоянно расширяются эти стртуктры данных -> приходится во всех сервисах проверять/добавлять изменения в эти структуры.
Хочется:
1) централизованно объявлять/декларировать типы данных и их структур на каком-либо языке.
2) В каждом языке понимать версию этого описания. И если она отстала, то по новой генерить структуру данных. Например в python на dataclass или pydantic. Для Node - типы в TypeScript.
Знаете ли вы решение этой задачи? Есть какие либо фрмейворки или паттерны проектирования?
Я Знаю что эту проблему пытался решить gRPC + protobuf. Есть ли где то манифест как это правильно организовать?