When we consider the application layer of networked infrastructures, data and control flow are important concerns in distributed systems integration. Modularity is a fundamental principle in software design, in particular for distributed system architectures. Modularity emphasizes high cohesion of individual modules and low coupling between modules. Microservices are a recent modularization approach with the specific requirements of independent deployability and, in particular, decentralized data management. Cohesiveness of microservices goes hand-in-hand with loose coupling, making the development, deployment, and evolution of microservice architectures flexible and scalable. However, in our experience with microservice architectures, interactions and flows among microservices are usually more complex than in traditional, monolithic enterprise systems, since services tend to be smaller and only have one responsibility, causing collaboration needs. We suggest that for loose coupling among microservices, explicit control-flow modeling and execution with central workflow engines should be avoided on the application integration level. On the level of integrating microservices, data-flow modeling should be dominant. Control-flow should be secondary and preferably delegated to the microservices. We discuss coupling in distributed systems integration and reflect the history of business process modeling with respect to data and control flow. To illustrate our recommendations, we present some results for flow-based programming in our Industrial DevOps project Titan, where we employ flow-based programming for the Industrial Internet of Things.
翻译:当我们考虑网络基础设施的应用层时,数据和控制流动是分布式系统整合中的重要关切问题。模块化是软件设计,特别是分布式系统架构中的一项基本原则。模块化强调各个模块高度凝聚力和模块之间低连接。微服务是最近的一种模块化方法,其具体要求是独立的可部署性,特别是分散的数据管理。微服务的共性与松散的组合同时进行,使微观服务结构的开发、部署和演变具有灵活性和可扩展性。然而,在我们有关微观服务结构的经验中,微观服务之间的互动和流动通常比传统的单一企业系统更加复杂,因为服务往往规模较小,只有一种责任,导致合作需要。我们建议应避免微观服务之间松散的组合、明确的控制流动模型和与中央工作流程引擎的实施。在整合层面,微观服务、数据流动模型的开发应当具有主导性。在微观服务结构中,控制流动应当是次要的,最好将微观服务下放到微观服务中,因为服务通常比传统的单一企业系统系统系统更复杂,因为服务往往较小,只有一种责任,导致合作。我们讨论在分布式项目流程中进行中的数据流的流程,我们讨论在分配式项目流程中要反映我们目前工业流程的流程的流程。