Como estou subindo meus microserviços na AWS de forma completamente automatizada e com um único script
Faaaala galera, beleza ?
Não sei vocês, mas eu tenho um baita ódio quando chega o "temido" momento de colocar a aplicação no ar
, eu já usei várias ferramentes (gcp, aws, heroku, digitalocean, e até mesmo algumas no tempo do php onde subia os arquivos na mão rsrs)
Então pensei no seguinte, cara, isso é horrível preciso de uma forma simples de colocar um script e ter uma api rodando
, de forma fácil, rápida, e sem ter que perder uma semana inteira nisso.
Para isso eu passei minhas ultimas duas semanas atrás de uma forma fácil de rápida de fazer isso...
Encontrei várias formas, primeiro pensei em usar o kubernetes, pois com um yml ele já faz tudo pra você de forma super simples e escalável, mas com o precinho mais salgado, pois não é muito pensado pra projetinhos de teste nem muito pequenos, logo descartei essa opção pois os planos de AKS na AWS são bem carinhos.
Logo, fui procurar uma opção mais fácil e rápida, (e mais barata) rsrs, então lembrei de um curso que fiz uma vez de terraform, e que era possível provisionar uma infra inteiramente usando ele, passei alguns dias tentando automatizar tudo, e pimba, conseguia gerar a instancia ec2, rodar comandos via ssh, e fazer várias coisas, tinha minha aplicação rodando... no entando estava achando muito simples... e outra coisa, eu tinha que configurar os domínios e subdomínios na mão, e se o ip da máquina mudasse ? - aí eu teria que ir lá e pegar o ip novo... argh, muito chato isso...
Então comecei a buscar soluções prontas pra isso, e então dei de cara com o repo desses caras: https://github.com/bitovi/github-actions-deploy-docker-to-ec2
Pronto, achei o que precisava, era perfeito, fazia tudo que eu precisava, era demais...
Só que pra mim estava dando vários problemas de timeout, visto que ele copiava o conteudo do projeto para a instância e só depois lá dentro fazia build e subia a nova imagem...
Foi então que eu decidi usar o ECR, fiz um fork e criei uma implementação onde o github actions faz a build da imagem, o script cria um repositório no ECR, para armazenar a imagem na aws (como se fosse um DockerHub privado), e depois disso, dá um pull da imagem dentro da máquina ec2 e roda via docker-compose.
Gravei um vídeo mostrando, espero que esse vídeo chegue no máximo de pessoas possível, e em breve tenhamos mais alternativas open source e de forma simples para prover tudo isso com praticidade.
ps. usei o dokku algumas vezes também, mas ainda assim é um trabalhinho bem manual e chato (instalar tudo via ssh, configurar, blablabla, isso é horrível).
Enfim, criei um vídeo de menos de 2 minutos mostrando como você pode fazer o mesmo aí.
Link para o vídeo no meu canal no youtube onde eu mostro como eu subi uma aplicação na aws em menos de 2 minutos:
https://www.youtube.com/watch?v=lcBOaU1l8-M
Outra funcionalidade que implementei na minha versão foi que ele deixa somente uma imagem no ecr por branch
No meu caso prático, tenho dois microserviços, cada um tem um subdomínio
especifico
ex: api.meusite.com
e whatsapp.meusite.com
Em breve vou criar outros serviços, ou mesmo ambientes diferentes e a ultima coisa que quero é perder mais de 1 hora para subir um novo ambiente.
É isso galerinha, espero que alguém esbarre com esse post e veja o quanto isso me ajudou, e espero que ajude outras pessoas também.