I’m by no means an expert on microservice architectures and I know these are just examples, but from my limited experience I always though that loops like “Service 1 -> Service 2 -> Service 3 -> Service 1” are a bit of a smell and can potentially indicate badly defined service boundaries/a distributed monolith.
I always thought more along the lines of an “onion architecture” where calls between services can only flow downstream (i.e. don’t call back into your caller or any of its callers). Of course you may sometimes need to get data back “upstream”, but this could e.g. be handled by putting an event on some queue and having the relevant services subscribed to it.
Of course the real world is always messier than my idealized solution outlined above and you guys operate on a crazy scale, but I’d genuinely like to hear your thoughts on that.
