Home - basedosdados/iac GitHub Wiki

Boas vindas! Aqui nesta documentação você encontrará mais detalhes sobre o objetivo, problema e solução relacionados à infraestrutura de tecnologia da informação da Base dos Dados.

Conteúdo:


Objetivo

Proporcionar serviços de alta disponibilidade aos nossos clientes e colaboradores, assegurando a confiabilidade, integridade e confidencialidade das informações. De forma ágil, eficiente e efetiva.

Através de práticas da cultura DevOps, otimizar a infraestrutura para que a disponibilidade e gerenciabilidade da mesma sejam garantidas.

Qual problema enfrentamos?

Alcançar os objetivos utilizando os recursos dos provedores de serviços em nuvem de maneira organizada, eficiente e colaborativa.

Como lidamos com este problema?

IaC (acrônimo de Infrastructure as Code) é a prática utilizada para proporciona o gerenciamento e provisionamento da infraestrutura através de códigos.

Estes códigos carregam as especificações da infraestrutura desejada e, como todo código apoiado por outras práticas ganhamos facilidade de alteração/manutenção, provisionamento do ambiente quantas vezes for necessário, modularização de componentes, redução de custos e erros, consistência da infraestrutura, eliminação de desvios de configuração etc. Logo, de forma declarativa criamos arquivos e manifestos que serão interpretados de forma imperativa via os comandos das ferramentas utilizadas. Essas ferramentas que serão abordadas com mais detalhes nas sessões a seguir.

Somos um projeto 100% cloud first, ou seja, todos os nossos produtos são desenvolvidos e disponibilizados por provedores de serviços em nuvem. Atualmente os recursos de infraestrutura da Base dos Dados são disponibilizados por dois provedores: Google (GCP) e Amazon (AWS).

Devido a gama de serviços disponíveis e flexibilidade dos mesmos, dentre os provedores, somos capazes de alterar, escalar e desativar facilmente algum componente e ou projeto.

Ferramentas utilizadas no projeto

GitHub Actions

Ferramenta responsável pelas automações nas etapas de validação, verificação ou construção. Consulte mais detalhes na documentação oficial.

Terraform

Terraform é a primeira grande ferramenta utilizada no projeto. Como descrito em seu próprio site "(...) ferramenta para construção, manutenção e versionamento de infraestrutura de forma segura e eficiente."

Através dela realizamos as alterações necessárias em nossa infraestrutura, como criar, deletar, atualizar e provisionar componentes dos provedores de serviços em nuvem.

Em um analogia, o Terraform é a ferramenta que irá construir a o condomínio de residências nos ambientes destes provedores. Em seus arquivos de configuração, declaramos a estrutura final dessa condomínio.

Kubernetes

Também conhecido como k8s, popularmentes definido como o sistema operacional da nuvem. Abstração de toda a infraestrutura de serviços em nuvem, como containers, volumes, imagens, etc.

Como orquestrador de container, o k8s é capaz de gerenciá-los de forma extremamente performática e escalável aplicações baseadas em containers. Realizando o balanceamento de carga entre os nós, garantindo a disponibilidade e acessibilidade dos serviços.

Outro fator fundamental do k8s é o conceito de "estado desejado", onde, através de arquivos de configuração, declaramos o dos componentes.

Ou seja, seguindo a analogia anterior, o k8s é a ferramenta que irá construir as casas deste condomínio, sendo cada casa uma aplicação ou conjunto de aplicações que utilizamos para desenvolvermos nossos produtos e ou apoio da equipe de colaboradores.