4 ms·
You say: > By making services depend on each other through a protocol like REST (or Thrift, gRPC or whatever), you can then replace that module by another one
by spotman 10y ago
You say:
> By making services depend on each other through a protocol like REST (or Thrift, gRPC or whatever), you can then replace that module by another one that respects the same interface... and you can reimplement it in whatever technology you want. I can have a module implemented on Elixir running on FreeBSD talking to another one running on OpenBSD implemented on C, talking to another one running on Linux implemented in node.js...
I said:
> It is compartmentalization between teams, and honoring stable internal functionality between teams that it makes the biggest difference.
Maybe we agree more than disagree?
You also say:
> Similar to SOA, but SOA was much broader in scope. You had service composability, discoverability, etc. That's in most cases overkill for most companies.
Not sure if the normal way of thinking of micro-services does not include this. If so, that is a new definition to me. To me micro-services mean services which perform less functionality, therefore you need more of them. If you have a platform that has 40 functions-as-a-service running in docker containers, you will need discoverability, for example.
- partycoder 10y agoYou not necessarily need to roll out a discovery service. You can put services behind a DNS, load balancer... and load balancers can be smart enough to mark a node as down. Now if you need more granularity than that, there's for instance Zookeeper ephemeral nodes, that get deleted when the client stops emitting heartbeats.