From 6e8ea4006e1b50145a064efae766fd5fa1467090 Mon Sep 17 00:00:00 2001 From: Mathias Schopmans Date: Tue, 4 Apr 2017 09:51:18 +0200 Subject: [PATCH] Add Protobuf --- radar/2017-03-01/protobuf.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 radar/2017-03-01/protobuf.md diff --git a/radar/2017-03-01/protobuf.md b/radar/2017-03-01/protobuf.md new file mode 100644 index 0000000..d95db18 --- /dev/null +++ b/radar/2017-03-01/protobuf.md @@ -0,0 +1,14 @@ +--- +title: "Protobuf" +ring: assess +quadrant: languages-and-frameworks + +--- + +In an increasingly microservice-oriented environment, it is crucial that all parties agree on a common language and wire format for data exchange. + +JSON and XML are two very well-known formats for serialization of data, however they come with a few drawbacks. JSON is completely dynamic without any validation (though there is json-schema) and XML uses an extremely heavyweight syntax, which carries a huge overhead, so parsing and transport becomes quite slow. + +Protobuf, amongst others, is an approach to solving this problem by using well-defined schemas to create language-specific code, which serializes/marshals and deserializes/unmarshals data. One of the key features is the built-in support for evolving schemas, it is easily possible to incrementally extend the definition while staying backwards-compatible and compose messages out of several sub-messages. + +If you are looking for a way to have different systems agree on a common protocol on top of a transport layer (such as AMQP or HTTP), Protobuf is definitely worth taking a look at and should be assessed.