Escrito por: TIVIT

Para criar a infraestrutura como código em nuvem, o CloudFormation se torna a opção mais viável e proporciona diversos recursos para facilitar a modelagem de templates e configurá-los de maneira mais específica.

 

Então, para falar de forma detalhada sobre a função da AWS, conversamos com o nosso especialista de Cloud DevOps, Ramoon Camacho. Aqui, ele vai esclarecer quais são as principais funcionalidades do CloudFormation. Confira!

Como ocorre a separação de responsabilidade no gerenciamento de templates? 

Quando o administrador de rede cria e gerencia os templates da comunicação e utiliza o CloudFormation, o VPCs, Networks, Subnets, Elastic IPs, NACLs são configurados. Geralmente, o analista de banco de dados desenvolve os modelos de RDS e DynamoDB. Na configuração, o DBA deve especificar em quais redes o banco de dados rodará.

 

Se o DBA é associado diretamente ao recurso criado, ocorre um problema de comunicação toda vez em que as informações são atualizadas. Nesse sentido, o CloudFormation tem a função Cross-Stack Reference, que possibilita os dois templates serem gerenciados por profissionais diferentes. Enquanto o analista de redes usa a opção Export para exportar aquilo que precisar, o de banco de dados usa a ImportValue e importa o valor que necessita.

Como é possível ter o aproveitamento de código?

As possibilidades do CloudFormation são inúmeras. Por exemplo, é possível criar stacks dentro de outros stacks. Assim, consegue-se alterar os templates e operar com programação orientada a objetos.

 

Com a função nested stack, você consegue replicar o mesmo componente em vários templates. Em um exemplo prático, é possível unificar o código do bucket S3. Nos templates principais, define-se a criação do bucket de acordo com os modelos mais específicos. Logo, se precisar atualizar o bucket S3, não é preciso fazer em outro lugar.

De que maneira é feita a monitoração dinâmica?

Com o CloudWatch alarm, você pode acompanhar o desempenho da sua aplicação. Durante a criação ou atualização de um stack, é possível defini-lo para monitorar suas ações. Se o alarme entrar em estado de alarm, o CloudFormation volta o stack ao estado anterior.

 

Por exemplo, supomos que, ao atualizar o stack com novas configurações, o Rollback trigger é definido para esse alarme. O stack é atualizado e a nova configuração é aplicada corretamente. Porém, com isso, a aplicação passa a apresentar problemas. Então, o alarme é acionado, e o CloudFormation volta o stack automaticamente ao estado anterior.

 

Essa função é de extrema importância, já que diminui o desperdício de tempo com uma alteração que não funciona.

De que maneira acontece a criação de recursos externos à AWS?

Digamos que a AWS CloudFormation Resource Type é a evolução do Custom Resources. Ela é uma função extremamente versátil, principalmente, para incluir provisionamentos que ficariam em outro fluxo, no mesmo stack.

 

Sem ela, o desenvolvedor teria que acionar outros targets após a criação da sua stack. Porém, com ela, é possível interagir com qualquer entidade externa por meio do mesmo template.

 

Além disso, é viável provisionar recursos customizados a parte da AWS, como a configuração de um serviço externo, de uma aplicação de monitoração ou de um ambiente On Premise.

Como são a segurança e a customização, os parâmetros e as referências dinâmicas desse tipo de ferramenta?

Na seção parameters, podemos definir um parâmetro do tipo string, número ou lista de valores, para ser inserido durante a criação do stack. Os parâmetros são essenciais para a customização do template. 

 

Não faria sentido criar um modelo diferente para a instância de cada tipo. É muito mais funcional, gerar um único que tenha a opção de escolher o tipo de instância, o nome, a chave a ser utilizada, subnet, entre outras informações. Com o parameters, o mesmo template pode ser utilizado inúmeras vezes, cada um com diferentes valores nos parâmetros.

 

Outra opção interessante é o tipo de parâmetro SSM. Com ele, deixamos nossos templates mais seguros e podemos reutilizá-los, já que o parâmetro fica protegido e é externo ao nosso template. Além dos parâmetros apresentados acima, podemos utilizar referências dinâmicas para referenciar valores. Também, podemos usar até 60 referências dinâmicas em um stack.

Quais os principais desafios do ambiente crítico da configuração de templates?

Um dos principais desafios, provavelmente, é que, com múltiplos arquitetos gerenciando uma grande quantidade de stacks, pode haver a deleção ou atualização acidental. Para isso, a nossa ferramenta oferece algumas formas de se proteger como: 

  • termination protection;
  • stack-level policies;
  • resource-level policies;
  • e iam policies.

Como a ferramenta ajuda a potencializar a engenharia reversa?

Se você já tem um ambiente em execução, pode criar um template CloudFormation por meio de engenharia reversa utilizando o Former2. É só entrar no endereço —  https://former2.com/, instalar a extensão no seu browser, informar suas credenciais de acesso de um usuário com a policy ReadOnlyAccess. 

 

Ali, é apresentada uma interface em que você escolhe os serviços dos quais possui recursos, seleciona e gera o template CloudFormation da sua infraestrutura atual.

Em que consiste a infraestrutura como código no ciclo de vida do desenvolvimento de software?

Quando falamos de SDLC (Software Development LifeCycle), lembramos dos essenciais CodeCommit, em que armazenamos o código da aplicação, o CodeBuild, para compilar e testar, o CodeDeploy para implantar, e o CodePipeline para interligar e gerenciar tudo isso.

 

Há muitas possibilidades, já que o CodePipeline suporta também o CloudFormation como provedor de deploy. Então, podemos incluir a criação de um stack no ciclo de vida do desenvolvimento de software. Portanto, automatizamos a criação, a utilização e a remoção de infraestrutura durante o ciclo de desenvolvimento, dando autonomia aos desenvolvedores.

 

Pode-se criar, por exemplo, um ambiente para stress testing ou qualquer recurso para atender a um requisito de desenvolvimento da aplicação, como um bucket S3, uma função lambda para testes da aplicação implementada ou, mesmo, a inicialização de softwares de segurança para testes de invasão e a remoção desses recursos quando essa etapa for finalizada.

Quais são as outras tecnologias disponíveis?

As outras tecnologias disponíveis na AWS são o SAM (Serverless Application Model) para desenvolvimento de aplicações serverless. O AWS CDK (Cloud Development Kit) permite a criação de infraestrutura a partir de linguagens de programação conhecidas e o Terraform, uma ferramenta open source de infraestrutura como código, para múltiplas nuvens. 

 

Esperamos que este texto tenha esclarecido as principais funcionalidades da nossa ferramenta CloudFormation, principalmente, no aspecto de AWS. Ficou interessado em nosso sistema em nuvem? Então, convidamos você a conhecer mais sobre os nossos serviços!

Conteúdos Relacionais