Segunda Edição de Vídeo com Kdenlive
Desenvolvedor focado em Cloud e DevOps, com experiência prática em AWS, Terraform, Docker, ECS Fargate, ALB, CI/CD e automação de infraestrutura. Desenvolvi projetos utilizando IaC, integração entre ECS, ECR e ALB, pipelines com GitHub Actions e monitoramento com CloudWatch Logs. Tenho interesse em arquitetura cloud, containers, automação e práticas DevOps modernas voltadas para ambientes escaláveis e resilientes.
Este projeto consiste em uma pipeline de CI/CD totalmente automatizada utilizando GitHub Actions, Terraform e Docker para provisionamento e deploy de uma aplicação Node.js na AWS.
A infraestrutura é gerenciada como código (IaC), garantindo reprodutibilidade, escalabilidade e facilidade de destruição e recriação do ambiente.
O sistema automatiza todo o ciclo de vida da aplicação:
Checar se aplicação se conectou corretamente
( Seu IP da EC2 conectando na porta 3000 )
Checar se o docker está rodando na EC2
( Entrar na maquina com sua chave .pem criada ssh -i my-key.pem ec2-user@SEU_IP_EC2, e la dentro emitir um docker ps )
Checar se a aplicação está conectando com o banco
( Use os comandos abaixo pra confirmar
docker exec -it node-app printenv | grep DB_HOST
docker logs node-app
nslookup app-db.cclwyemq4f8s.us-east-1.rds.amazonaws.com
cat /home/ec2-user/db_debug.txt
getent hosts app-db.cclwyemq4f8s.us-east-1.rds.amazonaws.com )
Link do repositório https://github.com/RafaelFerreiraNeves/Infraestrutura-AWS-Node.js-PostgreSQL-na-AWS-com-Terraform-e-Docker-e-Automacao-via-GitHub-Actions.git
Desenvolvi uma infraestrutura em nuvem na AWS utilizando Terraform, aplicando princípios de Infraestrutura como Código (IaC) e arquitetura modular para garantir escalabilidade, reutilização e fácil manutenção.
O projeto foi estruturado com módulos independentes de VPC, EC2 e S3, simulando um ambiente real de produção e seguindo boas práticas utilizadas em times de engenharia de plataforma e DevOps.
Principais entregas e responsabilidades
Link do repositório https://github.com/RafaelFerreiraNeves/Infraestrutura-AWS-comInfraestrutura-AWS-Arquitetura-Modular-com-uso-de-outputs-e-Automacao-via-GitH.git
Automação com Terraform Objetivo do projeto
O objetivo é automatizar o processo de criação e manutenção do ambiente para execução dos projetos de Software
Para o desenvolvimento do projeto, foram levantadas as seguintes premissas:
Utilizar o Terraform como ferramenta de infraestrutura como código.
O cluster Kubernetes deve ser criado utilizando o serviço Elastic Kubernetes Service (EKS) da AWS.
O projeto deve ser o mais simples e reaproveitável possível.
Toda vez que houver alteração no código Terraform na branch main do repositório, a pipeline deve ser executada.
Só vai haver um ambiente Kubernetes (os ambientes de desenvolvimento, homologação e produção serão separados por namespace).
AWS
S3
EKS
AWS CLI
Terraform
AWS Provider
AWS VPC Terraform module
AWS EKS Terraform module
GitHub
GitHub Actions
Motivações para o uso de cada tecnologia
Instruções para executar
A pipeline de criação ou atualização do projeto é executada sempre que o código Terraform do projeto for alterado na branch main. Configurações
As variáveis de configuração do projeto estão no arquivo terraform.tfvars, exceto as variáveis consideradas sensiveis que estão no gerenciador de secrets do GitHub Actions.
Variáveis armazendas em secrets:
AWS_ACCESS_KEY_ID => Access Key utilizada para configurar o AWS CLI.
AWS_SECRET_ACCESS_KEY => Secret access Key utilizada para configurar o AWS CLI.
Estrutura da solução
Diagrama do projeto
Explicação do Fluxo Possíveis evoluções do projeto
Algumas evoluções que sugiro para o projeto:
Separar ambientes dev, homolog e prod utilizando o Terraform Workspace ou Terraform Grunt para criação e gerenciamento desses ambientes.
Usar o DynamoDB junto com o S3 para evitar execução paralela do Terraform.
Imagens do repositório
Obs: Sempre de fork no GitHub, isso serve para criar uma cópia pessoal de um repositório de terceiros na sua própria conta, permitindo que você experimente, altere e melhore o código livremente sem afetar o projeto original
Amazon Service Catalog
Amazon Managed Blockchain
O Amazon Managed Blockchain é um serviço totalmente gerenciado que facilita ingressar em redes públicas e criar e gerenciar redes de blockchain privadas usando as conhecidas estruturas de código aberto Hyperledger Fabric e Ethereum.
Esse viabiliza a criação de aplicativos nos quais várias partes podem realizar transações, sem a necessidade de uma autoridade central confiável. Atualmente, a criação de uma rede de blockchain escalável com as tecnologias existentes é uma tarefa de configuração complexa e difícil de gerenciar. Para criar uma rede de blockchain, cada membro da rede deve provisionar manualmente hardware, instalar software, criar e gerenciar certificados para controle de acesso, além de configurar componentes de rede. Quando a rede estiver em execução, será necessário monitorar continuamente a infraestrutura e adaptar-se às alterações, como o aumento das solicitações de transação ou os novos membros que ingressam ou saem da rede.
O Amazon Managed Blockchain é um serviço totalmente gerenciado que permite que você entre em redes públicas ou configure e gerencie redes privadas escaláveis com apenas alguns cliques. O serviço elimina a sobrecarga necessária para criar a rede ou ingressar em uma rede pública e escala automaticamente para atender às demandas de milhares de aplicações que executam milhões de transações. Depois que a rede estiver ativa e em funcionamento, ele facilita o gerenciamento e a manutenção da rede de blockchain. Ele gerencia seus certificados e permite que você convide novos membros facilmente para ingressar na rede.
Benefícios do Managed Blockchain
Totalmente gerenciado
Com o Amazon Managed Blockchain, você pode criar rapidamente redes de blockchain que abrangem várias contas da AWS, permitindo a um grupo de membros executar transações e compartilhar dados, sem a necessidade de uma autoridade central. Diferentemente da hospedagem própria da infraestrutura de blockchain, o Amazon Managed Blockchain elimina a necessidade de provisionar manualmente um hardware, instalar um software ou configurar componentes de rede e segurança. Com a API de votação do Managed Blockchain, os participantes da rede podem votar para adicionar ou remover membros. Quando um novo membro é adicionado, o Managed Blockchain permite a ele executar e configurar vários nós pares de blockchain para processar solicitações de transação e armazenar uma cópia do livro contábil. O Managed Blockchain também monitora a rede e substitui automaticamente os nós que apresentam mau desempenho.
Características do CDK (Cloud Development Kit) e SDK (Software Development Kit)
Características do AWS Application Discovery Service e AWS Application Migration Service
AWS Wavelength
Os benefícios do Systems Manager incluem:
Melhorar a visibilidade em toda a sua infraestrutura
O Systems Manager fornece uma visão centralizada dos nós nas contas e regiões da sua organização. Acesse rapidamente as informações da instância, como ID, nome, detalhes do sistema operacional e agentes instalados. Use o Amazon Q Developer para consultar metadados de instâncias usando linguagem natural, o que ajuda você a identificar problemas e agir com mais rapidez.
Aumentar a eficiência operacional com automação
Automatize tarefas operacionais comuns e reduza o tempo e os esforços necessários para manter seus sistemas. O Systems Manager fornece gerenciamento remoto seguro e protegido de seus nós em grande escala sem que seja necessário fazer login em seus servidores. Você não precisa mais usar bastion hosts, SSH ou PowerShell remoto. O Systems Manager também oferece uma forma simples de automatizar tarefas administrativas comuns em grupos de nós como edições de registro, gerenciamento de usuários e instalações de software e patches.
Simplifique o gerenciamento de nós em escala em qualquer ambiente
O Systems Manager ajuda você a gerenciar nós em ambientes da AWS, on-premises e multicloud. Agende diagnósticos automatizados para identificar problemas no SSM Agent e corrigi-los com runbooks com apenas um clique. Depois que seus nós forem configurados como nós gerenciados, você poderá executar tarefas operacionais críticas, como aplicar patches de segurança, iniciar sessões registradas e executar comandos remotamente.
O Systems Manager é usado por gerentes e operadores de TI, engenheiros de DevOps, gerentes de segurança e conformidade, diretores de TI e CIOs. De um modo geral, o Systems Manager é apropriado para:
Organizações que desejam melhorar o gerenciamento e a segurança de seus nós em grande escala.
Organizações que desejam aumentar a visibilidade e a agilidade operacional ao gerenciar sua infraestrutura.
Organizações que desejam aumentar a eficiência operacional em grande escala.
Os principais recursos do Systems Manager incluem:
Visualizações centralizadas de seus nós
Aplicação de patches em nós em grande escala
Diagnóstico e correção automatizados de problemas comuns de nós
Troque despesas fixas por despesas variáveis — Em vez de ter que investir pesadamente em data centers e servidores antes de saber como usá-los, você pode pagar somente quando consumir recursos de computação e pagar somente pelo quanto consumir.
Beneficie-se de enormes economias de escala — Ao usar a computação em nuvem, você pode obter um custo variável menor do que o obtido sozinho. Como o uso de centenas de milhares de clientes é agregado na nuvem, provedores como esse AWS podem obter maiores economias de escala, o que se traduz em preços de pagamento as-you-go mais baixos.
Pare de adivinhar a capacidade — elimine a adivinhação sobre suas necessidades de capacidade de infraestrutura. Quando você toma uma decisão de capacidade antes de implantar um aplicativo, geralmente acaba usando recursos ociosos caros ou lidando com capacidade limitada. Com a computação em nuvem, esses problemas desaparecem. Você pode acessar a capacidade que precisar e aumentar e reduzir a capacidade conforme necessário com apenas alguns minutos de antecedência.
Aumente a velocidade e a agilidade — Em um ambiente de computação em nuvem, os novos recursos de TI estão a apenas um clique de distância, o que significa que você reduz o tempo de disponibilização desses recursos para seus desenvolvedores de semanas para apenas alguns minutos. Isso resulta em um aumento drástico na agilidade da organização, já que o custo e o tempo necessários para experimentar e desenvolver são significativamente menores.
Pare de gastar dinheiro administrando e mantendo data centers — concentre-se em projetos que diferenciam sua empresa, não na infraestrutura. A computação em nuvem permite que você se concentre em seus próprios clientes, e não no trabalho pesado de empilhar, empilhar e alimentar servidores.
Torne-se global em minutos — implante facilmente seu aplicativo em várias regiões ao redor do mundo com apenas alguns cliques. Isso significa que você pode fornecer menor latência e uma melhor experiência para seus clientes a um custo mínimo.
AWS FISrealiza ações reais em situações reais AWS recursos em seu sistema. Portanto, antes de usar AWS FISpara realizar experimentos em produção, é altamente recomendável que você conclua uma fase de planejamento e execute os experimentos em um ambiente de pré-produção.
Para usar AWS FIS, você executa experimentos em seu AWS recursos para testar sua teoria de como um aplicativo ou sistema funcionará em condições de falha. Para realizar experimentos, primeiro você cria um modelo de experimento. Um modelo de experimento é o esquema do seu experimento. Ele contém as ações, destinos e condições de parada do experimento. Depois de criar um modelo de experimento, você pode usá-lo para executar um experimento. Enquanto seu experimento está sendo executado, você pode acompanhar seu progresso e ver seu status. Um experimento é concluído quando todas as ações do experimento tiverem sido executadas.
Uma ação é uma atividade que AWS FISexecuta em um AWS recurso durante um experimento. AWS FISfornece um conjunto de ações pré-configuradas com base no tipo de AWS recurso. Cada ação é executada por um período específico durante um experimento ou até você interromper o experimento. As ações podem ser executadas sequencialmente ou simultaneamente (em paralelo).
Um alvo é um ou mais AWS recursos nos quais AWS FISexecuta uma ação durante um experimento. Você pode escolher recursos específicos ou selecionar um grupo de recursos com base em critérios específicos, como tags ou estado.
AWS FISfornece os controles e grades de proteção necessários para realizar experimentos com segurança em seu AWS cargas de trabalho. Uma condição de parada é um mecanismo para interromper um experimento se ele atingir um limite que você define como um CloudWatch alarme da Amazon. Se uma condição de parada for acionada durante a execução do experimento, AWS FISinterrompe o experimento.
Compatível Serviços da AWS
AWS FISfornece ações pré-configuradas para tipos específicos de alvos em AWS serviços. AWS FISsuporta ações para recursos alvo para o seguinte Serviços da AWS:
Amazon CloudWatch
Amazon DynamoDB
Amazon EBS
Amazon EC2
Amazon ECS
Amazon EKS
Amazon ElastiCache
Amazon RDS
Amazon S3
AWS Systems Manager
Amazon VPC
Para experimentos com uma única conta, os recursos de destino devem estar nos mesmos Conta da AWS como o experimento. Você pode correr AWS FISexperimentos que visam recursos em uma área diferente Conta da AWS conta usando AWS FISexperimentos com várias contas.