Microservices have become the de-facto software architecture for cloud-native applications. A contentious architectural decision in microservices is to compose them using choreography or orchestration. In choreography, every service works independently, whereas, in orchestration, there is a controller that coordinates service interactions. This paper makes a case for orchestration. The promise of microservices is that each microservice can be independently developed, deployed, tested, upgraded, and scaled. This makes them suitable for systems running on cloud infrastructures. However, microservice-based systems become complicated due to the complex interactions of various services, concurrent events, failing components, developers' lack of global view, and configurations of the environment. This makes maintaining and debugging such systems very challenging. We hypothesize that orchestrated services are easier to debug and to test this we ported the largest publicly available microservices' benchmark TrainTicket, which is implemented using choreography, to a fault-oblivious stateful workflow framework Temporal. We report our experience in porting the code from traditional choreographed microservice architecture to one orchestrated by Temporal and present our initial findings of time to debug the 22 bugs present in the benchmark. Our findings suggest that an effort towards making a transition to orchestrated approach is worthwhile, making the ported code easier to debug.
翻译:微观服务已成为云端应用的脱facto软件架构。 微观服务中一项有争议的建筑决策是使用舞蹈或管弦来构造它们。 在舞蹈学中,每种服务都是独立运作的, 而在管弦学中,则有一个能协调服务互动的控制器。 本文为管弦工作提供了一个理由。 微观服务的承诺是,每一种微观服务都可以独立开发、部署、测试、升级和缩放。 这使得它们适合于在云层基础设施上运行的系统。 然而,微观服务系统由于各种服务、同时事件、故障部件、开发者缺乏全球观点和环境配置的复杂互动而变得复杂。 这使得维护和调试这种系统非常具有挑战性。 我们假设的是,调整服务更容易调试。 我们把最大的公共提供的微观服务基准“Teatticket ” 移植到一个错误模糊的状态工作流程框架。 然而,由于各种服务、同时事件、故障部件、开发者缺乏全球观点和环境配置的复杂互动关系而变得复杂,因此基于微观服务系统变得复杂。 这使得维护和调试这种系统非常困难。 我们的维护和调试用这样的系统变得非常困难。 我们的调整了这种系统,, 使得调整了我们目前的测试和调整了我们目前的标准标准的调整了一种方向, 向22 的调整了我们目前的标准的调整了我们目前的标准是提出了一种调整了一种标准。