This document discusses building and evolving a microservice architecture based on a dependency graph. It begins by outlining some common problems that arise when the dependencies between microservices are not well understood or documented, such as not knowing what services depend on a given service that needs to be changed. It then discusses choreography and orchestration approaches to microservice architecture and when each is generally more appropriate. Finally, it provides examples of Netflix Conductor and Uber Cadence, two open source workflow orchestration systems that can help manage dependencies and orchestrate workflows across microservices.