DEV Community

Eduardo Rosa
Eduardo Rosa

Posted on

Implantando e Interagindo com Serviços AWS

Planeta_terra_com_AWS_a_frente

Embarcar na jornada de construir soluções na plataforma Amazon Web Services (AWS) requer uma compreensão abrangente das ferramentas e abordagens disponíveis. Aqui tentarei demonstrar metodologias para arquitetar na AWS, começando com atividades preparatórias como coleta de requisitos, seleção de serviços e diagramação.

Exploraremos os diversos métodos e ferramentas disponíveis para implantar e interagir com os serviços AWS, incluindo o Console AWS, a Interface de Linha de Comando (CLI) da AWS, os Kits de Desenvolvimento de Software (SDKs) da AWS e a Infraestrutura como Código (IaC).

Abordaremos os seguintes tópicos:

  • Arquitetando na AWS
  • Começando com o Console AWS
  • Navegando pela CLI e SDK da AWS
  • Entendendo IaC

Ao final deste capítulo, você possuirá o conhecimento e as habilidades necessárias para criar, operar e monitorar serviços AWS usando a abordagem que melhor se alinha com seus requisitos e preferências, seja através do Console AWS, da CLI, acesso programático via SDKs ou das poderosas ferramentas de IaC.

Para acompanhar, você precisará de uma conta AWS.

Arquitetando na AWS

Arquitetar na AWS refere-se ao processo de projetar e planejar soluções baseadas em nuvem usando os serviços da AWS. Envolve entender os diversos serviços AWS, suas capacidades e como eles podem ser combinados para construir arquiteturas escaláveis, seguras e econômicas.

Ao arquitetar na AWS, os seguintes quatro aspectos devem ser considerados, cada um detalhado posteriormente neste capítulo:

  • Coleta de requisitos: Etapa crucial que envolve entender as necessidades de negócios, requisitos funcionais, não funcionais e restrições que moldarão o design e a implementação da arquitetura AWS.
  • Padrões de arquitetura: A AWS oferece vários padrões e arquiteturas de referência que servem como pontos de partida para casos de uso comuns, como aplicações web, pipelines de processamento de dados ou arquiteturas serverless.
  • Seleção de serviços: A AWS oferece uma ampla gama de serviços, incluindo computação, armazenamento, bancos de dados, rede, análise, machine learning e mais. Você deve avaliar cuidadosamente os requisitos das aplicações e selecionar os serviços AWS que melhor atendam a essas necessidades.
  • Diagramação: Criar representações visuais da arquitetura proposta é uma etapa crucial no processo de arquitetura. Ferramentas como PowerPoint ou draw.io podem ser usadas para criar diagramas de arquitetura, que ajudam a comunicar o design e facilitam a colaboração e implementação.

Coleta de Requisitos

Requisitos claros e bem definidos são essenciais para que os arquitetos projetem soluções AWS que atendam às necessidades específicas da organização e forneçam os resultados desejados. A coleta de requisitos pode envolver colaboração com stakeholders, workshops, análise de sistemas existentes e entendimento do contexto de negócios.

Para projetos de menor escopo, nem todas essas etapas podem se aplicar. No entanto, é importante entender que tipos de requisitos podem ser coletados antes de um projeto começar:

  • Requisitos de negócios: Entender os objetivos, metas e drivers por trás da solução sendo arquitetada.
  • Requisitos funcionais: Definir os recursos e capacidades específicas que a solução deve fornecer.
  • Requisitos não funcionais: Atributos qualitativos que a solução deve possuir, como desempenho, escalabilidade, disponibilidade, segurança e conformidade.
  • Requisitos técnicos: Tecnologias específicas, linguagens de programação, frameworks e ferramentas que precisam ser usadas ou integradas com a solução AWS.
  • Requisitos de dados: Tipos de dados, volumes, fontes, necessidades de processamento e requisitos de governança.
  • Requisitos de integração: Pontos de integração com sistemas locais, serviços de terceiros ou outros ambientes de nuvem.
  • Requisitos de segurança e conformidade: Padrões regulatórios, leis de proteção de dados ou certificações específicas do setor.
  • Requisitos financeiros: Restrições orçamentárias e considerações de custo, essenciais para selecionar serviços AWS e implementar arquiteturas econômicas.

Escolhendo um Padrão de Arquitetura

Padrões de arquitetura e arquiteturas de referência servem como pontos de partida para projetar e implementar soluções baseadas em nuvem. Esses padrões encapsulam melhores práticas, designs comprovados e princípios arquiteturais adaptados a casos de uso específicos.

Você pode encontrar muitos desses padrões no AWS Architecture Center. Ao alavancar esses padrões, você pode acelerar o processo de desenvolvimento e garantir que suas soluções estejam alinhadas com as melhores práticas da AWS e padrões do setor.

Selecionando um Serviço

Com mais de 200 serviços disponíveis, a AWS oferece uma vasta gama de blocos de construção que podem ser combinados para criar arquiteturas escaláveis, seguras e econômicas. A seleção de serviços é um processo iterativo que envolve equilibrar práticas arquiteturais recomendadas e todos os tipos de requisitos.

O primeiro passo é mapear os requisitos coletados para os serviços AWS disponíveis. Isso envolve entender as capacidades e casos de uso de cada serviço e identificar aqueles que podem atender aos requisitos específicos da solução.

Diagramação

Representações visuais da arquitetura proposta ajudam a comunicar o design, facilitam a colaboração entre membros da equipe e garantem um entendimento compartilhado dos componentes da solução e suas interações. Não há uma ferramenta padrão para diagramar soluções AWS, mas as mais aceitas são PowerPoint usando AWS Architecture Icons ou draw.io.

Explorando o Well-Architected Framework

A AWS fornece um conjunto de melhores práticas e princípios de design conhecidos como Well-Architected Framework (WAR), disponível em AWS Well-Architected. Este framework abrange seis pilares: excelência operacional, segurança, confiabilidade, eficiência de desempenho, otimização de custos e sustentabilidade.

Arquitetos de nuvem usam esse framework para garantir que suas soluções estejam alinhadas com as melhores práticas da AWS, geralmente após a construção, mas também pode ser usado durante a fase de design.

Começando com o Console AWS

O Console AWS é uma interface baseada na web fornecida pela AWS que permite acessar e gerenciar vários serviços e recursos AWS através de uma interface gráfica (GUI). Ele é projetado para ser amigável e acessível de qualquer navegador, permitindo que os usuários gerenciem seus recursos AWS de qualquer lugar com conexão à internet.

Usando o Console

Nesta seção, você implantará uma instância EC2, que é uma máquina virtual AWS. Para usar o Console, você deve ter uma conta AWS. O processo de criação de uma conta AWS está além do escopo deste livro, mas você pode encontrar todas as informações necessárias no site da AWS em AWS Free Tier.

  1. Acesse o Console AWS em https://console.aws.amazon.com/.
  2. Faça login com suas credenciais.
  3. Navegue até o serviço EC2 usando a barra de pesquisa.
  4. Para lançar a máquina virtual mais simples possível, sem personalização, selecione Launch instance.
  5. Selecione Proceed without a key pair (Not recommended) no menu Key pair name e, em seguida, selecione Launch instance.
  6. Navegue até suas instâncias em execução. Você verá uma instância EC2 em execução com um ID de instância e outros atributos.
  7. Você pode encerrar a instância selecionando Terminate (delete) instance.

Embora o Console AWS seja uma maneira conveniente de gerenciar recursos AWS, ele tem limitações quando se trata de automação e escalabilidade. A AWS fornece ferramentas de linha de comando e SDKs para acesso programático e automação de serviços AWS que abordam essas limitações.

Navegando pela CLI e SDK da AWS

A CLI e os SDKs da AWS são ferramentas programáticas para acessar e gerenciar serviços AWS. Nesta seção, você explorará cada uma delas e as executará em seu próprio ambiente.

AWS CLI

A AWS CLI é uma ferramenta unificada da AWS que permite interagir e gerenciar serviços AWS a partir de uma linha de comando, como terminal macOS ou Prompt de Comando do Windows. Ela fornece uma maneira conveniente e scriptável de automatizar e controlar vários recursos e operações AWS.

A AWS CLI requer um processo de instalação, que varia de acordo com o sistema operacional, mas está bem documentado pela AWS em AWS CLI Installation.

Usando a AWS CLI

Nesta seção, você criará uma instância EC2 usando a AWS CLI. A autenticação funciona de maneira diferente do Console AWS. A AWS CLI suporta vários métodos de autenticação, incluindo chaves de acesso AWS, funções IAM e provedores de credenciais externos.

Para criar uma instância EC2 usando a AWS CLI, siga estas etapas:

  1. Configure suas credenciais AWS no terminal:
   export AWS_ACCESS_KEY_ID=XXXXXXXXXX
   export AWS_SECRET_ACCESS_KEY=xxxxxxxxxx
   export AWS_DEFAULT_REGION=us-east-1
Enter fullscreen mode Exit fullscreen mode
  1. Execute o seguinte comando para criar uma instância EC2:
   aws ec2 run-instances --image-id ami-0c1e1f26f147fa7fd --instance-type t2.micro
Enter fullscreen mode Exit fullscreen mode
  1. Verifique as instâncias em execução:
   aws ec2 describe-instances
Enter fullscreen mode Exit fullscreen mode
  1. Encerre a instância:
   aws ec2 terminate-instances --instance-ids i-0a65cf3ecaec728a8
Enter fullscreen mode Exit fullscreen mode

AWS SDK

Os SDKs da AWS são uma coleção de bibliotecas de código aberto que fornecem acesso programático a serviços AWS a partir de várias linguagens de programação, incluindo Java, Python, Node.js, .NET, Ruby, Go, PHP e outras. Esses SDKs permitem que os desenvolvedores criem aplicativos que interajam com recursos AWS diretamente, sem a necessidade de APIs de baixo nível.

Os SDKs abstraem as complexidades de fazer solicitações HTTP/HTTPS autenticadas para serviços AWS, lidando com repetições e tratamento de erros, e analisando as respostas dos serviços AWS. Eles fornecem uma interface de nível mais alto, específica da linguagem, que facilita a integração de serviços AWS em aplicativos.

Entendendo IaC

IaC é uma abordagem para provisionar e gerenciar recursos, como infraestrutura de nuvem. Permite definir e implantar seus recursos usando arquivos de definição ou código legíveis por humanos.

Em vez de configurar recursos manualmente através do Console AWS ou ferramentas de CLI, o IaC permite uma especificação declarativa do estado desejado da infraestrutura. No nosso contexto, isso significa a nuvem AWS, incluindo instâncias de computação, armazenamento, rede, grupos de segurança e outros serviços AWS.

Benefícios do IaC

  • Consistência de configuração: Promove o conceito de infraestrutura imutável, onde os componentes são tratados como descartáveis e substituíveis, em vez de serem modificados manualmente.
  • Controle de versão e colaboração: Os modelos e códigos de IaC podem ser armazenados em sistemas de controle de versão, como Git, permitindo colaboração, revisões de código e rastreamento de alterações.
  • Implantações automatizadas: Os modelos de IaC podem ser integrados a pipelines de CI/CD, permitindo implantações e atualizações automatizadas.
  • Teste e validação de infraestrutura: Os modelos de IaC podem ser testados e validados antes da implantação, garantindo que a infraestrutura definida atenda às especificações desejadas.
  • Otimização de custos e gerenciamento de recursos: Ao tratar a infraestrutura como código, as organizações podem rastrear e gerenciar melhor seus recursos AWS, permitindo melhores estratégias de otimização de custos.

Ferramentas de IaC

Existem várias ferramentas de IaC. A AWS fornece suas próprias ferramentas nativas, como AWS CloudFormation, que permite definir recursos de infraestrutura usando modelos JSON ou YAML. Também fornece o AWS Cloud Development Kit (CDK), que oferece uma abstração de nível mais alto sobre o CloudFormation, permitindo definir construções AWS usando linguagens de programação familiares, como TypeScript, Python, Java e C#.

Além das ferramentas nativas da AWS, existem soluções de IaC de terceiros, como o Terraform. O Terraform é agnóstico em relação à nuvem, suportando uma ampla gama de provedores de nuvem, incluindo a AWS, e fornece um fluxo de trabalho consistente para gerenciar infraestrutura em várias plataformas.

Usando o CloudFormation

Nesta seção, você criará uma instância EC2 usando o CloudFormation. Este é um exemplo introdutório; ele não se aprofundará em todos os recursos e sintaxes do CloudFormation.

  1. Crie um arquivo chamado ec2.yml em seu ambiente local com o seguinte conteúdo:
   Resources:
     NewEC2Instance:
       Type: AWS::EC2::Instance
       Properties:
         ImageId: "ami-0c1e1f26f147fa7fd"
         InstanceType: "t2.micro"
Enter fullscreen mode Exit fullscreen mode
  1. Navegue até o CloudFormation usando o Console AWS em https://us-east-1.console.aws.amazon.com/cloudformation e selecione Create stack.
  2. Selecione Upload a template file e escolha o arquivo ec2.yml criado anteriormente.
  3. Dê um nome à stack.
  4. Pule todas as opções e implante a stack.

Ao final do processo de implantação, o status da sua stack deve mostrar CREATE_COMPLETE. Você pode verificar a instância EC2 criada navegando até o serviço EC2.

Para excluir a instância, selecione sua stack e clique em Delete.

Usando o Terraform

Agora, você criará outra instância EC2, desta vez usando o Terraform. Esta seção assume que você já configurou seu terminal com suas credenciais AWS, conforme feito na seção anterior da AWS CLI.

  1. Crie um arquivo chamado ec2.tf em qualquer diretório local e popule-o com o seguinte código:
   provider "aws" {
     region = "us-east-1"
   }
   resource "aws_instance" "ec2" {
     ami           = "ami-0c1e1f26f147fa7fd"
     instance_type = "t2.micro"
   }
Enter fullscreen mode Exit fullscreen mode
  1. Execute os seguintes comandos no mesmo diretório onde você criou o arquivo ec2.tf:
   terraform init
   terraform apply
Enter fullscreen mode Exit fullscreen mode
  1. Você será solicitado a confirmar. Se a execução for bem-sucedida, você verá uma saída semelhante à seguinte:
   Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
   + create
   Terraform will perform the following actions:
   # aws_instance.ec2 will be created
   + resource "aws_instance" "ec2" {
       + ami           = "ami-0c1e1f26f147fa7fd"
       + instance_type = "t2.micro"
       ...
   }
   Plan: 1 to add, 0 to change, 0 to destroy.
   Do you want to perform these actions?
     Terraform will perform the actions described above.
     Only 'yes' will be accepted to approve.
     Enter a value: yes
   aws_instance.ec2: Creating...
   aws_instance.ec2: Still creating... [10s elapsed]
   aws_instance.ec2: Still creating... [20s elapsed]
   aws_instance.ec2: Creation complete after 34s [id=i-00e732fda772c16cf]
   Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Enter fullscreen mode Exit fullscreen mode
  1. Para excluir todos os recursos, execute o seguinte comando Terraform:
   terraform destroy
Enter fullscreen mode Exit fullscreen mode

O Terraform oferece muitos mais recursos, como execuções de teste usando terraform plan ou visualizações dos recursos implantados através de terraform state list. Você pode ler mais sobre isso na documentação oficial do Terraform em Terraform CLI Commands.

Resumo

Arquitetar na AWS não se trata apenas de implantar serviços AWS, mas também de coletar diferentes tipos de requisitos, contrastá-los com padrões e arquiteturas de referência conhecidos, escolher diferentes serviços e documentar tudo.

Explorar os diversos métodos e ferramentas disponíveis para implantar e interagir com serviços AWS após ter seu design. O Console AWS fornece uma interface gráfica amigável, enquanto a CLI e os SDKs da AWS permitem acesso programático e automação. Além disso, você foi exposto a várias técnicas de IaC, como Terraform, CloudFormation e AWS CDK, que permitem definir e gerenciar sua infraestrutura AWS usando código.

Ao entender essas diferentes abordagens, você pode escolher o método mais apropriado com base em seus requisitos e nível de habilidade, bem como na complexidade de suas implantações AWS. Seja preferindo uma interface visual, ferramentas de linha de comando, acesso programático ou IaC, a AWS oferece uma variedade de opções para atender às suas necessidades e simplificar suas operações de nuvem.

Top comments (0)