7.1 Introdução

Capítulo redigido por Bruno Lopes Lourenço

Nos últimos anos, a adoção de nuvens públicas para a disponibilização de aplicações tem se tornado cada vez mais comum. Esse tipo de serviço é oferecido por empresas denominadas servidores de nuvem, e entre os serviços mais populares temos a AWS da Amazon, o GCP da Google e a Azure da Microsoft [ref].

O nome nuvem vem do termo em inglês cloud computing, que é um modelo computacional que se caracteriza por utilizar uma rede de servidores, os quais normalmente estão distribuídos em diferentes localizações geográficas, com o intuito de permitir o armazenamento e processamento de informações, e a execução de aplicações, de modo a oferecer serviços para os usuários.

As vantagens principais desse modelo são:

  • Resiliência das aplicações: Mais de uma instância da aplicação pode ser executada em paralelo, sendo assim, no caso de uma falha em um dos servidores, a aplicação pode ser servida a partir de outro servidor [ref].

  • Redução de custos: Ao optar por contratar um serviço de nuvem, a empresa não necessita investir na criação da sua própria infraestrutura, e na contratação de pessoal especializado para configurar e manter esse tipo de ambiente (https://technologyadvice.com/blog/information-technology/4-ways-cloud-computing-can-save-money/). O provedor da nuvem compartilha os recursos entre seus clientes, conseguindo altas taxas de utilização dos mesmos, e com isso consegue oferecer um valor mais atraente.

  • Flexibilidade para gerenciar os recursos computacionais: É possível aumentar ou diminuir rapidamente a quantidade de recursos computacionais disponíveis para as aplicações, evitando desperdícios, e permitindo o atendimento de altas cargas de processamento [ref].

Esse modelo possui uma forte sinergia com as práticas de DevOps, pois possibilita que os próprios desenvolvedores codifiquem a infraestrutra necessária para a execução de suas aplicações, desde o número de instâncias dos serviços, até o nível mais básico como o número de máquinas utilizadas, e a sua capacidade. Esse processo é conhecido com o Infrastructure as Code (IaC).

Nesse sentido, o Kubernetes, que é uma plataforma para gerenciamento de cargas de trabalho e serviços distribuídos em contêineres, tem emergido como a tecnologia mais utilizada para disponibilização de aplicações em nuvem. Segundo um relatório da Cloud Native Computing Foundation (CNCF) referente ao ano de 2021, 96% dos entrevistados relataram estarem usando, ou ao menos avaliando o uso dele.

Basicamente o Kubernetes permite a criação e gerenciamento de um cluster de servidores, denominados nós, capazes de executar contêineres. Ele permite a definição de volumes de dados, utilização de certificados SSL, balanceamento de carga, e diversas outras funcionalidades que facilitam sobremaneira o desenvolvimento e implantação de aplicações na nuvem.

Nesse capítulo, nosso intuito é estruturar o nosso projeto de modo que ele possa ser executado no Kubernetes, tanto localmente na própria máquina do desenvolvedor, quanto disponibilizado em uma nuvem pública. Utilizaremos como exemplo a nuvem da Oracle, a Oracle Cloud Infrastructure (OCI) para realizar o deploy da aplicação e de suas dependências.

Last updated