Size: a a a

2020 July 26

AO

Alexander Ovchinniko... in cloud_flood
вместо pydantic на вход и выход могут быть, скажем, protocol buffers
источник

AO

Alexander Ovchinniko... in cloud_flood
тогда будет protocol buffers на входе, потом pydantic in в базу (их может быть несколько, под разные запросы), потом если что-то надо из базы - pydantic out (описание таблицы), и protocol buffers на выход
источник

AO

Alexander Ovchinniko... in cloud_flood
ну, понятно, что в бинарном виде оно оптимальнее будет
источник

p

pragus in cloud_flood
Alexander Ovchinnikov 🦁
тогда будет protocol buffers на входе, потом pydantic in в базу (их может быть несколько, под разные запросы), потом если что-то надо из базы - pydantic out (описание таблицы), и protocol buffers на выход
pb подразумевает типы
источник

AO

Alexander Ovchinniko... in cloud_flood
да они не связаны с бизнес-логикой, они просто для оптимизации транспорта
источник

AO

Alexander Ovchinniko... in cloud_flood
они там есть чтобы было эффективнее упаковывать
источник

AO

Alexander Ovchinniko... in cloud_flood
в общем, общая рекомендация - доверять входным значениям, если они идут от своих сервисов, в то время как за выходными значениями следить жёстко
источник

AO

Alexander Ovchinniko... in cloud_flood
ну, а если какие-то баги/что-то ещё, если это важно, то можно event sourcing внедрить
источник

AO

Alexander Ovchinniko... in cloud_flood
и дебажит, разумеется, такое разработчик
источник

p

pragus in cloud_flood
Alexander Ovchinnikov 🦁
да они не связаны с бизнес-логикой, они просто для оптимизации транспорта
Ещё раз: был у тебя один тип в транспорте, стал другой. Как все 30 сервисов обновляем?
источник

n🐈

nikoinlove 🐈 in cloud_flood
в мастер коммитим
источник

n🐈

nikoinlove 🐈 in cloud_flood
ну что за вопрос. держим два транспорта, следующая версия поддерживает оба, следующая только новый
источник

n🐈

nikoinlove 🐈 in cloud_flood
ждем три года и все микросервисы обновлены
источник

n🐈

nikoinlove 🐈 in cloud_flood
изи
источник

AO

Alexander Ovchinniko... in cloud_flood
pragus
Ещё раз: был у тебя один тип в транспорте, стал другой. Как все 30 сервисов обновляем?
ну, в худшем случае, как с приложениями на MacOS было - запаковывали и для Power'а и для Intel'а
источник

AO

Alexander Ovchinniko... in cloud_flood
каждому свою версию
источник

AO

Alexander Ovchinniko... in cloud_flood
это если нет шансов, что это получится быстро обновить
источник

AO

Alexander Ovchinniko... in cloud_flood
а так вообще, ну, как с СУБД в монолитах, да, делаю новое поле, правильное и переходят на него, старое можно даже не удалять
источник

AO

Alexander Ovchinniko... in cloud_flood
в protocol buffers это же удобно сделано
источник

p

pragus in cloud_flood
nikoinlove 🐈
ждем три года и все микросервисы обновлены
Да я знаю как делается версионирование api :) но это больно и сложно.
источник