Software design patterns present general code solutions to common software design problems. Modern software systems rely heavily on containers for running their constituent service components. Yet, despite the prevalence of ready-to-use Docker service images ready to participate in multi-container service compositions of applications, developers do not have much guidance on how to compose their own Docker service orchestrations. Thus in this work, we curate a dataset of successful projects that employ Docker Compose as an orchestration tool to run multiple service containers; then, we engage in qualitative and quantitative analysis of Docker Compose configurations. The collection of data and analysis enables the identification and naming of repeating multi-container composition patterns that are used in numerous successful open-source projects, much like software design patterns. These patterns highlight how software systems are orchestrated in the real-world and can give examples to anybody wishing to compose their own service orchestrations. These contributions also advance empirical research in software engineering patterns as evidence is provided about how Docker Compose is used.
翻译:软件设计模式提供了常见软件设计问题的通用代码解决方案。现代软件系统高度依赖容器来运行其组成服务组件。然而,尽管现成的Docker服务镜像已普遍可用于参与应用的多容器服务组合,但开发者在如何构建自己的Docker服务编排方面缺乏指导。因此,本研究整理了一个使用Docker Compose作为编排工具运行多个服务容器的成功项目数据集;随后,我们对Docker Compose配置进行了定性和定量分析。通过数据收集与分析,我们识别并命名了众多成功开源项目中反复出现的多容器组合模式——这类似于软件设计模式。这些模式揭示了实际软件系统的编排方式,可为任何希望构建自身服务编排的开发者提供参考范例。同时,本研究通过提供Docker Compose实际使用证据,推动了软件工程模式领域的实证研究。