Software Project Services using Infrastructure-as-Code
Esko Salonen · Osuva (University of Vaasa) · 2020
Infrastructure-as-code is a modern practice for IT automation as well as managing complex and large-scale infrastructure. It allows describing infrastructure and configuration in a code-like syntax easily understandable for any software developer. Unlike manual infrastructure configurations the infrastructure code can be versioned, tested, reviewed, and even compiled resulting in the actual desired systems infrastructure and configuration. The objective of this thesis is to create a new software project establishment process for a medium sized software company. The aim is to automate and streamline a beginning phase of new projects by creating and documenting a process of establishing basic software project services by using infrastructure-as-code. A desired feature of the new process is to partly delegate the work of IT department to project teams who are most aware of the tools and services required for each project. The thesis is divided into two parts. The first part presents relevant infrastructure-as-code and DevOps software development methodology related theory in a form of a literature review and the second part describes planning and implementing required infrastructure-as-code automations and the actual service establishment process for the case company. The outcome of the study was a new automated project establishment process, in a form of two artifacts: process documentation and required infrastructure-as-code scripts. The study also produced a recommended way for handling the scripts and configuration files during the process, along with multiple other recommendations for similar implementations and for usage of infrastructure-as-code in general. Furthermore, results also included some recommendations for software manufacturers and a brief overview of infrastructure-as-code related risks. Infrastructure-as-code was found to be a powerful enabler of automation and suitable also for workflow automation. However, creating infrastructure-as-code scripts and building a suitable development environment were found to be difficult. Also, several target system related challenges were identified during the implementation. The conclusion considering the service establishment process was that it is feasible to delegate only configuring the infrastructure-as-code implementation to the end users.