Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

You're right that monorepos make it easy for contracts that define wire protocols to stay "in sync" between services, at the code level.

But the ~main whole point of defining distinct services which exist on different ends of a wire is so that they don't need to stay in sync at the code level!

As you say, a service implements a contract, written as an IDL or a JSON schema or informal convention or whatever, in order to express a promise to consumers. That promise needs to be kept as long as any consumer relies on it. If your search service publishes a protobuf that has a service definition called e.g. SearchV1, then your search service is absolutely obliged to keep supporting that SearchV1 service until it's no longer used by anyone.

If this isn't the case, and you can deploy changes to a service that violate the wire-protocol contract you establishes with your consumers, then this is a problem. And it's easy to do. I find that many programmers don't fully understand the weight and implications of the interface they define between client and server.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: