Vinícius Campitelli
Israel Nogueira
Conte-nos mais sobre vocês!
| S | T | Q | Q | S |
|---|---|---|---|---|
|
Ago 15
Hello, World Cloud Computing (intro)Apresentação do curso e introdução |
16
Cloud Computing (cont.)
Conceitos, história e modelos Amazon Web Services & EC2Conceitos, console de gerenciamento e instâncias |
17 |
18
AWS IAM
Configuração de usuários, policies e roles no IAM |
19 |
|
22
AWS EC2
Prática: configuração de uma aplicação Web |
23
AWS EC2 (cont.)
Continuação da prática Load Balancing (intro.)Conceitos de alta disponibilidade e distribuição de cargas |
24 |
25
Load Balancing (cont.)
Alta disponibilidade e distribuição de cargas AWS Route 53Registro de domínios, roteamento de DNS e checagem de integridade |
26 |
|
23
AWS Route 53 (cont.)
Registro de domínios, roteamento de DNS e checagem de integridade AWS CloudFrontDistribuição de conteúdo estático através da CDN |
30
Well-Architected Framework
Melhores práticas de arquitetura na cloud Uso do Draw.ioDesenho de arquiteturas para planejamento e documentação |
31 |
Set 1
Avaliação por rubrica Habilidades e competências técnicas do módulo |
2 |
O que você sabe sobre Cloud Computing (computação em nuvem)?
Modelo onde toda a infraestrutura de servidores é mantido pela empresa, podendo ser tanto fisicamente em um datacenter próprio ou através de outros provedores de hospedagem
Década de 60
Contexto: os computadores ("mainframes") são utilizados apenas por empresas, universidades ou governos, pois são extremamente grandes e caros
1961
John McCarthy, criador da linguagem LISP e um dos pioneiros em Inteligência Artificial, propõe o conceito de "computação utilitária", em que empresas pudessem alugar parte do tempo do uso de seus computadores [referência]
1997
Ramnath Chellappa, professor da Universidade de Emory em Atlanta, nos Estados
Unidos, usa o termo "cloud computing" em um seminário para explicar um
paradigma onde os limites computacionais seriam determinados por questões
econômicas e não somente por restrições técnicas
[referência]
Julho de 2002
A Amazon lança uma plataforma para auxiliar terceiros no desenvolvimento de suas aplicações (principalmente lojas virtuais), diminuindo o tempo gasto para preparem a infraestrutura, chamada Amazon Web Services [referência] [Timeline of Amazon Web Services]
... é um modelo para possibilitar acesso ubíquo, conveniente e sob demanda via rede a um conjunto de recursos computacionais configuráveis (como servidores, aplicações e armazenamento) que podem ser rapidamente provisionados e disponibilizados com o mínimo de esforço de gerenciamento ou interação com o provedor[Proposta SP 800-145]
* Instituto Nacional de Padrões e Tecnologia dos Estados Unidos
Características essenciais:
Cliente deve provisionar serviços unilateralmente sem interação humana com o provedor
Serviços devem ser disponibilizados e acessados via mecanismos padrões de rede
Devem servir múltiplos clientes, sendo atribuídos e reatribuídos de forma dinâmica
Recursos devem ser escaláveis para suportar a demanda
Deve ser possível medir e monitorar o uso de cada serviço
* Instituto Nacional de Padrões e Tecnologia dos Estados Unidos
Disponibilização de recursos computacionais (como servidores ou armazenamento) via Internet que permite alta escalabilidade e provisionamento dinâmico de recursos com modelo de pagamento pay-as-you-go, onde o cliente só é cobrado pelo que foi exatamente utilizado (como tempo de processamento, espaço armazenado ou banda trafegada)
Veja mais provedores no artigo do Gartner:
"Quadrante Mágico para infraestrutura em nuvem e serviços de plataforma"
Disponibilização de um servidor e seus recursos de hardware para que o cliente possa utilizar a infraestrutura da maneira que desejar
Exemplos: AWS EC2, Azure VM, Google Compute Engine, Digital Ocean
O provedor cuida do servidor, do Sistema Operacional e das ferramentas necessárias para que o cliente possa executar sua aplicação
Exemplos: AWS Beanstalk, Google App Engine, Heroku, Netlify
Sistemas em que o usuário utiliza o software pela Internet, sem precisar baixá-lo e instalá-lo em seu computador ou rede
Exemplos: Wordpress.com, Wix, Canva

Serviços de Banco de Dados altamente robustos e escaláveis
Exemplos: AWS RDS, MongoDB Atlas, IBM Db2 on Cloud, Oracle Cloud Infrastructure
Execução de códigos sob demanda em um ambiente serverless, onde toda a infraestrutura é gerenciada pelo provedor
Exemplos: AWS Lambda, Azure Functions, Google Cloud Functions, OpenFaaS
Gereciamento de arquivos que provém alta disponibilidade e performance
Exemplos: AWS S3, Azure Storage, Google Cloud Storage, Dropbox, Google Drive, OneDrive
Cliente: responsável pela
Segurança na nuvem
Provedor: responsável pela
Segurança da nuvem
[aws.amazon.com]
Capacidade de um serviço em se manter operando com a mesma performance mesmo com falhas
Parâmetros em que um sistema se comporta
Tempo em que uma solicitação leva para chegar ao destino
O principal provedor de cloud segundo o Gartner nos últimos 10 anos, com mais de 200 serviços disponíveis
[aws.amazon.com]Local físico onde um grupo de datacenters está localizado
Exemplos: São Paulo (sa-east-1), Virgínia do Norte (us-east-1) e Califórnia (us-west-1)
Cada grupo de datacenters em uma região com alta conectividade entre si, úteis para prover alta disponibilidade dentro de uma região
Exemplos: sa-east-1a, sa-east-1b, sa-east-1c
Locais alternativos mais próximos a grandes cidades para diminuir a latência
Exemplos: Rio de Janeiro, Buenos Aires, Santiago
26 regiões
84 zonas de disponibilidade
245 países e territórios atendidos
[aws.amazon.com]
Cada aluno irá criar uma conta na AWS através do modelo Free Tier e se cadastrar no programa Activate da Let's Code by Ada
Disponibilização gratuita de diversos serviços (com algumas limitações)
[aws.amazon.com/free]Programa para startups e empresas que queiram utilizar serviços para testes e treinamentos
[console.aws.amazon.com/activate]Ferramenta utilizada para prever gastos através da escolha de serviços
[calculator.aws]Painel administrativo para gerenciar todos os serviços de sua conta da AWS
[console.aws.amazon.com]Utilitário de linha de comando para interagir com os serviços da AWS
[aws.amazon.com/cli]Bibliotecas em mais de 10 linguagens para interagir com os serviços da AWS
[aws.amazon.com/developer/tools]O AWS Identity and Access Management é um serviço responsável pela gestão de identidades e acesso aos serviços de contas da AWS
[docs.aws.amazon.com]Entidade que representa uma pessoa ou aplicação que irá interagir com a AWS, que possui suas próprias credenciais (access keys) e deve receber as permissões necessárias para liberar acesso aos recursos da AWS
Par de chaves (access key ID e secret access key) que garante acesso a um usuário
Conjunto utilizado para facilitar o gerenciamento em lote, podendo receber permissões que serão aplicadas a todos os usuários daquele grupo
Identidade que também pode receber permissões e que permite que usuários a incorpore para receber o acesso desejado
Conjunto de permissões permitindo ou negando o acesso à elas, que podem ser aplicadas a usuários, grupos de usuários ou funções
Existem três tipos de políticas:
Criadas e mantidas pela Amazon para facilitar acesso a casos de uso comuns, como
IAMFullAccess e AmazonEC2ReadOnlyAccess
Criadas pelo usuário para customizar os acessos desejado, recebendo um nome próprio e que podem ser reaproveitadas em outras entidades
Políticas inviduais que não possuem um nome e são adicionadas diretamente a um usuário, grupo ou função
Campo para definir a versão da sintaxe do documento, sendo a mais atual
2012-10-17
Identificador opcional para a política
Conjunto de instruções para permitir ou negar permissões que possui os elementos:
Identificador opcional para a instrução
Define a ação de permitir (Allow) ou negar (Deny) as
permissões daquela instrução
Conta, usuário ou função que está invocando a permissão
Conjunto de permissões
Objetos em que as ações serão aplicadas
Regras especiais para se aplicar as ações
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::NOME-DO-BUCKET",
"arn:aws:s3:::NOME-DO-BUCKET/*"
]
}
]
}
[docs.aws.amazon.com]
Os Nomes de Recurso da Amazon (Amazon Resource Names) são identificadores para recursos da AWS e segue o seguinte formato:
arn:partition:service:region:account-id:resource-id
arn:partition:service:region:account-id:resource-type/resource-id
arn:partition:service:region:account-id:resource-type:resource-id
Alguns exemplos:
arn:aws:s3:::NOME-DO-BUCKET
arn:aws:iam::123456789012:user/NOME-USUARIO
arn:aws:ec2:us-east-1:123456789012:instance/i-012abcd34efghi56
[docs.aws.amazon.com]
Suba novamente a instância criada na semana passada e...
Crie uma aplicação Web bem simples (um "Hello World" é o suficiente) em uma das linguagens que possuem um SDK da AWS
Você pode...rsync,
scp ou
WinSCP
vim ou
nano
Continua no próximo slide...
node /caminho/index.js) quando ela iniciar. Existem diversas maneiras
para fazer isso, como:
Para editar o crontab, execute:
$ sudo crontab -e
Esse comando irá abrir o editor de texto configurado do servidor
(no Amazon Linux 2, é o vim). Então, aperte a tecla i
(ou o Insert) do seu teclado para entrar no modo de
inserção e escreva a linha abaixo:
@reboot <comando para iniciar sua aplicação>
Por exemplo:
@reboot node /caminho/para/minha/aplicacao/index.js
Então, aperte o ESC para sair do modo de inserção, digite :x e dê um ENTER para salvar e fechar o arquivo. Uma mensagem como a seguinte deve aparecer:
no crontab for root - using an empty one
crontab: installing new crontab
Para testar, reinicie o servidor:
$ sudo reboot
[Como usar o nano]
[Como usar o vim]
[Entendendo o Crontab]
[Crontab Generator]
Já instalado por padrão com os binários python e python3:
$ python --version
Python 2.7.18
$ python3 --version
Python 3.7.10
$ wget https://gist.github.com/vcampitelli/488f74dc7eee2b2d7ee7897e2e020384/raw/12aa3b286e1d49c5390022b10714b212ad659ae2/install-node.sh
$ sudo bash install-node.sh
$ sudo amazon-linux-extras install ruby3.0 # ou ruby2.6
$ sudo yum install -y ruby-devel make gcc gcc-c++
$ sudo gem install bundler rails --no-document
Não se esqueça de desligar os servidores após o exercício!
O balanceador de carga é uma ferramenta para fazer a distribuição do tráfego de rede entre destinos diferentes para permitir a escalabilidade da aplicação
Cada vez que uma máquina é criada, ela deve avisar o Load Balancer para que ele atualize seu cadastro interno
Periodicamente, o Load Balancer faz checagens nos servidores cadastrados para verificar se eles estão respondendo, removendo-os se não responderem
A AWS oferece três serviços de balanceamento de carga:
| Serviço | Camada | Exemplos de destinos |
|---|---|---|
| Application Load Balancer | Camada 7 | Máquinas EC2, Lambda, containers de clusters |
| Network Load Balancer | Camada 4 | Máquinas EC2, containers de clusters, ALBs |
| Gateway Load Balancer | Camadas 3 e 4 | Aplicações fora da cloud ou de terceiros |
Configuração que especifica o protocolo, porta e ação a ser tomada (como autenticação com o Cognito, resposta fixa, redirecionamento de URL ou encaminhamento para o destino)
[Listeners for your Application Load Balancers]Configuração para rotear a requisição para o destino
[Target groups for your Application Load Balancers]Suba novamente a instância criada e...
Não se esqueça de desligar os servidores após o exercício!
Serviço de DNS altamente integrado com funcionalidades da AWS (como EC2, S3, ELB), onde o usuário é cobrado pelas zonas hospedadas e número de consultas realizadas, não sendo disponibilizado no Free Tier
[aws.amazon.com/route53]O Domain Name System é um serviço que tem como principal funcionalidade a conversão de domínios legíveis por seres humanos (por exemplo google.com) em endereços IP (por exemplo 142.251.132.238)
[aws.amazon.com/route53] [cloudflare.com/learning/dns]
A grande maioria dos serviços de registro de domínio oferecem uma ferramenta própria para configuração do DNS, mas que geralmente não oferece um grande suporte de opções
Se quisermos usar uma ferramenta de terceiros para gestão do DNS, devemos criar uma entrada no painel do registro do domínio apontando-o para o serviço desejado
Esse processo é chamado de delegação de NS (veremos o que é NS em breve)
O serviço de terceiros que "recebe" o domínio chama esse apontamento de zona hospedada
Dica: alguns serviços de registro de domínios: Registro.br, Name.com, GoDaddy, AWS Route 53
A configuração de DNS de um domínio consiste em um conjunto de registros (ou entradas) que apontam o domínio ou um subdomínio para um IP, como:
Cada registro é composto por:
TTL: time-to-live, que é o tempo que os serviços de resolução
devem guardar aquele valor em seu cache
A e AAAA: para traduzir um domínio para IPv4 ou IPv6,
respectivamente, como nos exemplos do slide anterior
CNAME: encaminha a requisição para outro domínio
MX: direciona para o servidor de e-mail
TXT: notas de texto, geralmente utilizados para verificação de propriedade
do domínio e em mecanismos de segurança de e-mails
NS: indica o servidor autoritativo da entrada
SOA: guarda informações da autoridade da zona
A principal ferramenta de linha de comando para consultar entradas DNS é o dig:
$ dig a google.com
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 175 IN A 142.251.132.238
Dica: há também uma versão online em digwebinterface.com
[Dig Command in Linux] [How to Install Dig on Windows]É possível criar registros com as seguintes políticas de roteamento:
É possível criar registros com as seguintes políticas de roteamento:
É possível realizar health checks nos seus destinos finais para que o Route 53 remova-o da lista caso o recurso não esteja mais íntegro
[docs.aws.amazon.com]Como não está disponível no Free Tier, acompanhe a aula para ver os principais recursos deste serviço!
Serviço de Rede de Entrega de Conteúdo (do inglês Content Delivery Network, resultando na sigla CDN), responsável pelo caching e distribuição de conteúdo a partir de uma das localizações de borda mais próximas de seus clientes
[aws.amazon.com/cloudfront]
[aws.amazon.com/cloudfront]
[aws.amazon.com/cloudfront]
O Nível Gratuito fornece as especificações abaixo (por mês), sendo mais que o suficiente para nossos testes:
Nosso servidor que está rodando e servindo a aplicação
Cadastro criado para cada origem, com suas configurações e políticas de caching
Ação de marcar um objeto (ou grupo de objetos) como obsoletos, fazendo com que o CloudFront busque novamente da origem
[aws.amazon.com/cloudfront]Ele fornece orientações para ajudar os clientes a aplicar as melhores práticas nas áreas de projeto, entrega e manutenção dos ambientes da AWS. Abordamos princípios gerais de projeto, bem como as melhores práticas e orientações específicas em seis áreas conceituais que definimos como os pilares do Well-Architected Framework.wa.aws.amazon.com
Capacidade de apoiar o desenvolvimento e executar cargas de trabalho com eficácia, obter insights sobre as operações e melhorar continuamente procedimentos de suporte
Capacidade de proteger dados, sistemas e ativos para utilizar as tecnologias de nuvem para melhorar sua segurança
Capacidade de uma carga de trabalho de executar a função pretendida de forma consistente e correta, incluindo testar a carga de trabalho durante todo seu ciclo de vida
Capacidade de usar recursos de computação com eficiência para atender aos requisitos do sistema e manter essa eficiência à medida que a demanda muda e as tecnologias evoluem
Capacidade de executar sistemas para entregar o valor empresarial ao menor preço
Aborda o impacto ambiental, econômico e social de longo prazo de suas atividades empresariais, especialmente a eficiência e o consumo de energia
Para gerenciamento de contas, permitindo alocação de recursos e faturamento simples
Serviço de recomendações de melhores práticas
Automação para criação de recursos através de IaC (Infraestrutura como Código)
Serviço de coleta de dados, logs e métricas para monitoramento de suas aplicações
Descontos de até 72% em relação ao preço de instâncias sob demanda em troca de um compromisso de no mínimo 1 ano
Ferramenta do console para visualizar e entender o custos da sua conta
Desative recursos sobressalentes para diminuir o impacto ambiental
[clique para abrir em outra aba]
Ferramenta que ajuda na revisão na arquitetura de seu ambiente, recomendando ações a serem tomadas após um longo questionário sobre como sua organização atua em cada pilar
[aws.amazon.com/well-architected-tool] [Ver relatório de exemplo]Se precisar de ajuda com esses passos, siga os vídeos presentes no Material do aluno no Class
[console.aws.amazon.com/wellarchitected]Ferramenta para desenhar diagramas de forma colaborativa, disponível via aplicação Web ou de uma aplicação desktop (disponível para Windows, Linux, MacOS e Chrome OS).
A versão Web pode ser acessada em draw.io ou diagrams.net, "novo" nome que tem sido utilizado oficialmente desde fevereiro de 2020.
[Principais funcionalidades] [Integrações] [Exemplos de diagramas]Desenhe a arquitetura do ambiente que criamos desde o começo do módulo com os serviços: