Como fazer a automação de microservices usando AWS e Docker

Veja como automatizar a implementação de microservices para se focar mais no desenvolvimento de recursos.

Você sabia que usando o Docker + AWS é possível criar, implantar e dimensionar seu aplicativo? Através do tutorial que preparamos no post de hoje, você terá um aplicativo Docker que pode construir automaticamente o seu software em commit, além de implementá-lo em um Elastic Beanstalk, ficando atrás do balanceador de carga para escalabilidade. Com esse pipeline de integração contínua, você não precisa se preocupa tanto com as implantações e pode se concentrar no desenvolvimento* de recursos em seu aplicativo. Confira!

01

Componentes
AWS CodeCommit– controle de origem (git)
AWS Code Build– compilador de código-fonte, corredor de descanso
AWS Codepipeline– cria, testa e implanta código sempre que o repo muda
AWS Elastic Beanstalk– serviço para gerenciar instâncias do EC2, lidar com implantações, provisionamento, balanceamento de carga e monitoramento de integridade
Docker + Spring Boot– Nosso aplicativo de inicialização Spring containerizado para a demonstração

Aplicação: Portal da Web usando o Spring Boot

02
Repositório: [https://github.com/aritnag/DockerMicroServiceDEMO]

A aplicação cria um arquivo microservice.jar enquanto o Maven é construído. Esse arquivo é importante para referenciar o Dockerfile

Maven build: mvn clean install

Isso produzirá target / microservice.jar. O Dockerfile abaixo usa um sabor do Alpine Linux para adicionar, expor e executar o aplicativo Spring Boot.

02

1. Inicialização do Repositório Git Usando CodeCommit

Primeiramente, precisamos de um repositório git para construir nosso código. O AWS CodeCommit é barato, confiável e seguro. Ele usa o S3, que é uma solução de armazenamento escalável, sujeita aos preços de armazenamento do S3.

Comece fazendo login no seu console da AWS e criando um repositório no CodeCommit. Para o propósito deste tutorial, chamei o nome do repositório com o mesmo nome do aplicativo Spring Boot. Uma vez criado, você receberá com as URLs padrão HTTPS e SSH do repositório.

04

05

06

1A. Configurando o Identity and Access Management (IAM)

Podemos criar um usuário separado para fazer o upload do código e se comprometer com o repositório.

Aqui, usamos uma conta root que, por padrão, tem todas as políticas necessárias.

1B. Movendo o código para o novo repositório CodeCommit

Com o novo repositório criado, clone o repositório GitHub que contém nosso aplicativo Spring Boot de amostra. Mude o controle remoto para o novo local do repositório CodeCommit e, finalmente, envie o ramo mestre para o mestre.

1.git clone https://github.com/aritnag/DockerMicroServiceDEMO.git
2.git remoto set-url origem git: // https://git-codecommit.us-east-1.amazonaws.com/v1/repos/DockerAutomateMS
3.git push master master

2. Configuração do CodeBuild

Agora que o repositório CodeCommit mantém nosso aplicativo de inicialização Spring de amostra, o código precisa ser construído para implementação. Navegue para o CodeBuild. CodeBuild é um compilador de código fonte que é pago sob demanda.

Comece criando um novo projeto de construção e aponte a fonte para o repositório AWS CodeCommit que foi criado na Etapa 1. Podemos ver que apontei esse novo projeto de construção para o provedor de código AWS CodeCommit e especifique o repositório DockerCodePipeline.

07

Em seguida, ele irá pedir informações do ambiente. A imagem padrão do sistema é adequada para este processo de construção. A parte mais importante é informar ao CodeBuild para usar o buildspec.yml. O buildspec contém os comandos necessários para gerar os artefatos necessários para implantar no EBS.

08

O buildspec.yml é incluído na amostra do aplicativo Spring Boot. Esse arquivo é usado para informar ao CodeBuild quais comandos devem ser executados em cada fase e quais arquivos empacotar e salvar nos artefatos.

buildspec.yml:

09

A configuração final do processo de construção é especificar o local onde o artefato criado a partir do buildspec.yml será armazenado. No exemplo abaixo, coloquei todos os artefatos no Amazon S3 com o nome dockerAWSCodePipeline e em um bucket chamado dockerAWSCodePipeline. O conjunto pode estar no bucket de sua escolha. Precisamos entrar no S3 e criar esse bucket antes de criar o projeto de construção.

10

O projeto de construção está agora configurado e pronto para uso. Os builds podem ser executados manualmente a partir do console, criando artefatos armazenados no S3, conforme definido acima

3. Configuração do EBS

Agora que o código está em CodeCommit e os artefatos são criados usando CodeBuild, o recurso final necessário é um servidor para implantar o código. É aí que o Elastic Beanstal é útil. O EBS é um serviço que lida automaticamente com aprovisionamento, balanceamento de carga, dimensionamento automático, etc. É uma ferramenta muito poderosa para ajudá-lo a gerenciar e monitorar seus servidores de aplicativos.

11

A última etapa da criação do ambiente de trabalho do servidor da Web é informar ao EBS que queremos executar o Docker e usar o código do aplicativo de exemplo. Posteriormente, nosso código do CodeBuild substituirá o aplicativo de amostra da AWS.

Suponhamos, por exemplo, que minha API precise de quatro servidores devido ao número de solicitações que estou recebendo. O EBS simplifica o dimensionamento desses servidores com opções de configuração.

Comece criando um novo ambiente de servidor da Web e atribua a ele um nome e um nome de domínio. Este nome de domínio é seu nome de domínio da AWS; Se você tiver um nome de domínio pessoal, poderá apontá-lo para esse balanceador de carga que está sendo criado usando o Route53.

12

13

O servidor e o ambiente levarão vários minutos para iniciar. Depois de concluído, navegue até a página de configuração do seu novo ambiente do EBS.

14

Por padrão, o ambiente possui um balanceador de carga instalado e escalas automáticas. Um acionador de dimensionamento pode ser definido para ajustar o número de instâncias a serem executadas, atendendo a determinados requisitos. Por exemplo, eu poderia definir minhas instâncias mínimas como 1 e máximo como 4 e dizer ao acionador para iniciar uma nova instância sempre que a CPUUtilization exceder 75%. O balanceador de carga escalaria as solicitações em todo o número de instâncias em execução no momento.

4. Configuração do CodePipeline

Esta é a peça final do quebra-cabeça que reúne todas as etapas de 1 a 4 acima. Notaremos que até agora precisávamos informar manualmente ao CodeBuild para executá-lo, então teríamos que ir para o EBS e especificar manualmente o artefato para a implementação. Não seria ótimo se tudo isso pudesse ser feito por nós?

15

16

Depois de concluído, o CodePipeline começará a monitorar as alterações no seu repositório. Quando uma alteração é detectada, ela cria o projeto e a implanta nos servidores disponíveis em seu aplicativo EBS. Podemos monitorar o CodePipeline em tempo real a partir da página de detalhes dos pipelines.

17

Conclusão

Quando configurado corretamente, o CodePipeline é uma ferramenta útil para o desenvolvedor que deseja codificar mais e gastar menos tempo no DevOps.

Esse canal fornece ao desenvolvedor um acesso fácil para gerenciar um aplicativo, grande ou pequeno. Não é preciso muito tempo nem dinheiro para se preparar com um aplicativo escalonável que utiliza um processo rápido e eficiente de criação e implantação.

Se precisarmos de uma solução para criar, testar, implantar e dimensionar seu aplicativo, considere o AWS CodePipeline como uma ótima solução para colocar seu projeto em funcionamento rapidamente.

Gostou do tutorial? Descobra mais sobre AWS na prática clicando aqui!

(Conteúdo traduzido e adaptado de DZone)