Applying Programmable Infrastructure for the Management of Modern Cloud Native Web Applications - Rainio, Jali (My University, 2021)
Web applications have come a long way from being simple websites with minimal interactivity and features. Modern web applications can rival and even surpass traditional desktop applications in features, with the most popular web applications serving millions of daily users. However, web applications have the inherent risks that they rely on the user maintaining a stable internet connection as well as the application being reliably available. The first issue is fairly trivial, but the second one can be far more challenging and requires careful consideration on multiple levels of the application's development. One of these considerations is the infrastructure the application runs on. Traditional web infrastructure consists of physical internet-connected machines that are connected to the internet and host the software that is accessed over the web. A modern alternative to this is using a third-party service to provide you with networking resources on-demand in the cloud, freeing you from managing physical servers. This is known as infrastructure-as-a-service (IaaS). IaaS has allowed companies to create scalable, dynamic infrastructure that can host web applications capable of serving millions of users. One benefit of IaaS is that it supports the programmatic management of infrastructure. Rather than manually configure the infrastructure via a web interface, IaaS allows you to programmatically make requests to the IaaS provider in order to make changes to the infrastructure. Essentially, IaaS enables one to express their desired architecture as code. This has numerous benefits, such as enabling the automation and repeatability of infrastructure. To take advantage of programmable infrastructure, dedicated tools have emerged that make it easier to interact with IaaS providers. The primary research goal of this thesis is to understand how programmable infrastructure can be used to replace the repetitive manual tasks in infrastructure deployments and replace them with automatable, re-usable program code. Using this research, we conducted a comparative analysis of the available tools and selected Terraform as the one most applicable for the use case of this thesis's commissioner. With this tool, we designed and implemented a programmable infrastructure template that can be used to deploy and manage infrastructure in Google Cloud.
Keywords: infrastructure as code,infrastructure automation,programmable infrastructure,cloud native,terraform