Software design patterns present general code solutions to common software design problems. Modern software systems rely heavily on containers for organizing and orchestrating their constituent service components. Yet, despite the prevalence of ready-to-use Docker service images ready to participate in multi-container orchestration, developers do not have much guidance on how to develop their own multi-container Docker orchestrations. Thus in this work, we curate a dataset of successful projects that employ Docker Compose as an orchestration tool; 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 patterns of deployment and orchestration employed by numerous successful open-source projects, much like software design patterns. These patterns highlight how software systems are orchestrated in the wild and can give examples to anybody wishing to develop their container 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使用方式的实证证据。