Você está na página 1de 11

11/01/2024, 14:08 Descomplica | Pós-graduação Em Engenharia De Software

Infraestrutura AWS

I ntrodução

Estudante, vamos conhecer os principais recursos de infraestrutura


da AWS que permitem o provisionamento automático da nuvem, o
que denominamos IaC, com o sistema CloudFormation. Neste sistema, é
possível criar modelos de infraestrutura em forma de texto ou código para
que todos os elementos e serviços necessários sejam instantaneamente
programados.

Existe grande valor no uso da codificação de infraestrutura no IaC e, com


o apoio da solução oferecida pela AWS, é possível criar e gerenciar
arquivos modelo de IaC que podem ser atualizados, sempre contando
com a sua versão controlada ou armazenada.

Objetivos da aula

• Conhecer as diversas formas de provisionamento de recursos na AWS;

• Compreender o objetivo da plataforma Cloud Formation;

• Conhecer as principais aplicações do Cloud Formation;

• Compreender a forma de integração de recursos do EC2 com Pipelines


em plataformas como o GIT.

https://aulas.descomplica.com.br/pos/pos-graduacao-em-engenharia-de-software/turma/hero-cloud-developer-821b2c/aula/inf… 1/11
11/01/2024, 14:08 Descomplica | Pós-graduação Em Engenharia De Software

Resumo

As empresas que buscam serem vistas com bons olhos pelos


investidores, pelo governo e pela sociedade têm a necessidade de
ingressar nos processos de Governança Corporativa, e uma boa forma de
se entender seu significado está na avaliação do significado de seus
pilares: a Transparência, o Tratamento Justo, a boa Prestação de Contas
e o senso de Responsabilidade. Neste sentido a AWS também é capaz
de apoiar seus clientes corporativos, pois oferece agilidade e ao mesmo
tempo um maior controle dos processos que interferem na Governança.

Neste sentido, a AWS (2022), fornece soluções de provisionamento e


orquestração para que seus usuários possam provisionar seus recursos
de forma consistente e repetida para dimensionar seus negócios de
maneira sustentável. Assim, desenvolvedores e empresas podem usar a
Infraestrutura como Código (IaC) para criar uma infraestrutura escalável e
repetível na AWS ou on premises, permitindo que os fabricantes
provisionem e façam autoatendimento de recursos e obtenham
conformidade, sem sacrificar a velocidade ou a segurança.

Formas de provisionamento de recursos na AWS

Dentro da nuvem e pela governança, a AWS oferece o provisionamento


com consistência dentro de uma infraestrutura otimizada, escalável e
repetível tornando o processo mais complexo à medida que sua empresa
cresce. Um dos recursos que mais contribui neste quesito é o AWS
CloudFormation, pois facilita a modelagem de seus recursos de
infraestrutura usando código (IaC) em conformidade com a configuração e
solução rápida de problemas.

https://aulas.descomplica.com.br/pos/pos-graduacao-em-engenharia-de-software/turma/hero-cloud-developer-821b2c/aula/inf… 2/11
11/01/2024, 14:08 Descomplica | Pós-graduação Em Engenharia De Software

O AWS CloudFormation é um serviço que fornece uma linguagem


comum para descrever e provisionar todos os recursos de infraestrutura
em seu ambiente de nuvem. Este recurso permite que o desenvolvedor
modele e provisione de forma automática e segura todos os recursos que
seu aplicativo requer em regiões e contas usando arquivos de texto
simples.

Assim que tudo é modelado, esse arquivo de texto serve como a única
fonte de verdade para seu ambiente de nuvem, como um template. Desta
forma, o usuário também pode criar um conjunto aprovado de arquivos do
CloudFormation no AWS Service Catalog para garantir que sua
organização possa implantar apenas recursos aprovados e com suporte.

Para continuar inovando, os desenvolvedores precisam ser capazes de


criar coleções de ativos de forma iterativa sem se preocupar com a
conformidade com os padrões corporativos ou custos adicionais de
cobrança.

Usando o AWS Service Catalog, a equipe de desenvolvimento pode criar


catálogos personalizados de serviços da AWS e produtos de software de
terceiros no AWS Marketplace. Isso permite que os autores encontrem
facilmente recursos de TI para inovar rapidamente e avançar com
implantações de autoatendimento. Assim, conforme apresenta AWS
(2022),

“Ao escrever scripts de forma manual, reduzir inconsistências


permite que os seus desenvolvedores possam avançar de
forma rápida ao mesmo tempo que mantêm a conformidade,
o que reduz o risco de impactos negativos gerados por
malfeitores. Usando o AWS CloudFormation e o AWS Service
Catalog para manter a conformidade com as políticas das
suas organizações ao compartilhar modelos de
provisionamento e custos de controle sem sacrificar a
https://aulas.descomplica.com.br/pos/pos-graduacao-em-engenharia-de-software/turma/hero-cloud-developer-821b2c/aula/inf… 3/11
11/01/2024, 14:08 Descomplica | Pós-graduação Em Engenharia De Software

segurança, a conformidade e a conveniência do


provisionamento de autoatendimento.” (AWS 2022, Online).

Neste processo de migração para a nuvem, as empresas tiveram que


escolher entre acelerar a inovação e manter o controle sobre custos,
conformidade e segurança. Com os serviços de gerenciamento e
governança da AWS, estas empresas passaram a não precisar mais
escolher entre inovação e controle, pois elas podem ter na AWS recursos
para habilitar, implantar e operar seu ambiente para agilidade nos
negócios e controle de governança.

Cloud Formation Básico

O AWS CloudFormation é um serviço AWS que auxilia a empresa a


modelar e configurar seus recursos da AWS. Isso permite que um menor
consumo de tempo gerenciando esses recursos e mais tempo livre para
que a equipe de desenvolvimento acelere a criação de seus aplicativos
em execução na AWS,

“Você cria um modelo que descreve todos os recursos da


AWS que você deseja (como funções do Amazon EC2 e
tabelas do Amazon RDS) e o CloudFormation cuida do
provisionamento e da configuração desses recursos para
você. Não é necessário criar e configurar individualmente os
recursos da AWS e descobrir o que depende do quê: o
CloudFormation lida com isso. Os cenários a seguir
demonstram como o CloudFormation pode ajudar.” (AWS
2017, p.01).

A definição oficial de CloudFormation, oferecida por Edilton (2017, online),


nos indica que o AWS CloudFormation é um serviço que oferece

https://aulas.descomplica.com.br/pos/pos-graduacao-em-engenharia-de-software/turma/hero-cloud-developer-821b2c/aula/inf… 4/11
11/01/2024, 14:08 Descomplica | Pós-graduação Em Engenharia De Software

“[...] aos desenvolvedores e administradores de sistemas uma


maneira fácil de criar e gerenciar um grupo de recursos
relacionados à AWS, e fornecê-los e atualizá-los de uma forma
organizada e previsível.”

Já em uma definição não-oficial, temos que o serviço é uma forma de


Infrastructure-as-a-code, o IaC ou ainda a Infraestrutura como Código,
onde o CloudFormation entra como um serviço da AWS que permite criar
um modelo (via arquivo JSON ou AWS CloudFormation Designer) com
todos os recursos da AWS necessários ao desenvolvimento e
implementação de aplicações. Assim, o CloudFormation é capaz de lidar
com dependências, relacionamentos, ordens e abortar toda a criação se a
criação ou o provisionamento de recursos falhar.

Neste sentido, o usuário desenvolvedor não precisa conhecer os detalhes


da ordem ou das dependências de implantação do seu serviço na AWS,
pois o CloudFormation faz isso por ele. Depois que os recursos da AWS
são provisionados, é feita a aplicação do controle de versão à
infraestrutura, permitindo a modificação e atualização dos recursos de
maneira controlada e previsível, assim como aplica o controle de versão
ao software.

Devemos sempre lembrar que há também uma maneira segura de


desprovisionar, pois se precisar remover ou desprovisionar todos os
recursos associados a essa formação de nuvem, o usuário pode fazer.
Sobre custos, não há taxas de uso, apenas o custo dos recursos
fornecidos que forem integrados no IaC desenvolvido.

Figura 1: Vantagens e desvantagens do IaC no CloudFormation

https://aulas.descomplica.com.br/pos/pos-graduacao-em-engenharia-de-software/turma/hero-cloud-developer-821b2c/aula/inf… 5/11
11/01/2024, 14:08 Descomplica | Pós-graduação Em Engenharia De Software

Fonte: Adaptado de Edilton (2017, Online).

Uma das dificuldades ao aprender o CloudFormation é que toda a


documentação vem em enormes arquivos JSON contendo pilhas
totalmente configuradas. Embora essa abordagem possa ser interessante
em alguns casos, uma abordagem dividida é recomendada para o
aprendizado. Use vários arquivos em vez de um arquivo contendo todos
os recursos.

Aplicação do CloudFormation

A ideia do IaC pelo CloudFormation é a integrar ferramentas diversas de


forma a permitir a oferta da infraestrutura codificada onde, em casos de
aplicativos web escaláveis ​que também incluem um banco de dados de
back-end, esta proposta de IaC pode usar grupos de Auto Scaling, load
balancers do Elastic Load Balancing e instâncias de banco de dados do
Amazon Relational Database Service.

Claro que os diversos serviços podem ser usados ​para fornecer esses
recursos, de forma individual. Depois de criar os recursos e programar o
IaC, é preciso configurá-los para funcionarem juntos. Todas essas tarefas

https://aulas.descomplica.com.br/pos/pos-graduacao-em-engenharia-de-software/turma/hero-cloud-developer-821b2c/aula/inf… 6/11
11/01/2024, 14:08 Descomplica | Pós-graduação Em Engenharia De Software

AWS podem adicionar complexidade e tempo antes que seu aplicativo


esteja em funcionamento, embora isso seja compensado no desenrolar
do projeto, pois, desta forma,

[...] é possível criar ou modificar um modelo de


CloudFormation existente. Um modelo descreve todos os
seus recursos e suas propriedades. Ao usar esse modelo para
criar uma pilha do CloudFormation, o CloudFormation
provisionará o grupo do Auto Scaling, o balanceador de carga
e o banco de dados para você. Depois que a pilha tiver sido
criada com êxito, seus recursos da AWS estão em
funcionamento. É possível excluir a pilha com facilidade, o que
exclui todos os recursos na pilha. Ao usar o CloudFormation,
você gerencia facilmente um conjunto de recursos como uma
unidade. (AWS 2017, p.01).

Com o uso do CloudFormation é possível replicar a infraestrutura na


nuvem de forma rápida, principalmente, se o aplicativo requer alta
disponibilidade, pois é possível replicar tais recursos em várias regiões.
Portanto, se uma região ficar indisponível, os usuários de outras regiões
ainda poderão usar seu aplicativo.

Embora a nuvem tenha ampla oferta de recursos, ainda sim temos o


grande desafio da replicação de aplicativos que demanda, ao mesmo
tempo, a replicação de seus recursos replicados. Desta forma, o
desenvolvedor deve registrar todos os recursos que seu aplicativo requer,
além de provisionar e configurar esses recursos em cada região.

A vantagem é que o uso do IaC permite que os modelos do


CloudFormation sejam reutilizados, na criação de recursos de forma
consistente e repetida. Para reutilizar um modelo, basta que o
desenvolvedor grave o recurso uma vez e implante o mesmo recurso

https://aulas.descomplica.com.br/pos/pos-graduacao-em-engenharia-de-software/turma/hero-cloud-developer-821b2c/aula/inf… 7/11
11/01/2024, 14:08 Descomplica | Pós-graduação Em Engenharia De Software

várias vezes em várias regiões. Em alguns casos, este desenvolvedor


pode promover atualizações gradativas em seus recursos subjacentes.

Um exemplo desta situação ocorre quando o desenvolvedor alterna para


um tipo de instância mais poderoso em sua configuração de inicialização
do Auto Scaling para reduzir o número máximo de instâncias em seu
grupo de Autoscaling, onde podem ocorrer problemas,

“Se ocorrerem problemas após a conclusão da atualização,


pode ser necessário reverter sua infraestrutura para as
configurações originais. Para fazer isso manualmente, além da
necessidade de lembrar quais recursos foram alterados,
também é necessário saber quais eram as configurações
originais.” (AWS 2017, p.01).

Com o uso do CloudFormation para provisionar a infraestrutura, o modelo


CloudFormation descreve exatamente quais são os recursos que serão
provisionados e suas configurações. Como esses modelos são arquivos
de texto, as diferenças nos modelos podem ser facilmente rastreadas para
rastrear alterações de infraestrutura da mesma forma que os
desenvolvedores rastreiam as revisões do código-fonte.

Neste sentido, e de acordo com a AWS (2017), temos que ao usar um


sistema de controle de versão para seu modelo, é possível saber
exatamente quais alterações foram feitas, por quem e quando. Se precisar
desfazer alterações em sua infraestrutura, use a versão anterior do
modelo.

Aplicação do EC2 Usando Pipeline do GIT

https://aulas.descomplica.com.br/pos/pos-graduacao-em-engenharia-de-software/turma/hero-cloud-developer-821b2c/aula/inf… 8/11
11/01/2024, 14:08 Descomplica | Pós-graduação Em Engenharia De Software

Antes de adentrar nos conceitos do AWS CodePipeline, devemos


compreender que um pipeline pode ser conceituado como uma série de
elementos de processamento (processos, threads, funções) organizados
de forma que a saída de cada elemento se torne a entrada do próximo
elemento, desta forma, o sistema que se encarrega dos processos de
pipeline na AWS, o CodePipeline,

[...] é um serviço de entrega contínua que pode ser usado para


modelar, visualizar e automatizar as etapas necessárias para
lançar seu software. É possível modelar e configurar
rapidamente os diferentes estágios de um processo de
lançamento de software. CodePipeline automatiza as etapas
necessárias para lançar suas alterações de software de
maneira contínua. (AWS 2017a, p.01).

Vale reforçar que um pipeline é uma construção de fluxo de trabalho que


descreve como as alterações de software progridem durante o processo
de implementação e onde cada pipeline consiste em uma série de
estágios.

Uma das fases do pipeline é uma unidade lógica que pode ser usada para
separar ambientes e limitar o número de alterações simultâneas do
ambiente. Cada estágio contém ações que são executadas nos artefatos
de seu aplicativo. O código-fonte é um artefato de amostra, e desta forma,
uma fase pode ser uma fase de compilação que compila o código-fonte e
executa os testes.

Uma das fases também pode ser a implantação do código implantado em


um ambiente de tempo de execução, o que reforça o conceito de que
cada fase consiste em uma série de ações seriais ou paralelas. Uma
ação, dentro dos pipelines, é um conjunto de operações executadas no
código do aplicativo e configuradas para executar uma ação em um ponto
específico.
https://aulas.descomplica.com.br/pos/pos-graduacao-em-engenharia-de-software/turma/hero-cloud-developer-821b2c/aula/inf… 9/11
11/01/2024, 14:08 Descomplica | Pós-graduação Em Engenharia De Software

Desta forma, as ações podem incluir ações para alterações no código-


fonte, implantação de aplicativos em instâncias, etc. Portanto, nesta fase,
o passo seguinte deve ser realizar a ação de implantar o código em um
serviço de computação, como Amazon EC2 ou AWS Lambda. Dentro do
AWS CodePipeline, temos os seguintes tipos de ações válidas: Source,
Build, Test, Deploy, Approve e Invoke.

Conteúdo bônus

Tópicos avançados

Sustentabilidade via AWS

Que tal uma iniciativa que une aproximadamente 100 cidades de grande
porte e relevância econômica, espalhadas pelo mundo, em um sistema
que apoia o processo de controle climático e ações de recuperação da
biosfera?

O projeto tem o nome de C40 Cities Climate Leadership Group (C40), e


impacta diretamente a qualidade de vida de mais de 700 milhões de
pessoas e tem na infraestrutura da AWS o seu Knowledge Hub que usa o
EC2 em conjunto com o Qlik Sense facilitando a exibição de dados no
processo de tomada de decisão de suas ações ambientais.

Ficou intrigado(a)? Acesse o artigo na íntegra e se divirta:


<https://aws.amazon.com/pt/blogs/aws-brasil/usar-a-nuvem-para-criar-um-
futuro-mais-saudavel-e-sustentavel-uma-cidade-por-vez/>

Proteja o meio ambiente!

Observação: Este conteúdo não será cobrado nas avaliações e estará,


obrigatoriamente, presente nas videoaulas. Fique tranquilo(a)!
https://aulas.descomplica.com.br/pos/pos-graduacao-em-engenharia-de-software/turma/hero-cloud-developer-821b2c/aula/i… 10/11
11/01/2024, 14:08 Descomplica | Pós-graduação Em Engenharia De Software

Caro estudante, você consegue acessar os códigos utilizados na


disciplina no link a seguir:

https://github.com/FaculdadeDescomplica/Hero-Cloud-Developer

Referência Bibliográfica

AWS. O que é o AWS CloudFormation? 2017. DispoAWS. AWS


CodePipeline. 2017a. Disponível em:
<https://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/codepipeline
user.pdf#welcome>. Acesso em 17/02/2023

AWS. Ferramentas de gerenciamento AWS. 2022a. Disponível em:


<https://aws.amazon.com/pt/products/management-tools/>. Acesso em
17/02/2023

AWS. O que é o AWS CloudFormation? 2017. Disponível em:


<https://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/We
Acesso em 17/02/2023

AWS. Provisionamento e orquestração. 2022. Disponível em:


<https://aws.amazon.com/pt/products/management-and-governance/use-
cases/provisioning-and-orchestration/>. Acesso em 17/02/2023

EDILTON. Francisco. AWS CloudFormation: Uma outra abordagem.


2017. Disponível em: <https://medium.com/@franciscoed/aws-

https://aulas.descomplica.com.br/pos/pos-graduacao-em-engenharia-de-software/turma/hero-cloud-developer-821b2c/aula/i… 11/11

Você também pode gostar