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