中文

基础设施即代码中的缺陷

软件工程 2019-07-18 v2

摘要

基础设施即代码(IaC)脚本用于自动化软件开发和部署基础设施的维护与配置。IaC 脚本本质上可能很复杂,包含数百行代码,导致难以调试的缺陷,并引发大规模系统不一致,例如大规模服务中断。IaC 脚本的使用正变得越来越流行,但这些脚本中出现的缺陷性质尚未被系统分类。对缺陷的系统分类可让从业者了解流程改进机会,从而减轻 IaC 脚本中的缺陷。本文的目标是通过基于提交消息和问题报告描述的定性分析对 IaC 脚本中的缺陷类别进行分类,帮助软件从业者改进其基础设施即代码(IaC)脚本的开发流程。我们挖掘来自 Mirantis、Mozilla、Openstack 和 Wikimedia Commons 四个组织的开源版本控制系统来开展本研究。我们分别使用来自 Mirantis、Mozilla、Openstack 和 Wikimedia Commons 的 1021、3074、7808 和 972 个提交,这些提交分别对应 165、580、1383 和 296 个 IaC 脚本。我们与 89 名评分者一起应用正交缺陷分类(ODC)方法的缺陷类型属性来对缺陷进行分类。我们还回顾了先前使用 ODC 对缺陷进行分类的文献,并将 IaC 脚本的缺陷类别分布与 26 个非 IaC 软件系统进行比较。对于 Mirantis、Mozilla、Openstack 和 Wikimedia Commons,我们分别观察到:(i)49.3%、36.5%、57.6% 和 62.7% 的 IaC 缺陷包含语法和配置相关缺陷;(ii)与非 IaC 软件相比,语法和配置相关缺陷在 IaC 脚本中更为普遍。

关键词

引用

@article{arxiv.1809.07937,
  title  = {Bugs in Infrastructure as Code},
  author = {Akond Rahman and Sarah Elder and Faysal Hossain Shezan and Vanessa Frost and Jonathan Stallings and Laurie Williams},
  journal= {arXiv preprint arXiv:1809.07937},
  year   = {2019}
}

备注

Not peer-reviewed