Огромное спасибо за развернутый ответ! Про удаление 10 полей соглашусь что звучит стремно- ну не надо так!))
В идеальном мире, над продуктом проводят аналитику и пилят продукт с заделом на расширение!) Но расширение - процесс не бесконечный.
В реальном мире, по мере расширения, приходит понимание, что данные придется разделить (приведение данных к третьей нормальной форме) - так как текущая структура требует распила на части. Часть нужно оставить в текущей структуре. А часть перенести в новую отдельную сущность.
Фактически такое происходит из за человеческой глупости при проектировании. Но это происходит и как то это нужно решать. С этим сталкиваются многие.
Вот по этому и вопрос - кто как эту задачу решает!)
Спасибо за ответ! Но это всего лишь способ - как делкарировать структуру ответа/запроса внутри сервиса.... Тут все способы хороши (OpenApi, GraphQL, gRPC)
Тут вопрос в другом. - Вот у тебя 5 сервисов с graphql эндпоинтами, которые решают разные задачи, но которые обмениваются одной и той же структурой.
В один прекрасный день бизнес понимает, что эту структуру нужно изменить (добавить /удалить например 10 полей). И вот приплыли - всем пяти сервисам нужно подорваться и эти поля убрать/удалять...
И вот получается в этом и вопрос - как решается такая проблема!)
Как будто звучит хорошо. Реализовать только часть спецификации (components->schema) в одном репо. А дальше настроить процессы которые будут генерить DTO. И Это конечно сработает)
Но является это практикой в больших кампаниях?
Это да, вроде выглядит как решением:
- генерить все типы в одном репозитории
- там же на хуках организовывать сборку пакетов с типами под нужные языки....
Вопрос, как делают это гигианты? Неужели нет фреймворков?
В идеальном мире, над продуктом проводят аналитику и пилят продукт с заделом на расширение!) Но расширение - процесс не бесконечный.
В реальном мире, по мере расширения, приходит понимание, что данные придется разделить (приведение данных к третьей нормальной форме) - так как текущая структура требует распила на части. Часть нужно оставить в текущей структуре. А часть перенести в новую отдельную сущность.
Фактически такое происходит из за человеческой глупости при проектировании. Но это происходит и как то это нужно решать. С этим сталкиваются многие.
Вот по этому и вопрос - кто как эту задачу решает!)