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

Abstract 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... Mehr ...

Verfasser: Damian A. Tamburri
Indika Kumara
Willem-Jan van den Heuvel
Angel Urbano Romeu
Martin Garriga
Fabio Palomba
Dario Di Nucci
Dokumenttyp: Artikel
Erscheinungsdatum: 2021
Schlagwörter: H2020 / Netherlands / EC / Research and Innovation action / European Commission / Computer Science Applications / Information Systems / Software
Sprache: Englisch
Permalink: https://search.fid-benelux.de/Record/base-27200743
Datenquelle: BASE; Originalkatalog
Powered By: BASE
Link(s) : https://www.openaccessrepository.it/record/85489

Abstract 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.