20 de janeiro4 min read

Aplicativos Modernos: Introdução a Contêineres e Kubernetes

Se você quer aperfeiçoar seus conhecimentos em engenharia de software, aprender como a virtualização evoluiu para contêineres, e com eles os aplicativos nativos de nuvem que permitem implantações contínuas e com zero downtime, dá uma olhada no material do material do curso “Habilitando Aplicações Nativas de Nuvem: Introdução a Contêineres e Kubernetes” disponível no Github.

Motivação

Esse curso nasceu de oportunidades identificadas em conversas com amigos, profissionais do mercado de tecnologia e professores universitários do Brasil:

  1. Mundialmente existe uma demanda por profissionais de engenharia de software e desenvolvimento de aplicativos capazes de arquitetar, construir e implantar aplicativos modernos, nativos de nuvem, como também de modernizar o imenso legado de aplicativos monolíticos, lastros que impedem muitas empresas de inovar e crescer. Hoje pela manhã vi anunciadas apenas no Linkedin 820 novas ofertas de emprego no Brasil nos últimos 30 dias com a palavra-chave “Kubernetes”.
  2. A imensa maioria das fontes atuais de conhecimento sobre o assunto estão no idioma inglês e muitas são orientadas apenas ao uso de certas tecnologias, pouco abordando os fundamentos e os conceitos que sustentam as mesmas. Saber como usar tecnologia é muito bom, mas saber também por que e como funciona permitem atingir excelência profissional.
  3. A real utilidade e o potencial dos aplicativos modernos, nativos de nuvem, habilitados pelas abstrações de virtualização, contêineres e orquestração de contêineres são somente percebidos quando o profissional entra no mercado e sente na pele o incomodo e as dores de tentar administrar manualmente uma variedade enorme de versões de sistemas operacionais, bibliotecas e pilhas de desenvolvimento de aplicações ao mesmo tempo que seus clientes esperam implantações contínuas e com zero downtime. Nesse momento é necessária uma fonte de conhecimento que lhe permita conectar de maneira pratica as abstrações, as tecnologias e os produtos de mercado.

Um aplicativo nativo de nuvem é projetado desde o início para aproveitar a elasticidade e natureza distribuída da nuvem. Ele costuma ser dividido em vários serviços autônomos por meio do uso de tecnologias e metodologias, ou seja, DevOps, entrega contínua e integração contínua, contêineres, micros serviços e APIs declarativas. Isso permite que as equipes implantem e escalonem componentes de maneira independente, para que possam fazer atualizações, corrigir problemas e fornecer novos recursos sem qualquer interrupção do serviço.

Relevância

Para se ter uma ideia da importância do mercado de aplicativos nativos de nuvem, um relatório publicado recentemente pela Allied Market indica que esse mercado gerou mundialmente US$ 5,3 bilhões em 2022 e estima-se que alcance US$ 48,8 bilhões até 2032, testemunhando um CAGR (taxa de crescimento agregado e composto) de 25,2% de 2023 a 2032. A rápida e crescente implantação de modelos preditivos de machine learning deve incrementar ainda mais a utilização de aplicativos modernos em contêineres.

A intenção é oferecer esse curso introdutório como primeiro passo para a formação de engenheiros de software e desenvolvedores de aplicativos especialistas em aplicativos modernos (Dev) e para engenheiros administradores de infraestrutura (Ops). O seu conteúdo foi elaborado usando como referência o livro “Kubernetes Up & Running” escrito por Brendan Burns, Joe Beda, Kelsey Hightower, e Lachlan Evenson e conta com inúmeras fontes online de informações teóricas e práticas. Esse material traz também referencias a profissionais que fizeram e tem feito a diferença no mercado tecnologia, alguns deles Brasileiros como o engenheiro Luiz André Barroso, executivo da Google criador e implantador dos data center modernos que originaram a computação em nuvem.

Conteúdo

Algumas passagens de filmes como “Matrix” e “Inception” são usadas para ilustrar conceitos abstratos como virtualização, contêineres e infraestrutura como código.

Pessoalmente, acredito que a vida não é um jogo de soma zero e que ensinar alguém é também a melhor maneira de aprender.

Aproveito para agradecer aos Professores Luis Sacchi e Reinaldo Valle Junior e aos alunos do terceiro ano do curso de Bacharelado em Ciência da Computação do IFSP – Campus Salto pelo apoio e pela valiosa retroalimentação sobre o material e as aulas que ministrei no segundo semestre do ano passado.

Enfim, espero que este material seja de alguma maneira útil para você ou para alguém que você conheça. Por favor entre em contato se você for professor ou instrutor interessado em utilizar esse material em sala de aula ou eventualmente em colaborar no seu aperfeiçoamento.

 Vamos dar uma rápida olhada no conteúdo disponível (https://github.com/svianrio/curso-intro-conteineires-e-k8s):

Aula 1 – Apresentação do curso, motivação e conceitos básicos

Aula 2 – Conceitos básicos: virtualização

1.Conceitos Básicos

  • Abstrações em Ciência da Computação
  • Virtualização de Computadores
  • MicroVMs e Unikernels
  • Aplicativos Modernos

Aulas 3,4 e 5 – Aplicativos Modernos e Contêineres

2.Containers

  • Origem
  • Fundamentos
  • Criação e execução
  • Registro e reuso
  • Infraestrutura como Código

Aulas 6, 7 e 8 – Orquestração de aplicativos em contêineres e conclusão do curso

3.Kubernetes

  • Origem
  • Arquitetura
  • Pods
  • Abstrações de Recursos
  • Descoberta de Serviços
  • Serviços de Rede
  • Instalação e administração básica
  • Implantação de um caso de uso (exemplo)

“Quem começa já está pela metade. Ouse saber, comece agora!" Mãos à obra!