Marcio Honorato / Senior Technical Trainer AWS
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.
- 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
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á.
- 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
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.
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.
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.
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
em
: uso geralc
ecc
: CPU e performanceg
ep
: GPUr
,x
,cr
: Memóriad
,i
,hi
,hs
: Armazenamento (alta E/S e densidade)
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
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.
@TODO
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.
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.
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.
- Compliance
- CloudTrail: "Olho que tudo vê
- Trusted Advisor
- Guard Duty
- Macie
- Well Architected Framework