Propostas Submetidas

DEI - FCTUC
Gerado a 2024-07-17 09:34:37 (Europe/Lisbon).
Voltar

Titulo Estágio

Infrastructure as Code (IaC) – Cloud-agnostic toolset

Áreas de especialidade

Engenharia de Software

Local do Estágio

Porto e remoto

Enquadramento

Project description

The last few years have seen companies adopt agile methodologies for software development and with the need for rapid development cycles comes the need to build, test and release applications faster. This challenge required companies to coherently repeat steps at each cycle, which become tedious if those steps must be done by humans. Imagine having to test an application with 100+ features every month, manually! Nowadays the solution for this is clear: implement automated tests that can be executed before a release to ensure the quality of the software. Although great, this solution has one flaw…humans! What if the person that releases the software forgets to execute the tests? Well, there is also a solution for that: Build/Release pipelines. Pipelines are a set of instructions that can be used to define how the application is build and released. So, with automated build, testing and release we can ensure the quality of our software while automating essential parts of the software development lifecycle. Given the importance of these pipelines and the potential need for maintenance (e.g. framework changes, etc…), it is common practice to include these as part of the source code (PaC – pipelines as code). While PaC have been widely adopted to ensure quality releases, there is still one key part that companies tend to rely on manual work: infrastructure.
With the ever-increasing adoption of Cloud providers to host applications, and the surge in demand for geographically dispersed applications, managing infrastructure has become challenging. The cloud has transformed how we build software. Developers went from thinking about physical machines to living in a world of network, compute, and storage as virtual resources. Given the amount of work that is required to properly configure an hosting environment for an application, Cloud Providers have empowered developers and IT engineers with command line interfaces that can be used to automate this task. Taking this into account, and the fact that the infrastructure is also a key part of the software, why not have it as part of the source-code as well? And so Infrastructure as Code (IaC) was born.
According to Martin Fowler “Infrastructure as code is the approach to defining computing and network infrastructure through source code that can then be treated just like any software system.”. Essentially allows developers or IT operations to define the requirements (compute, network, databases, etc…) that need to be available in order to run the software. Again, this enables engineers to easily re-create the host infrastructure whenever needed.

Objetivo

The goal of this work is to understand the best-practices for infrastructure-as-code and investigate the features and limitation of existing cloud infrastructure as code tools. During the course of this project you will investigate the tools provided by the three major Cloud Providers (Azure Resource Manager, Google Cloud Deployment Manager, AWS Cloud Formation) as well as tools that allow developers to define the infrastructure requirements independently from the destination cloud provider such as: Terraform, Ansible, Puppet...

The outcome of this project would be implementing a pipeline capable of provisioning the hosting infrastructure on any of the three major cloud providers, on-demand.

Innovation

Infrastructure is a key part for a well-functioning application and being able to automate and repeat the provisioning of the host environment is a mindset shift. Infrastructure as code is also part of the “Everything as Code” evolution. It allows for high repeatability, easy scalability, reduced risk of human error, easy auditing and tracing.

Plano de Trabalhos - Semestre 1

1. Analysis of the state of the art of the theme
2. Investigation of best-practices and patters regarding Infrastructure as Code;
3. Analysis of Azure Resource Manager, Google Cloud Deployment Manager, AWS Cloud Formation;
3. Project implementation planning

Plano de Trabalhos - Semestre 2

Interim work plan

Proof-of-Concept script to deploy the same application on all three cloud providers.

Investigation of cloud-agnostic infrastructure management tools (Terraform, Ansible, Puppet or other)

Comparison between tools

Development of a pipeline to provision the host environment for existing application using a cloud-agnostic tool

Writing of a research paper.

Writing of the dissertation.

Condições

1. Disponibilização de portátil
2. Comparticipação nas despesas de alimentação e deslocação

Observações

Technologies

Google, Microsoft and Amazon Cloud Infrastructures, Terraform, Ansible or Puppet, Azure DevOps

Bibliography

[1] Folower, Martin “Infrastructure as Code” https://martinfowler.com/bliki/InfrastructureAsCode.html

[2] XenonStack, “Infrastructure as Code (IaC) tools to boost your productivity in 2022” https://www.xenonstack.com/blog/infrastructure-as-code-tools

Orientador

Jorge Almeida
Jorge.Almeida@konkconsulting.com 📩