{"id":3353,"date":"2020-12-31T19:10:48","date_gmt":"2020-12-31T19:10:48","guid":{"rendered":"http:\/\/roberval.com.br\/roberval\/?p=3353"},"modified":"2020-12-31T18:18:02","modified_gmt":"2020-12-31T21:18:02","slug":"introducing-domain-oriented-microservice-architecture-uber-engineering-blog","status":"publish","type":"post","link":"https:\/\/roberval.com.br\/roberval\/2020\/12\/introducing-domain-oriented-microservice-architecture-uber-engineering-blog\/","title":{"rendered":"Introducing Domain-Oriented Microservice Architecture | Uber Engineering Blog"},"content":{"rendered":"<div dir=\"ltr\">Data Extensions<br \/>Data extensions provide a mechanism for attaching arbitrary data to an interface to avoid bloat in core platform data models. For data extensions, we leverage Protobuf\u2019s Any functionality so that teams can add arbitrary data to requests. Services will often store this data or pass it to a logic extension so that the core platform is never responsible for deserializing (and thus \u201cknowing about\u201d) this arbitrary context. Protobuf\u2019s Any implementation comes with some infrastructure overhead in exchange for stronger typing. For a simpler implementation, one could just as easily use a JSON string to represent arbitrary data.<\/p>\n<div><a href=\"https:\/\/eng.uber.com\/microservice-architecture\/\">https:\/\/eng.uber.com\/microservice-architecture\/<\/a><\/div>\n<div><\/div>\n<div><a href=\"https:\/\/developers.google.com\/protocol-buffers\/docs\/proto3#any\">https:\/\/developers.google.com\/protocol-buffers\/docs\/proto3#any<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Data ExtensionsData extensions provide a mechanism for attaching arbitrary data to an interface to avoid bloat in core platform data models. For data extensions, we leverage Protobuf\u2019s Any functionality so that teams can add arbitrary data to requests. Services will often store this data or pass it to a logic extension so that the core [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[316],"class_list":["post-3353","post","type-post","status-publish","format-standard","hentry","category-great-stuff","tag-mail"],"_links":{"self":[{"href":"https:\/\/roberval.com.br\/roberval\/wp-json\/wp\/v2\/posts\/3353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/roberval.com.br\/roberval\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/roberval.com.br\/roberval\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/roberval.com.br\/roberval\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/roberval.com.br\/roberval\/wp-json\/wp\/v2\/comments?post=3353"}],"version-history":[{"count":0,"href":"https:\/\/roberval.com.br\/roberval\/wp-json\/wp\/v2\/posts\/3353\/revisions"}],"wp:attachment":[{"href":"https:\/\/roberval.com.br\/roberval\/wp-json\/wp\/v2\/media?parent=3353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/roberval.com.br\/roberval\/wp-json\/wp\/v2\/categories?post=3353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/roberval.com.br\/roberval\/wp-json\/wp\/v2\/tags?post=3353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}