The do's and don'ts of infrastructure code: A systematic gray literature review

被引:24
作者
Kumara, Indika [1 ]
Garriga, Martin [1 ]
Romeu, Angel Urbano [1 ]
Di Nucci, Dario [1 ]
Palomba, Fabio [2 ]
Tamburri, Damian Andrew [1 ]
van den Heuvel, Willem-Jan [1 ]
机构
[1] Jheronimus Acad Data Sci, Shertogenbosch, Netherlands
[2] Univ Salerno, Fisciano, Italy
基金
瑞士国家科学基金会; 欧盟地平线“2020”;
关键词
Infrastructure-as-code; DevOps; Gray literature review;
D O I
10.1016/j.infsof.2021.106593
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
Context: Infrastructure-as-code (IaC) is the DevOps tactic of managing and provisioning software infrastructures through machine-readable definition files, rather than manual hardware configuration or interactive configuration tools. Objective: From a maintenance and evolution perspective, the topic has picked the interest of practitioners and academics alike, given the relative scarcity of supporting patterns and practices in the academic literature. At the same time, a considerable amount of gray literature exists on IaC. Thus we aim to characterize IaC and compile a catalog of best and bad practices for widely used IaC languages, all using gray literature materials. Method: In this paper, we systematically analyze the industrial gray literature on IaC, such as blog posts, tutorials, white papers using qualitative analysis techniques. Results: We proposed a definition for IaC and distilled a broad catalog summarized in a taxonomy consisting of 10 and 4 primary categories for best practices and bad practices, respectively, both language-agnostic and language-specific ones, for three IaC languages, namely Ansible, Puppet, and Chef. The practices reflect implementation issues, design issues, and the violation of/adherence to the essential principles of IaC. Conclusion: Our findings reveal critical insights concerning the top languages as well as the best practices adopted by practitioners to address (some of) those challenges. We evidence that the field of development and maintenance IaC is in its infancy and deserves further attention.
引用
收藏
页数:20
相关论文
共 57 条
  • [1] Variability Bugs in Highly Configurable Systems: A Qualitative Analysis
    Abal, Iago
    Melo, Jean
    Stanciulescu, Stefan
    Brabrand, Claus
    Ribeiro, Marcio
    Wasowski, Andrzej
    [J]. ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY, 2018, 26 (03)
  • [2] [Anonymous], 2013, NETWORK FUNCTION VIR
  • [3] Artac M., 2016, Proceedings of the 2nd International Workshop on Quality-Aware DevOps, P40
  • [4] DevOps: Introducing Infrastructure-as-Code
    Artac, Matej
    Borovsak, Tadej
    Di Nitto, Elisabetta
    Guerriero, Michele
    Tamburri, Damian Andrew
    [J]. PROCEEDINGS OF THE 2017 IEEE/ACM 39TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING COMPANION (ICSE-C 2017), 2017, : 497 - 498
  • [5] Bass Leonard J., 2015, SEI series in software engineering, P1
  • [6] A Systematic Review of Cloud Modeling Languages
    Bergmayr, Alexander
    Breitenbuecher, Uwe
    Ferry, Nicolas
    Rossini, Alessandro
    Solberg, Arnor
    Wimmer, Manuel
    Kappel, Gerti
    Leymann, Frank
    [J]. ACM COMPUTING SURVEYS, 2018, 51 (01)
  • [7] Borovits Nemania, 2020, MaLTeSQuE 2020: Proceedings of the 4th ACM SIGSOFT International Workshop on Machine-Learning Techniques for Software-Quality Evaluation, P7, DOI 10.1145/3416505.3423564
  • [8] Blockchains: A Systematic Multivocal Literature Review
    Butijn, Bert-Jan
    Tamburri, Damian A.
    Van den Heuvel, Willem-Jan
    [J]. ACM COMPUTING SURVEYS, 2020, 53 (03)
  • [9] Within-Project Defect Prediction of Infrastructure-as-Code Using Product and Process Metrics
    Dalla Palma, Stefano
    Di Nucci, Dario
    Palomba, Fabio
    Tamburri, Damian A.
    [J]. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2022, 48 (06) : 2086 - 2104
  • [10] AnsibleMetrics: A Python']Python library for measuring Infrastructure-as-Code blueprints in Ansible
    Dalla Palma, Stefano
    Di Nucci, Dario
    Tamburri, Damian A.
    [J]. SOFTWAREX, 2020, 12