Skip to content

Instantly share code, notes, and snippets.

@GusAntoniassi
Last active September 19, 2018 12:35
Show Gist options
  • Save GusAntoniassi/060fe98c1d31ba12882a4f794c5f8d72 to your computer and use it in GitHub Desktop.
Save GusAntoniassi/060fe98c1d31ba12882a4f794c5f8d72 to your computer and use it in GitHub Desktop.
Resumo Webinar AWSome Day

Apresentador

Marcio Honorato / Senior Technical Trainer AWS

Módulo 1: Conceitos da AWS Cloud

Para a AWS, Nuvem é um conjunto de servços ou recursos de TI disponibilizados pela internet, pagando apenas pelo consumo. Uma analogia interessante é em relação à eletricidade: se você acender uma lâmpada, vai pagar apenas pelo tempo que aquela lâmpada estiver acesa.

São mais de 100 serviços disponibilizados pela AWS, com mais de 4.000 funcionalidades. Alguns serviços que chamaram a [minha] atenção:

A AWS possui uma política de repasse de descontos, onde todos os descontos que eles conseguem (por ex. na compra de CPUs para as máquinas EC2) são repassados ao cliente final no preço por hora das máquinas.

Vantagens da nuvem

  • Troca de investimento por despesa variável: Elimina a necessidade de investir pesado em um datacenter (custos de hardware, manutenção, segurança, etc.) por uma despesa controlável sobre a utilização.
  • Benefícios em economia de escala: A AWS compra processadores na faixa dos milhares, por isso consegue valores muito abaixo do mercado. Esses descontos são diretamente repassados aos consumidores.
  • Evita "chutes" de capacidade: Não é mais necessário investir pesado em um hardware sem saber qual será a demanda da aplicação, a escala horizontal (aumentar número de máquinas) e vertical (aumentar capacidade da máquina) são feitas com apenas alguns cliques de mouse.
  • Agilidade e velocidade nos processos: Criar e terminar servidores, escalar, monitorar, tudo é facilmente realizado pela interface web e SDKs.
  • Disponibilidade global: Existem vários datacenters espalhados pelo mundo, e várias zonas de disponibilidade em cada região
  • Elimina custos de datacenters
  • Permite a disponibilização dos serviços globalmente, em vários datacenters
  • Recursos são mais "descartáveis", é possível criar ou terminar um servidor a qualquer hora, sem se preocupar com o hardware físico

Regiões e Zonas de disponibilidade

A AWS conta com 16 regiões geográficas diferentes, e no mínimo duas zonas de disponibilidade em cada. As zonas de disponibilidade são datacenters separados e geograficamente isolados entre si para o caso de catástrofes como terremotos, tsunamis, atentados terroristas, etc. São 3 zonas de disponibilidade na região de São Paulo.

Além disso, existem as chamadas "Edge Locations" que são datacenters provedores de serviços considerados "globais" da AWS, como os caches do CloudFront (Serviço de CDN) e do Route 53 (Serviço de DNS).

O conceito de múltiplas zonas de disponibilidade permite fornecer a alta disponibilidade sem intervenção humana e com falhas transparentes, ou seja, se houver falhas no serviço o cliente não perceberá.

Módulo 2: Tecnologia AWS e serviços

  • Infraestrutura global com diversas categorias de serviços
  • Cada região tem pelo menos duas zonas de disponibilidade
  • É recomendável implementar múltiplas zonas na utilização do autoscaling

Virtual Private Cloud (VPC)

O VPC é o serviço de rede interna da nuvem, que permite implementar diversas camadas de segurança ao nível de rede, através da divisão da VPC em subnetworks.

A melhor prática recomendada é criar duas subnets: uma pública para serviços e servidores que precisam estar conectados à internet, e outra privada para os que precisam apenas comunicar-se entre si.

Security Groups

O security group é o firewall básico da AWS. Ele permite criar políticas de acesso a determinadas portas por determinados endereços ou ranges de IP.

A melhor prática com security groups é separar o frontend, backend e banco de dados em três grupos de servidores diferentes. O acesso à internet seria liberado apenas para frontend, na porta 80/443. O back-end seria chamado por APIs, e se conectaria ao servidor do banco de dados através da rede interna.

Compute Services

Existem diversos serviços de computação na Amazon. O principal deles é o EC2, que fornece o serviço de virtual private server (VPS). É essencialmente uma máquina virtual.

Existem também serviços para computação serverless (que não se preocupa com o gerenciamento do servidor).

O principal exemplo é o AWS Lambda. O Lambda é um executor agnóstico de código, que permite executar código PHP, Java, .NET, Go, Python, entre vários outros, sem a necessidade de criar e gerenciar uma máquina EC2 no servidor. É possível implementar com ele diversos scripts de automação, como backup, deploy, etc. Também é muito utilizado em arquiteturas de microserviços.

Outro serviço para computação serverless é o Lightsail, que permite fazer o deploy de aplicações web sem grandes complicações.

A containerização é fortemente suportada na AWS. Para a utilização de containers Docker na nuvem, a AWS disponibiliza o Elastic Container Service (ECS). Também é possível utilizar o Kubernetes através do Amazon EKS. O AWS Fargate permite criar e gerenciar containers sem a necessidade de criar e provisionar servidores ou clusters, permitindo que os desenvolvedores se concentrem na criação dos serviços e não com a infraestrutura onde eles são executados.

Elastic Compute Cloud (EC2)

O EC2 é o serviço mais utilizado da AWS. Ele permite a criação de servidores virtuais (VPS). Existe uma grande seleção de hardware e software disponíveis para serem utilizados no EC2. Os processadores são Intel Xeons customizados para a AWS.

As máquinas do EC2 são classificadas por famílias, e as famílias recebem nomes como t2.micro, m4.16xlarge, etc. A primeira letra indica o propósito da máquina, e o número indica a geração do processador. Os nomes são seguidos do tamanho da máquina (micro, small, etc). Entre os propósitos das máquinas estão:

  • t e m: uso geral
  • c e cc: CPU e performance
  • g e p: GPU
  • r, x, cr: Memória
  • d, i, hi, hs: Armazenamento (alta E/S e densidade)

Elastic Load Balancer (ELB)

O ELB distribui a carga entre instâncias e zonas de disponibilizades (AZs). Ele é capaz de detectar a saúde da instância e não distribuir carga para uma instância que não está saudável.

Existem três tipos de LBs:

  • Application (ALB): HTTP e HTTPs
  • Network (NLB): TCP
    • Distribui carga entre sessões TCP, pode ter um IP fixo e vai responder como se fosse um cluster. Possui performance externa e é recomendado para situações com grandes flutuações de demanda
  • Clássico (CLB): HTTP, HTTPs e TCP
    • Distribui a carga entre os servidores, desacopla o serviço e não entrega carga para serviços que não respondem.
    • É o que usamos no B2B

Autoscaling

Permite escalar horizontalmente de acordo com a demanda da aplicação, fornecendo escalabilidade e automação.

O autoscaling é feito com base em alarmes do CloudWatch, que são políticas customizadas que dizem quando escalar. As métricas mais comuns são: Volume do CPU, latência da resposta, número de mensagens na fila (para filas de mensagens).

  • Aumentar uma máquina no grupo do autoscaling (Scale In) quando o uso de CPU for maior que 65%
  • Diminuir uma máquina no grupo (Scale Out) quando o uso de CPU for menor que 60%

Também é possível criar políticas agendadas (scheduled scaling). Um exemplo tradicional é a Black Friday: é possível agendar o Scale In durante o período, e agendar o Scale Out depois.

A forma mais comum de utilizar o autoscaling é através do ELB + um cluster de EC2.

Elastic Block Store (EBS)

@TODO

Simple Storage Service (S3)

O S3 é o serviço de armazenamento de arquivos da Amazon. Ele é capaz de fornecer altíssima durabilidade (99,999999999%) e disponibilidade (99,99%) dos arquivos.

No S3, existem os buckets que são "Baldes" de objetos em uma AZ. Os arquivos são objetos que são inseridos dentro de cada bucket. O S3 permite a criação de ACL ou IAM para o acesso dos arquivos no bucket. É possível também armazenar web sites estáticos (HTML) no S3, sem a necessidade de um servidor Apache ou Nginx.

Casos de uso comuns: Backups, recuperação de desastres, área de testes para Big Data.

Relational Database Services (RDS)

Serviço de banco relacional onde a Amazon cuida da manutenção, patches de atualização, sistema operacional, etc. É comum para utilizar em aplicações web e mobile, ecommerce e jogos.

Dynamo DB

Serviço de banco não relacional (NoSQL) da Amazon. É virtualmente ilimitado e possui baixíssima latência. O desempenho é definido pelo cliente (relacionado ao custo).

Casos de uso: Web e mobile, IoT, jogos, dados de sessão em websites, carrinho de compras em e-commerce, etc.

Nos bancos NoSQL, a melhor prática é utilizar uma chave composta, com a Partition Key que irá organizar os dados e a Sort Key que vai ordenar os dados dentro da partição. A chave do registro seria a combinação da partition key e sort key.

Módulo 3: Segurança na AWS

  • Compliance
  • CloudTrail: "Olho que tudo vê
  • Trusted Advisor
  • Guard Duty
  • Macie

Módulo 4: Essenciais de arquitetura na AWS

  • Well Architected Framework

Módulo 5: Precificação na AWS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment