Your question is Detect Cycles in Microservice Graph. Start with the requirements on the right.
Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.
Google Cloud service deployments must start dependencies before the services that rely on them. Given a directed dependency graph, detect whether the graph contains a cycle and return a valid deployment order when it is acyclic.
Implement order_services(dependencies), where dependencies is a dictionary mapping each service name to a list of services it directly depends on. A service may appear only inside another service's dependency list, and should still be included in the graph.
Return a two-element result (has_cycle, order):
(True, []).(False, order), where order contains every service exactly once and each dependency appears before the service that depends on it.def order_services(dependencies):