Chegou a hora de rever aqueles projetos que não pudemos tirar do papel – seja por não termos tempo para implementá-los, ou dinheiro suficiente para investir.
Quem hospeda suas aplicações em um data center tradicional sabe da dificuldade de provisionar um novo ambiente, pois é necessária a criação de servidores, a instalação de um sistema operacional em cada um deles, a disponibilização de discos, as liberações de ACLs e etc. Esse processo costuma demorar alguns dias até que seja disponibilizado para implementar a sua aplicação, porém ainda será necessário atualizá-la constantemente para o seu negócio ser mais dinâmico.
Se você já está habituado ao conceito de DevOps, com certeza está pensando em CI/CD (Jenkins, Gitlab CI, CircleCI…), repositório de códigos (Git, Gitlab, BitBucket…) e no arsenal de ferramentas que temos no mercado, mas consequentemente será necessário a instalação de mais servidores e de conhecimento técnico para instalá-las e mantê-las.
E se alcançássemos a tão sonhada agilidade sem nos preocuparmos com o gerenciamento de servidores e ferramentas, e quem sabe até reduzirmos custos de equipe e infraestrutura? Pois bem, neste artigo falaremos sobre DevOps e arquitetura sem servidores utilizando serviços AWS.
Os serviços a seguir, além de se integrarem com as principais ferramentas DevOps, também se integram facilmente ao ecossistema da AWS como o AWS IAM, AWS CloudFormation entre outros.
AWS CodePipeline
É o serviço gerenciado de CI/CD e é nele que fazemos as devidas integrações/invocações dos serviços AWS. Tem funções como armazenar códigos das aplicações, compilá-los, testá-los e implementá-los.
É simples configurar um pipeline, pois ele pode ser criado através de uma interface gráfica e amigável. Ele ainda possui o Pipeline Wizard que lhe ajudará neste processo, e além disso é possível ver o histórico e visualizar as implementações em tempo real.
O custo de utilização do serviço é calculado por pipelines ativos (1 USD por pipeline que existe há mais de 30 dias e que tem pelo menos uma alteração de código executada nele durante o mês).
AWS CodeCommit
É o serviço gerenciado para hospedar repositórios git. Nele você terá a mesma experiência (mesmos comandos) de um git instalado em um ambiente on premise.
A comunicação entre o desenvolvedor e a AWS (git add e outros) é criptografada e, portanto, segura. Além disso, o acesso aos repositórios é controlado pelo IAM (Identity and Access Management) que pode ser integrado ao AD da sua empresa.
O custo de utilização do serviço é calculado pela quantidade de usuários e repositórios.
AWS CodeBuild
É o serviço gerenciado para compilar, efetuar testes e criar pacotes de softwares. O que isso quer dizer? Se seu código foi desenvolvido em Java, por exemplo, é necessário compilá-lo antes de implementá-lo.
O custo de utilização do serviço é calculado com base no número de minutos necessários para concluir a compilação.
AWS CodeDeploy
É o serviço para atualizar ou implementar o código/pacote de software da aplicação.
Com relação a hospedar a aplicação, no artigo https://blog.compass.uol/tech/aws-ecs-aws-fargate/ falo a respeito do AWS Fargate. Esse é um dos serviços sem servidores indicado para containers, porém temos diversas opções na AWS que não necessitam de servidores como, por exemplo, o Amazon S3. Caso a sua aplicação seja um site estático ou orientada a eventos, o AWS Lambda é uma opção.
Sobre custos, você está livre de cobranças com o CodeDeploy caso a implantação do código seja no Amazon EC2, no AWS Lambda ou no Amazon ECS.
Veja que com esses serviços é possível experimentar e inovar sem a necessidade de grandes investimentos. Nem todas as aplicações podem se beneficiar desse tipo de arquitetura, mas vale a provocação para os times de tecnologia que suportam o seu negócio.