4 ms·
This means either your contract agreement between services is not language agonistic or someone did not do their job when Interface schema was changed during re
by acroback 8y ago
This means either your contract agreement between services is not language agonistic or someone did not do their job when Interface schema was changed during reviews.
Just like any other software, interfaces live in separate repos e.g protoplasm/ for proto-buf definitions. avrobber/ for avro and so on so forth.
So, any change to protoplasm/ triggers automated tests on all other services irrespective of boundaries.
- ljw1001 8y agook. But _much_ easier to have compile time checking between projects in the same language/repo. Not saying this approach is wrong, but it's a little like riding a unicycle when a perfectly good bicycle is sitting right there.
- otterlicious 8y agoIt's much easier to drive a car than an 18 wheel truck too, but the latter have their uses.
- acroback 8y agoI think I did not present this correctly, I apologize for that. What I mean this this. Any IDL interfaces live at their functional boundaries. e.g all proto definitions shared internally by java services live under jumanji/proto/, all proto definitions shared internally bu Go service live under goat/proto/ and so on so forth. But anything which is shared in a public manner e.g any proto definitions between Java and C live outside either of these repos in top level common_proto/ repo. The build system is configured to take care of pulling the correct proto version from common_proto repo. We use maven for this, but nothing much we can do about that. Build systems are ugly and we have to live with maven in near future. EDIT: Oh that said, stop using required field in protobufs if you are stuck using proto2 like us, whoever decided to add required field to proto2 grammar made a mess. Things change and deprecate repeatedly, gazillions of required fields are annoying and recipe for disaster.