rodando a blackfriday do seu ecommerce na nuvem

74
Rodando a Black Friday do seu eCommerce na nuvem Felipe Garcia, Arquiteto de Soluções 22 de Agosto de 2016

Upload: amazon-web-services-latam

Post on 07-Jan-2017

351 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Rodando a BlackFriday do seu eCommerce na nuvem

Rodando a Black Friday do seu

eCommerce na nuvem

Felipe Garcia, Arquiteto de Soluções22 de Agosto de 2016

Page 2: Rodando a BlackFriday do seu eCommerce na nuvem

Agenda• Arquitetura• Qual a melhor região?• Multi AZ vs Multi Região• Serviços Gerenciados vs EC2• Persistência poliglota• Segurança• Well Architected Framework• Exemplos de Arquitetura

Page 3: Rodando a BlackFriday do seu eCommerce na nuvem

Agenda• Escalabilidade• Escolhendo a instância correta• Esteja preparado para escalar horizontalmente• Escalando com Auto Scaling e ELB

Page 4: Rodando a BlackFriday do seu eCommerce na nuvem

Agenda• Disponibilidade• Plano de Continuidade• 1,2,3 Testando• Monitoramento• Suporte

• Lições Aprendidas

Page 5: Rodando a BlackFriday do seu eCommerce na nuvem

Arquitetura

Page 6: Rodando a BlackFriday do seu eCommerce na nuvem

Qual é a melhor região?

Page 7: Rodando a BlackFriday do seu eCommerce na nuvem
Page 8: Rodando a BlackFriday do seu eCommerce na nuvem

Quais fatores considerar na escolha da região?

Conformidade

Localidade dos dados

Latência

Serviços

Custos

Page 9: Rodando a BlackFriday do seu eCommerce na nuvem

Qual é a melhor região?• Certifique-se sobre conformidade e localidade dos dados• Latência, geralmente não é o problema• Utilize o Amazon CloudFront como sua CDN• Testes e testes

Page 10: Rodando a BlackFriday do seu eCommerce na nuvem

Multi AZ vs Multi Região

Page 11: Rodando a BlackFriday do seu eCommerce na nuvem

Multi AZ

RegiãoAvailability

Zone

Availability Zone

Availability Zone

Page 12: Rodando a BlackFriday do seu eCommerce na nuvem

Multi Região

RegiãoAvailability

Zone

Availability Zone

Availability Zone

RegiãoAvailability

Zone

Availability Zone

Availability Zone

Page 13: Rodando a BlackFriday do seu eCommerce na nuvem

E aí, Multi AZ ou Multi Região?• Utilizar somente uma AZ é SPoF (Ponto único de falha)• EC2 Multi AZ com SLA de 99,95% • Comece a trabalhar com Multi AZ, mas sempre preparado e pensando

em Multi Região• Conheça o serviço que está utilizando• Tenha um plano de continuidade do negócio

Page 14: Rodando a BlackFriday do seu eCommerce na nuvem

Serviços Gerenciados ou EC2

Page 15: Rodando a BlackFriday do seu eCommerce na nuvem

Por que usar Serviços Gerenciados?• Menos “levantamento de peso não diferenciado”. Menos carga de trabalho na sua

equipe. Sua equipe consegue focar na aplicação e na entrega de valor pro negócio.• Utilize ElasticBeanstalk ou Amazon ECS para rodar sua aplicação ou API web, ao

invés de manter toda stack você mesmo em servidores EC2. Além disso, ele traz outras funcionalidades para facilitar sua vida com deployment, teste ab, rollback, escalabilidade, etc.• Utilize Elasticache ao invés de seu cache em EC2. Ele trás funcionalidades como

cliente com auto discovery para memcached, e réplicas de leitura e failover automático para redis.• Utilize RDS ao invés de seu banco em EC2. Ele oferece backup automático com

RPO de 5 minutos, réplicas de leitura, etc.

Page 16: Rodando a BlackFriday do seu eCommerce na nuvem

Persistência Poliglota

Page 17: Rodando a BlackFriday do seu eCommerce na nuvem

Na era do Banco de Dados

Business Logic

SearchAPI

CatalogAPI

ReportsCartAPI

Session

Banco de Dados(Relacional, NoSql, etc)

Page 18: Rodando a BlackFriday do seu eCommerce na nuvem

Na era do Banco de Dados

Business Logic

SearchAPI

CatalogAPI

ReportsCartAPI

Session

Banco de Dados(Relacional, NoSql, etc)

Page 19: Rodando a BlackFriday do seu eCommerce na nuvem

Na era das Ferramentas de Busca e Indexação

Business Logic

SearchAPI

CatalogAPI

ReportsCartAPI

Session

Ferramenta de Busca(ex: Solr, Elasticsearch, etc)

Page 20: Rodando a BlackFriday do seu eCommerce na nuvem

Na era das Ferramentas de Busca e Indexação

Business Logic

SearchAPI

CatalogAPI

ReportsCartAPI

Session

Ferramenta de Busca(ex: Solr, Elasticsearch, etc)

Page 21: Rodando a BlackFriday do seu eCommerce na nuvem

When you only have a hammer, everything looks like a nail– Abraham Maslow

Page 22: Rodando a BlackFriday do seu eCommerce na nuvem

Trabalhando com Persistência Poliglota

Business Logic

SearchAPI

CatalogAPI

ReportsCartAPI

Session

AmazonDynamoDB

Amazon Redshift

Amazon ElastiCache

AmazonRDS

AmazonDynamoDB

Amazon Elasticsearch Service

Page 23: Rodando a BlackFriday do seu eCommerce na nuvem

Segurança

Page 24: Rodando a BlackFriday do seu eCommerce na nuvem

Boas práticas• Proteja sua conta da AWS, dentro e fora• Proteja seu perímetro e reduza a superfície de ataque• Mantenha seus sistemas atualizados• Não armazene dados sensíveis. Criptografe dados em descanso, quando

necessário• HTTPS em todo lugar. Criptografe dados em trânsito. Utilize o AWS Certificate

Manager para criar seus certificados• Conduza auditorias PCI periodicamente• Consulte o AWS Trusted Advisor periodicamente• Utilize o AWS WAF

Page 25: Rodando a BlackFriday do seu eCommerce na nuvem

Well Architected

Page 26: Rodando a BlackFriday do seu eCommerce na nuvem

O que é o Well Architected Framework?• O framework Well Architected é baseado em 4 pilares – segurança, confiabilidade,

desempenho eficiente e otimização de custos• Segurança

• Habilidade de proteger informação, sistemas, e ativos entregando valor par ao negócio através de avaliações de risco e estratégias de mitigação

• Confiabilidade• Habilidade de um sistema se recuperar de problemas de infraestrutura ou serviços, adquirir

dinamicamente recursos computacionais para atender a demanda, e mitigar disrupturas de serviço causadas por problemas temporários de rede ou má configuração

• Desempenho Eficiente• Habilidade de usar recursos computacionais de maneira eficiente para atender os requisitos do sistema, e

manter esta eficiência mesmo com a mudança das demandas e evoluções tecnológicas

• Otimização de Custos• Habilidade de evitar ou eliminar custos desnecessários ou recursos sub-utilizados.

Referência: http://amzn.to/2bvc8bj

Page 27: Rodando a BlackFriday do seu eCommerce na nuvem

Exemplos de Arquitetura

Page 28: Rodando a BlackFriday do seu eCommerce na nuvem

Web Frontend

Page 29: Rodando a BlackFriday do seu eCommerce na nuvem

Fluxo de Compras

Page 30: Rodando a BlackFriday do seu eCommerce na nuvem

Sistema de recomendação e campanha de marketing

Page 31: Rodando a BlackFriday do seu eCommerce na nuvem

Escalabilidade

Page 32: Rodando a BlackFriday do seu eCommerce na nuvem

Escolhendo a instância correta

Page 33: Rodando a BlackFriday do seu eCommerce na nuvem

Tipos de instância• Propósito Geral

• T2• M1 (geração antiga)• M3• M4

• Otimizado para CPU (C1, C3, C4)• Otimizado para Memória

• M2 (geração antiga)• R3• X1

• Outros tipos• G2 (GPU)• D2 (I/O Armazenamento denso)• I2 (I/O Alto desempenho)

Page 34: Rodando a BlackFriday do seu eCommerce na nuvem

Boas práticas• Defina suas métricas de sucesso, e realize testes com diferentes famílias e tipos de

instância• Prefira as instâncias da última geração• Para banco de dados, ou workloads que tem I/O intensivo, escolha instâncias que são

“EBS Optimized”• Conheça quantos IOPS seu banco de dados precisa. Na maioria das vezes os volumes

GP2 dão conta do recado• Se escolher uma instância muito grande estará desperdiçando dinheiro por estar

super-provisionado, e se escolher uma instância muito pequena, poderá prejudicar a experiência do usuário final, como também gastar mais dinheiro por ter que escalar mais• Consulte o AWS Trusted Advisor periodicamente

Page 35: Rodando a BlackFriday do seu eCommerce na nuvem

Esteja preparado para escalar horizontalmente

Page 36: Rodando a BlackFriday do seu eCommerce na nuvem

Boas práticas• Construa aplicações web stateless. Se tiver que armazenar estado,

armazene em um serviço externo• Se sua aplicação faz upload de arquivos ou serve arquivos estáticos

(ex: CSS, JS, Imagens, etc), armazene os mesmos no S3• Prepare suas instâncias (e containers, caso utilize) para ter o menor

tempo de criação possível e beneficiar seu processo de Auto Scaling• Cache• Utilize clientes que aceitem consistent hashing• Utilize réplicas de leitura• Prefira Elasticache a utilizar seu próprio cache em EC2

Page 37: Rodando a BlackFriday do seu eCommerce na nuvem

Boas práticas• Banco de Dados• Utilize persistência poliglota. Entenda como seu banco de dados escala

horizontalmente para escritas e leituras• Nem todos RDMS suportam réplicas de leitura, e a maioria não suporta multi

master - e quando suportam, é muito complexo de gerenciar• Prefira RDS ou outros serviços de bancos de dados gerenciados da AWS ao

invés de EC2• Caso seu banco RDBMS não suporte escalar horizontalmente escrita e leitura,

delegue essa tarefa para algum proxy reverso como por exemplo, o ScaleArc

Page 38: Rodando a BlackFriday do seu eCommerce na nuvem

Escalando com Auto Scaling e ELB

Page 39: Rodando a BlackFriday do seu eCommerce na nuvem

Entendendo a demanda da sua aplicação

Page 40: Rodando a BlackFriday do seu eCommerce na nuvem

Provisionando para a consumo máximo

Page 41: Rodando a BlackFriday do seu eCommerce na nuvem

Provisionando para o consumo médio

Page 42: Rodando a BlackFriday do seu eCommerce na nuvem

Provisionando capacidade sob demanda

Page 43: Rodando a BlackFriday do seu eCommerce na nuvem

Exemplo: escalando na produção

Page 44: Rodando a BlackFriday do seu eCommerce na nuvem

Boas práticas• Certifique-se que seu ELB está com “Cross Zone Load Balancing”

habilitado• Certifique-se que tem pelo menos 2 Availability Zones selecionadas em

seu ELB• Configure o timeout do seu ELB para ser maior ou igual ao timeout do das

instâncias EC2 que estão recebendo as conexões• Utilize ELB público e mantenha as instâncias EC2 em subnets privadas• O ELB escala muito bem, mas antes de qualquer evento grande, abra um

chamado no suporte para avaliar necessidades de pre-warming• Habilite os logs do seu ELB

Page 45: Rodando a BlackFriday do seu eCommerce na nuvem

Boas práticas• Faça scale out mais agressivos, e faça scale in menos agressivos• Configure suas métricas 25% abaixo do desejado para dar tempo para seu

ambiente e sua aplicação subirem• Ex: se sua métrica de CPU para scale out é 80%, quando configurar o auto scaling,

utilize 60%

• Compre instâncias EC2 reservadas para seu consumo médio. • Utilize diferentes Auto Scaling Groups para escalar com On-Demand e

Spot para as demandas adicionais• Ex: se sua métrica para scale out é 60% CPU, crie um Auto Scaling Group para

instâncias on-demand fazer scale out com 60% de CPU, crie outro Auto Scaling Group para fazer scale out com instâncias spot com 50% de CPU

Page 46: Rodando a BlackFriday do seu eCommerce na nuvem

Disponibilidade

Page 47: Rodando a BlackFriday do seu eCommerce na nuvem

Plano de Continuidade

Page 48: Rodando a BlackFriday do seu eCommerce na nuvem

Everything fails all the time

– Werner Voegels

Page 49: Rodando a BlackFriday do seu eCommerce na nuvem

Planejando a continuidade do seu negócio• Se ocorrer uma falha• Quanto tempo meu negócio pode ficar for a do ar?• Quanto tempo de dados meu negócio pode perder?

• Qual o RTO e o RPO do seu negócio?• Tenha claro quais são os objetivos do negócio e estabeleça o RTO e

RPO para então decidir qual a melhor estratégia

Page 50: Rodando a BlackFriday do seu eCommerce na nuvem

Backup & Restore• Tenha cópias de suas AMIs em outra região• Se estiver utilizando RDS, tenha uma read replica ou cópia do

snapshot em outra região• Exercite seu plano de continuidade dos negócios periodicamente para

garantir que ele está funcional e que os objetivos de RTO e RPO estão sendo cumpridos

Page 51: Rodando a BlackFriday do seu eCommerce na nuvem

Pilot Light - Desenho

Page 52: Rodando a BlackFriday do seu eCommerce na nuvem

Pilot Light - Failover

Page 53: Rodando a BlackFriday do seu eCommerce na nuvem

Warm Standby - Desenho

Page 54: Rodando a BlackFriday do seu eCommerce na nuvem

Warm Standby - Failover

Page 55: Rodando a BlackFriday do seu eCommerce na nuvem

Multi Site - Desenho

Page 56: Rodando a BlackFriday do seu eCommerce na nuvem

Multi Site - Failover

Page 57: Rodando a BlackFriday do seu eCommerce na nuvem

1,2,3 Testando

Page 58: Rodando a BlackFriday do seu eCommerce na nuvem

Por que testar?• Como diz nosso CTO, as coisas falham o tempo todo• Integre os testes de carga unitários em seu processo de CI/CD• Conduza testes de carga estruturados periodicamente em seu

workload• Alguns erros só vão acontecer em produção, tente utilizar

ferramentas como o Gor para testar seu sistema com dados reais e o Hoverfly para simular hipóteses• Te ajudará a encontrar e refinar suas métricas

Page 59: Rodando a BlackFriday do seu eCommerce na nuvem

Frameworks e ferramentas para testes estruturados• Apache JMeter (free) - http://jmeter.apache.org/

• Java/XML/Javascript

• Locust (free) - http://locust.io/• Python

• Hoverfly - http://hoverfly.io/• Python

• Artillery (free) - https://artillery.io/• Node.js

• Gor (free)• Go

• Gatling (free) - http://gatling.io/• Scala

• Perfcake (free)• Java

Page 60: Rodando a BlackFriday do seu eCommerce na nuvem

Hoverfly

Page 61: Rodando a BlackFriday do seu eCommerce na nuvem

Gor

Page 62: Rodando a BlackFriday do seu eCommerce na nuvem

Ferramentas para testes simples• AB (Apache Bench)http://httpd.apache.org/docs/current/programs/ab.html

• Siegehttps://github.com/JoeDog/siege

• Bees with Machine Guns!https://github.com/newsapps/beeswithmachineguns

Page 63: Rodando a BlackFriday do seu eCommerce na nuvem

Ferramentas Online• Loader - http://loader.io/• BlazeMeter - https://www.blazemeter.com• Blitz - https://www.blitz.io/• Load Impact - https://loadimpact.com/

Page 64: Rodando a BlackFriday do seu eCommerce na nuvem

Monitoramento

Page 65: Rodando a BlackFriday do seu eCommerce na nuvem

You can’t manage what you don’t measure– Peter Drucker

Page 66: Rodando a BlackFriday do seu eCommerce na nuvem

Importância do Monitoramento• Não conseguimos gerenciar, aquilo que não medimos• Pare de ser reativo, e seja pró-ativo!• Métricas de negócio• Automação e melhoria contínua• ZzzzZzzzzzzz

Page 67: Rodando a BlackFriday do seu eCommerce na nuvem

Ferramentas de monitoração AWS• Amazon CloudWatch• Logs • Events• Dashboard

Page 68: Rodando a BlackFriday do seu eCommerce na nuvem

Ferramentas de monitoração de propósito geral• Datadog• Zabbix• Nagios• PCP (Performance Co-Pilot)• Icinga• PRTG• NewRelic• Librato• Dynatrace

Page 69: Rodando a BlackFriday do seu eCommerce na nuvem

Ferramentas de monitoração de banco de dados• Vividcortex• Monyog• NewRelic• Nagios• Datadog

Page 70: Rodando a BlackFriday do seu eCommerce na nuvem

Suporte

Page 71: Rodando a BlackFriday do seu eCommerce na nuvem

Importância do suporte• Tenha pelo menos um plano de suporte para garantir um SLA• Toda dúvida ou problema que tiver, abra um caso de suporte• Se o seu workload está em produção, o mínimo recomendado é o

suporte Business• Caso não tenha budget para o business, tenha pelo menos o

Developer

Page 72: Rodando a BlackFriday do seu eCommerce na nuvem

Lições Aprendidas

Page 73: Rodando a BlackFriday do seu eCommerce na nuvem

Sempre ter em mente…• O mito da região• A Black Friday nunca acaba• Utilize o Well Architected Framework e o Trusted Advisor• Entenda seus pontos fracos e esteja pronto para escalar horizontalmente• DR não é D(epois) R(esolve)• PDCA• Monitore t.u.d.o• Teste t.u.d.o• Seja segurado. Tenha um plano de suporte

Page 74: Rodando a BlackFriday do seu eCommerce na nuvem

Obrigado!