Infra as Code com Terraform: um guia completo para iniciantes

Infra as Code com Terraform: um guia completo para iniciantes

O Terraform é uma ferramenta de infraestrutura como código (IaC) desenvolvida pela HashiCorp, que ganhou popularidade por sua capacidade de gerenciar infraestruturas de forma eficiente e escalável. Este guia visa desmistificar o Terraform para iniciantes, oferecendo uma visão abrangente e exemplos práticos. Mas afinal de contas, o que é Terraform? Terraform é uma ferramenta de IaC que permite definir, provisionar e gerenciar diferentes tipos de recursos e infraestruturas, como os principais players de mercado no quesito nuvem pública (AWS, Azure, Google Cloud, etc) usando uma linguagem de configuração declarativa conhecida como HashiCorp Configuration Language (HCL). Por que usar o Terraform? O Terraform é escolhido por sua capacidade de gerenciar recursos como código de maneira eficiente e escalável, onde ele suporta múltiplos provedores de nuvem, permitindo uma gestão unificada e simplificada. Com sintaxe declarativa, ele define o estado desejado da infraestrutura, automatizando a criação, atualização e destruição de recursos. Além do mais, o Terraform promove consistência e colaboração, pois os arquivos de configuração podem ser versionados e revisados como código e, sua execução em planos permite visualizar mudanças antes da aplicação, minimizando riscos. O Terraform é ideal para ambientes complexos e dinâmicos, onde ele ajuda com a otimização da gestão de infraestrutura, aumentando a produtividade e reduzindo erros humanos. Conceitos básicos do Terraform O Terraform é uma ferramenta madura que possui vários componentes e conceitos que podem ser usados no seu dia-a-dia porém, é sempre importante ter em mente que os itens abaixo são os fundamentais: Providers Os providers (ou provedores) permitem que o Terraform interaja com APIs de serviços como AWS, Azure, GCP, entre outros. Eles são essenciais para criar e gerenciar recursos. É possível consultar a lista de providers disponíveis para o Terraform em https://registry.terraform.io/browse/providers?category=security-authentication. Além do mais, é importante destacar que o Terraform consegue gerenciar não só os recursos de cloud em si, mas também diversos outros componentes como aplicações de comunicação, CI/CD, orquestração de containers entre diversos outros. Resources Os recursos são os componentes básicos da infraestrutura, como instâncias de máquina virtual, redes, e bancos de dados. Modules Os módulos nada mais são do que conjuntos de recursos que podem ser reutilizados e compartilhados entre projetos. State O estado do Terraform armazena informações sobre o ambiente gerido, permitindo que o Terraform saiba o que já foi provisionado. Essa é uma das parte mais sensíveis do Terraform, já que é dessa forma que ele sabe o que ele poderá gerenciar. Instalação do Terraform Para começar, é necessário instalar o Terraform em sua máquina local. Se estiver usando Linux, você pode executar os seguintes comandos: # Instala as bibliotecas básicas para o funcionamento do Terraform sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl # Adiciona a chave do repositório na máquina local curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add – # Adicionando o repositório na lista de repositórios locais sudo apt-add-repository “deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main” # Faz a instalação do Terraform sudo apt-get update && sudo apt-get install terraform Também é possível instalar usando no MacOS, utilizando o Brew: brew tap hashicorp/tap brew install hashicorp/tap/terraform Assim como é possível baixar o binário do Terraform diretamente no site oficial através do link https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli (onde inclusive você pode baixar o instalador caso esteja usando Windows). Exemplo prático: criando uma VM na AWS O exemplo que iremos usar está disponível no playground da empresa Toolbox, disponível no endereço: https://github.com/toolbox-playground/terraform-exemplo-aws Configuração inicial Com o Terraform instalado, você vai precisar de uma chave de acesso para poder criar seus recursos na AWS! Para isso, no console da AWS, procure pelo recurso IAM. Em seguida, gere um acesso do tipo de CLI, onde ele irá te fornecer a ACCESS KEY e a SECRET ACCESS KEY, que são os tokens de acesso que usaremos junto ao Terraform. Como nossa ideia é a de demonstrar o uso do Terraform, vamos utilizar o meio de autenticação mais simples que o Terraform possui, que é através das variáveis de ambiente. Para isso, iremos criar 3 variáveis de ambiente: # No caso de Linux / MacOS você pode rodar os seguinte comandos: export AWS_ACCESS_KEY_ID=”” export AWS_SECRET_ACCESS_KEY=”” export AWS_DEFAULT_REGION=”” Baixando o repositório e executando os comandos Como informado anteriormente, a Toolbox está disponibilizando um repositório de exemplo para você acompanhar e fazer o seu primeiro exercício com Terraform, que está disponível em https://github.com/toolbox-playground/terraform-exemplo-aws. Inicializando o Terraform Agora com tudo instalado e configurado, é hora de inicializar o Terraform. Para isso, basta ir no diretório do seu projeto e executado o seguinte comando: # Comando para inicializar o Terraform terraform init Este comando é o responsável por baixar todos requisitos para que o provider escolhido funcione corretamente. Planejando e Aplicando as configurações Rode o seguinte comando para ver o resultado do planejando (comando plan) e em seguida crie os recursos escolhidos: # Comando para verificar os recursos que serão criados terraform plan # Comando para criar os recursos informados terraform apply O comando plan é o responsável por mostrar todos os recursos que serão criados/alterados/destruídos pelo Terraform. Esse é um comando extremamente poderoso e que pode te ajudar a decidir se você continua ou não. Agora que você conferiu o que será modificado, é hora de informarmos para o Terraform que ele pode ir adiante fazendo tais ações. Para isso, você executará: O Terraform apply fará todas as mudanças informadas no passo anterior. No nosso exemplo, isso é algo simples de identificar, já que estamos fazendo uma criação do zero! Verificando a instância criada Acessando o console da AWS, será possível observar nossa máquina virtual já criada: Limpando os recursos criados Por fim, informaremos ao Terraform para deletar essa nossa recém máquina virtual. Para isso, o comando necessário é: # Comando para criar os recursos informados terraform destroy Boas práticas Como os outros comandos do Terraform, o comando destroy executa um comando plan informando tudo o que será destruído. Após fazer a confirmação, basta seguir para que o Terraform comece a destruição da nossa máquina virtual: Voltando no console da AWS, será possível observar que a

Como se Tornar um Engenheiro DevOps, SRE ou de Cloud ainda em 2024

Como se Tornar um Engenheiro DevOps, SRE ou de Cloud ainda em 2024

Introdução No atual mercado de trabalho, funções como DevOps, SRE (Site Reliability Engineer) e Platform Engineer estão em alta demanda. Uma rápida pesquisa no LinkedIn no início de 2024 revelou mais de 2000 vagas para engenheiros, analistas ou especialistas DevOps no Brasil. Quando incluímos termos como SRE, Site Reliability Engineer, Platform Engineer ou Cloud, esse número salta para cerca de 3000 oportunidades. Se você está interessado em ingressar ou avançar na área de tecnologia, agora é a hora! Por que DevOps e SRE estão em alta? O mercado de TI é dinâmico e exige aprendizado constante. As empresas buscam profissionais capazes de integrar desenvolvimento e operações, garantindo a confiabilidade e escalabilidade dos sistemas. DevOps e SRE são metodologias que atendem a essa necessidade, promovendo eficiência e inovação. Vamos explorar como você pode se tornar um profissional desejado nessas áreas em 2024. Caminhos para se Tornar um Engenheiro DevOps ou SRE Existem diversas maneiras de se tornar um engenheiro DevOps ou SRE. Dedicação, estudo e prática são fundamentais. A seguir, são descritas algumas das melhores abordagens: 1. Cursos online gravados Os cursos online são uma excelente maneira de aprender no seu próprio ritmo. Existem várias plataformas que oferecem uma variedade de cursos gravados que abrangem desde os fundamentos até tópicos avançados em DevOps, SRE e Cloud. Estes cursos são projetados por especialistas da indústria e incluem material de leitura e laboratórios práticos para garantir um aprendizado completo. Empresas como a Next Wave Education oferecem esses tipos de cursos, proporcionando flexibilidade para os alunos. 2. Livros e material escrito Para aqueles que preferem a leitura, há uma vasta biblioteca de recursos escritos disponíveis. Livros essenciais sobre DevOps e SRE, como o “Google SRE“, são amplamente recomendados. Além disso, aqui na Next Wave Education você encontra artigos semanais, que lhe auxiliam na construção de uma base teórica sólida e trazem insights práticos. 3. Cursos online ao vivo Se você prefere uma abordagem mais interativa, empresas de consultoria e treinamento como a Next Wave Education oferecem esses cursos ao vivo e sob demanda. Com instrutores experientes, é possível interagir, tirar dúvidas em tempo real e se beneficiar de um ambiente de aprendizado colaborativo. Esses cursos são oferecidos tanto presencialmente quanto online, proporcionando flexibilidade para atender às diversas necessidades dos alunos. 4. Mentoria personalizada Programas de mentoria personalizada são altamente recomendados para um suporte mais individualizado. Mentores experientes oferecem orientação, conselhos valiosos e acompanhamento contínuo para ajudar os profissionais a alcançarem seus objetivos de carreira. Empresas de consultoria e treinamento como a Next Wave Education oferecem serviços de mentoria para guiar os alunos em seu desenvolvimento profissional. 5. Certificações profissionais Certificações são altamente valorizadas no mercado de trabalho. Existem cursos preparatórios para diversas certificações renomadas, como AWS Certified DevOps Engineer, Google Professional Cloud DevOps Engineer e Microsoft Certified: DevOps Engineer Expert.  6. Pós-graduação e MBA Para aqueles que buscam uma qualificação mais avançada, programas de pós-graduação e MBA com ênfase em DevOps, SRE e Cloud são ideais. Esses programas são voltados para profissionais que desejam aprofundar seus conhecimentos e obter uma qualificação reconhecida no mercado.  A importância do aprendizado contínuo No mundo da TI, o aprendizado contínuo é essencial. As tecnologias evoluem rapidamente, e é crucial manter-se atualizado para se destacar no mercado. Programas de cursos atualizados, workshops e eventos são formas eficazes de garantir que os profissionais se mantenham em constante desenvolvimento. Empresas como a NextWave Education oferecem uma variedade de recursos para apoiar o aprendizado contínuo. Acelere sua carreira conosco A Mentoria Next Level DevOps é um programa de mentoria de 12 meses com encontros semanais ao vivo, com um grupo seleto e restrito, onde estaremos do seu lado para mantê-lo relevante e atualizado no mercado de tecnologia, aprendendo e implementando as melhores práticas e ferramentas de DevOps. Clique aqui para entrar na prioridade pela melhor oferta de lançamento Conclusão Se você está pronto para iniciar ou avançar sua carreira em DevOps, SRE, Cloud ou Platform Engineering, existem diversas opções disponíveis para ajudar nesse processo. Desde cursos online gravados até programas de mentoria personalizada, passando por bootcamps intensivos e certificações profissionais, há recursos que atendem a todas as necessidades. Visite a página da Next Wave Education para saber mais sobre como essas opções podem ajudar você a se tornar um profissional de sucesso em 2024. 

CI/CD com Jenkins: Primeiros passos

Primeiros passos com Jenkins

Neste artigo vamos explorar como criar seu primeiro pipeline CI/CD usando Jenkins, uma das ferramentas mais populares para essa finalidade.

O que é a cultura DevOps?

O que é a cultura DevOps?

Um pouco mais do que simplesmente uma metodologia, DevOps é um conjunto de boas práticas que podem reeducar sua equipe.

Padrão Retry com Polly e ASP.NET Core

Padrão Retry com Polly e ASP.NET Core Fala dev .NET, tudo bem? No artigo de hoje vou explorar o conceito de resiliência e como o Padrão Retry e a biblioteca Polly podem ajudar nisso. Também vou relacionar esse tema com arquitetura de microsserviços, onde sua importância aumenta ainda mais. Introdução a Resiliência É importante deixar claro que falhas podem ocorrer independente da arquitetura utilizada, já que de alguma forma sistemas na maioria das vezes dependem de componentes externos, como bancos de dados ou APIs terceiras. Porém, quando se trabalha com arquiteturas baseadas em microserviços, é fundamental entender que existem maior espaço para falhas acontecerem. Seja um serviço temporariamente indisponível ou uma falha na rede, esses são problemas comuns que precisamos aprender a lidar. É aí que entra o conceito de resiliência. A resiliência é a capacidade de um sistema se recuperar rapidamente de falhas e continuar fornecendo suas funcionalidades de maneira correta. Isso é especialmente crítico em microserviços, pois falhas em um único serviço podem se propagar e afetar toda a aplicação. A ideia não é evitar falhas. Afinal, isso seria impossível! O objetivo é minimizar o impacto que essas falhas podem ter. Para isso, podemos utilizar técnicas e padrões específicos, como o Padrão Retry, que vou explorar agora. Sobre o padrão Retry O Padrão Retry é uma estratégia simples, mas poderosa, para aumentar a resiliência de um sistema. A ideia é tentar novamente uma operação que falhou, na esperança de que ela possa ter sucesso nas tentativas subsequentes. Por exemplo, se um microserviço está temporariamente indisponível devido a uma sobrecarga ou outra razão, tentar a operação novamente após um curto período de tempo pode resolver o problema. No entanto, é importante ter cuidado para não sobrecarregar ainda mais o serviço com tentativas excessivas de retry. Conhecendo o Polly Com esses conceitos em mente, vamos falar sobre o Polly. Esta biblioteca .NET ajuda a implementar políticas de resiliência, como o padrão Retry, de uma maneira fácil e descomplicada. No Polly, você pode configurar uma política de retry para especificar o número de tentativas e o tempo entre elas. Além do padrão Retry, o Polly suporta muitas outras políticas, como Circuit Breaker e Fallback, que permitem que você construa sistemas altamente resilientes. Polly e ASP.NET Core Agora, vamos ver como usar o Polly com o ASP.NET Core. A configuração é bem simples e pode ser feita diretamente no Program.cs do seu projeto. Além disso, Polly se integra perfeitamente com o HttpClientFactory do ASP.NET Core, permitindo que você aplique políticas de resiliência às suas chamadas HTTP. O primeiro passo é instalar o pacote: Com isso, vamos no Program.cs. Porém, antes de mostrar a configuração, vou apresentar brevemente nosso serviço de integração simples que criei. A API com a qual estou me comunicando é um projeto simples em ASP.NET Core, que só responde o código 204 (Sucesso, No Content). Interface do serviço: Implementação do serviço: Você pode estar se perguntando o que o HttpClient faz aí, mas não se preocupe. Na configuração que faremos a seguir o HttpClient vai estar disponível via injeção de dependência com as políticas de resiliência aplicadas. O cenário é de integração com um serviço terceiro para sincronizar dados ao ter um novo cadastro de cliente. Com o serviço apresentado, vamos à configuração no Program.cs. A primeira linha se refere à injeção de dependência do serviço, logo não tem a ver diretamente com a resiliência utilizando Polly. Já da terceira em diante, configuramos o uso de HttpClient com políticas de re-tentativa para nosso serviço, definindo uma quantidade de tentativas igual a 2, com tempo aumentando de forma exponencial. Com a nossa configuração feita, mostro o uso do serviço no Controller, fazendo um testes: um com o serviço com o qual vamos integrar em execução, e outro com ele desligado. E logo abaixo o resultado de nossos testes. Note que a requisição foi bem sucedida nesse caso, já que o serviço está em execução. Agora vou parar a execução do serviço e vamos ver o resultado. Notamos agora que houveram duas tentativas adicionais, com a exceção sendo lançada em seguida. Com isso, demonstramos o uso da biblioteca Polly para a implementação do padrão Retry, que resulta em maior resiliência em nosso serviços. E é isso aí, dev .NET! Resiliência e padrão Retry são conceitos-chave para construir microserviços robustos e confiáveis. E com o Polly e o ASP.NET Core, você tem as ferramentas certas para colocar tudo isso em prática. Link do repositório aqui Um padrão muito comum de ser utilizado junto ao Retry é o Circuit Breaker. Pode ser tema para um artigo futuro! Espero que tenha curtido. Até a próxima! Compartilhe Whatsapp Twitter Linkedin