Skip to main content
Login | Suomeksi | På svenska | In English

Browsing by Subject "IaC"

Sort by: Order: Results:

  • Benjami, Luolajan-Mikkola (2024)
    Context: Infrastructure as Code (IaC) extends the use of software engineering tools and methods to the management of compute infrastructure. Instead of performing changes manually, developers specify the desired state of infrastructure using text-based formats. IaC tooling is used to update the infrastructure to match these. Since the state declarations are text files like program source code, they can be stored in version control systems. IaC is currently widely used in public cloud environments but less common elsewhere due to lack of tooling. Objective: This thesis aims to identify how Infrastructure as Code support could be brought into arbitrary compute environments that do not support it out of the box. Method: Human-centric research methods such as polls and interviews are used to identify the key requirements for IaC systems. Based on these requirements, a functional prototype that can meet them in a variety of compute environments is built. The prototype is evaluated primarily by comparing it to the requirements and against other IaC systems. It is also tested by several users in a controlled setting. Results: This thesis presents Ink, a modular IaC system that has been designed to be deployed into arbitrary compute environments. A functional prototype of Ink has been implemented to validate the design. The prototype has passed the evaluation steps, indicating that Ink meets the key developer and organizational requirements. However, implementing IaC in this way requires substantial custom software development. Conclusion: IaC is not widely available outside of cloud environments, but adding support for it elsewhere is possible. Whether or not this is worth the development effort depends on the priorities and size of the organization that controls the compute environment.
  • Koskelin, Jukka (2023)
    Infrastructure as Code (IaC) is one of the key components for shortening the software development cycle and enabling DevOps culture in software development teams. While the concept was introduced to the wider audience in the mid-2000s, alongside DevOps, the adoption of Public Cloud and declarative domain-specific IaC -languages has made it an integral part of software development. In this thesis, we describe the IaC as a concept and examine its history, tools, and the state of the current research. We examine Infrastructure Systems and Infrastructure Stacks as concepts for describing IaC, and different patterns for re-usable modules. We then introduce Microsoft Azure as a Public Cloud Provider, its Platform-as-a-Service (PaaS) -resources, and infrastructure deployment mechanics, focusing on Azure Resource Manager templates and Bicep domain-specific language. As a case example, we go through a real-life project for creating re-usable Azure Bicep modules, examine how its architecture evolved during the project and architectural decisions made in different parts of the project. We introduce Common Azure Resource Module Library as a reference architecture for modular Azure Bicep code, present an architecture based on a façade module pattern and perform an Architectural Trade-off Analysis (ATAM) to find tradeoffs, architecture sensitivity points and risks.