O Amazon EC2 permite que você obtenha capacidade computacional de uma forma econômica usando instâncias spot. Este recurso permite uma redução de até 90% no custo em relação ao valor on demand. Nesta sessão, os participantes aprenderão as boas práticas deste modelo e alguns casos de uso em que as instâncias spot podem ser utilizadas com sucesso.
2. Agenda
• Conceito de instâncias Spot
• Tipos de requisições de instâncias Spot
• Spot
• Spot Blocks
• Spot Fleet
• Escalando com instâncias Spot
• Quando usar Spot x Spot Blocks x Spot Fleet
3. O que é Amazon EC2 Spot
$1
• São instâncias EC2 que você pode aplicar uma oferta de preço. Como
instâncias Spot estão geralmente disponíveis a preços baixos, você pode
reduzir significamente os custos com Amazon EC2.
4. As Regras são Simples
Mercados onde o preço muda
baseado na oferta e procura
Você nunca pagará mais do que o
valor da sua oferta. Quando o preço
de mercado exceder o valor da sua
oferta, você recebe 2 minutos para
concluir suas tarefas
5. $0.27 $0.29$0.50
1b 1c1a
8XL
$0.30 $0.16$0.214XL
$0.07 $0.08$0.082XL
$0.05 $0.04$0.04XL
$0.01 $0.04$0.01L
C3
$1.76
On
Demand
$0.88
$0.44
$.22
$0.11
Cada família de instância
Cada tamanho de instância
Cada Zona de Disponibilidade
Em cada região
É um Spot Market separado
Quais são os mercados de Spot
8. Vamos às contas
• m3.2xlarge em São Paulo = $0.761/hr
• $0.0853/hr = ~11%
• ~11% < t2.medium ($0.108/hr)
• Por 3 meses ou mais
• Ao invés de $1671.18 seu custo será de $184.24
• Redução de quase $1500!
11. Determine o tipo e a validade da sua oferta
• Única ou persistente
• Se a oferta for persistente, uma nova requisição será
feita automaticamente após a instância ser terminada
• Possibilidade de configurar o prazo da sua oferta
12. Use instâncias Spot para escalar
1. Crie um Auto Scaling só de Spot
2. Crie outro Auto Scaling com On-Demand
3. Ambos no mesmo Elastic Load Balancing
4. Configure métricas mais agressivas no Auto Scaling de
Spot e seja mais conservador no Auto Scaling de On-
Demand
5. Instâncias Spot serão lançadas primeiro e desligadas
por último
6. Instâncias On-Demand serão lançadas por último e
desligadas primeiro
13. Aplicação Web com Spot
Dados de
Sessão
Zona de Disponibilidade A
Zona de Disponibilidade B
ASG Spot
Elastic Load
Balancing
ASG On-
Demand
14. Use instâncias Spot para escalar
1. Crie um Auto Scaling só de Spot
a) Via Console, crie um Launch Configuration que faça a
requisição de Spot
b) Crie o Auto Scaling Group com esse Launch Configuration
16. Use instâncias Spot para escalar
2. Crie um Auto Scaling de On-Demand
a. Via Console, crie um Launch Configuration sem requisitar
Spot
b. Via CLI, utilize os mesmos comandos removendo apenas o
parâmetro --spot-price
c. Crie o Auto Scaling Group da mesma maneira que o Spot
17. Use instâncias Spot para escalar
3. Ambos no mesmo Elastic Load Balancing
a. Via Console, vá no Auto Scaling e edite o campo Load
Balancers
b. Via CLI, adicione o parâmetro --load-balancer-names
c. Faça isso para os dois Auto Scaling Groups
18. Auto Scaling Spot CLI
#Cria Auto Scaling anexado à um Load Balancer
aws autoscaling create-auto-scaling-group --region us-west-2 --auto-scaling-group-name
ASG_Spot --launch-configuration-name LC_Spot --availability-zones "us-west-2a" "us-
west-2b" "us-west-2c" --max-size 4 --min-size 1 --desired-capacity 2 --vpc-zone-
identifier subnet-bbd906cc,subnet-569e2733,subnet-0694685f --load-balancer-names MyELB
19. Use instâncias Spot para escalar
4. Configure métricas mais agressivas no Auto Scaling de
Spot e seja mais conservador no Auto Scaling de On-
Demand. Exemplo:
a) Se CPU >= 40% lance Spot
b) Se CPU >= 70% lance On-Demand
c) Se CPU <= 40% remova On-Demand
d) Se CPU <= 20% remova Spot
5. Instâncias Spot serão lançadas primeiro e desligadas
por último
6. Instâncias On-Demand serão lançadas por último e
desligadas primeiro
20. Fique atento com o alerta de 2 minutos
$ if curl -s http://169.254.169.254/latest/meta-
data/spot/termination-time |
grep -q .*T.*Z; then instance_id=$(curl -s
http://169.254.169.254/latest/meta-data/instance-id);
aws elb deregister-instances-from-load-balancer
--load-balancer-name my-load-balancer
--instances $instance_id;
/env/bin/flushsessiontoDBonterminationscript.sh; fi
1) Verifica o alerta de 2
minutos
2) Se SIM, remove a
instâncias do ELB
3) Caso contrário, não faça
nada
4) Aguarda por 5 segundos
25. Amazon EC2 Spot Fleet
• Lance centenas de instâncias Spot com uma única chamada
RequestSpotFleet
• Lowest Price
• Encontre o melhor preço que funcione para você
• Diversified
• Diversifique sua frota. Amplie sua disponibilidade
• Custom Weighting
• Crie sua própria unidade de capacidade baseado nas necessidades da
sua aplicação
26. Flexibilidade do Spot Fleet
2. Entre famílias EC2
3. Entre AZs
1. Dentro da família EC2
29. Spot Fleet
Dependendo da quantidade e variação do seu Spot Fleet,
utilizar o CLI pode ser complicado.
Dica:
30. Aplicação Web sem Estado (Stateless)
Elastic Load
Balancing
Stateless
Web Servers
(Spot)
Stateless
Web Servers
(Spot)
Dados de
Sessão
Spot fleet
Zona de Disponibilidade A
Stateless
Web Servers
(Spot)
Stateless
Web Servers
(Spot)
Zona de Disponibilidade B
33. Escale seu Spot Fleet
Elastic Load
Balancing
Stateless
Web Servers
(Spot)
Stateless
Web Servers
(Spot)
Zona de Disponibilidade A
Zona de Disponibilidade B
Stateless
Web Servers
(Spot)
Stateless
Web Servers
(Spot)
Alarme
Amazon
CloudWatch
Contagem de
Requisições
AWS
Lambda
ModifySpotFleetRequest API
34. “A flexibilidade que a AWS oferece para adequar nosso
ambiente à variação de audiência, aliada a performance,
robsutez e segurança são os pilares onde nos apoiamos
para desenvolver nossa parceria com a AWS.”
O ZAP tem sede em São Paulo, conta
com 400 funcionários e possui 25
escritórios regionais distribuídos pelo
Brasil. Nossos principais polos de
tecnologia estão localizados em São
Paulo, Porto Alegre e Maringá.
Oferecemos as ferramentas de
buscas com os mais adequados filtros
de pesquisa através de website ou por
meio de um moderno aplicativo para
celulares e tablets das plataformas
Android e iOS, com mais de 14
milhões de visitas/mês.
“Redução de
custos é chave para
o momento sócio
econômico que estamos
atravessando no Brasil e
a AWS tem o suporte
tecnológico ideal para
nos ajudar a atingir esta
meta.”
- Eduardo Perez, CTO
35. Desafio
Otimização de Uso / Custo
Volatilidade Cambial
Automatização + DevOps
Escalabilidade + HA
39. Requisitos para usar Spot
• Não persista nada na instância Spot
• Para sessões, Amazon ElastiCache ou Amazon DynamoDB
• Para logs, Amazon S3
• …
• Use para aplicações escaláveis e automatizadas
• Evite para aplicações monolíticas caso ela seja crítica
40. Qual tipo de Spot devo usar?
• Spot
• Escalar (integrado com Auto Scaling)
• Processamento em batch com tempo indeterminado
• Task Nodes do EMR
• Ambientes de DEV e Homologação, instância de CI
• Workers em geral
• Spot Blocks
• Qualquer job que tem limite de até 6 horas para ser executado
• Processamento em batch
• HDFS de um cluster EMR
• Spot Fleet
• Aplicações Web estáveis usando Diversified em diferentes AZs
• Task Nodes do EMR
• Cluster de containers
41. Qual tipo de Spot devo usar?
• Na dúvida, use Spot Fleet