Serviços da AWS: Melhores Práticas e Lições Aprendidas

Serviços da AWS: Melhores Práticas e Lições Aprendidas

Visão considerando as melhores práticas e lições aprendidas de utilização de vários serviços da AWS nos últimos anos, como VPC, EC2, Route 53, CloudFront, S3, CloudWatch, CloudFormation, IAM, Account & Billing, entre outros, além de abordar casos e experiências sobre DevOps na AWS.

45a791315d248529d0657efceeaea294?s=128

Alexandre Malucelli

August 15, 2017
Tweet

Transcript

  1. 1.

    Serviços da AWS: 
 Melhores Práticas e Lições Aprendidas Alexandre

    Guimarães Malucelli Site Reliability Engineering
  2. 3.

    Agenda • Compute: VPC, EC2, ASG, ELB • Networking &

    Content Delivery: Route 53, CloudFront • Storage & Database: S3, RDS • Management Tools: CloudWatch, CloudFormation • Security & Identity: IAM, Account & Billing • Messaging: SES • General: Operations, Application Development
  3. 5.

    Virtual Private Cloud (VPC) ‣ Evite utilizar a default VPC

    da região escolhida; ‣ Adote um CIDR que seja escalável; ‣ Crie padrões de nomenclatura;
  4. 10.

    Virtual Private Cloud (VPC) ‣ Padronize a numeração das regras

    de Network ACL; Rule # Type Protocol Port Range Source Allow / Deny 100 200 210 900 * All Trafic HTTP (80) HTTPS (443) Custom TCP Rule All Trafic ALL TCP (6) TCP (6) TCP (6) ALL ALL ALL 80 443 1024-65535 10.0.10.0/24 ALL 0.0.0.0/0 0.0.0.0/0 0.0.0.0/0 ALLOW DENY ALLOW ALLOW ALLOW
  5. 11.

    Virtual Private Cloud (VPC) ‣ Segmente suas subnets em privadas

    e públicas; ‣ Utilize NAT Gateway para saídas de rede privadas; ‣ Libere apenas o necessário a internet (0.0.0.0/0); ‣ Para acesso externo, utilize bastion host e/ou VPN;
  6. 13.

    Elastic Compute Cloud (EC2) ‣ Habilite o Termination Protection; ‣

    Prefira instâncias reservadas à on-demand ($); ‣ Crie uma estratégia de gerenciamento de key pairs; ‣ Categorize por tags: Application, Role, Environment;
  7. 15.

    Auto Scaling ‣ Múltiplos ASG com estratégias por métricas, agendamento

    e tamanho único; ‣ Integre com o health check do ELB (replacement); ‣ Crie padrões de nomenclatura;
  8. 19.

    Elastic Load Balancer (ELB) ‣ Termine o SSL no Elastic

    Load Balancer (ALB, CLB); ‣ Configure o timeout de acordo com sua aplicação; ‣ Listener HTTP para conexões HTTP (X-Forwarded);
  9. 20.

    Elastic Load Balancer (ELB) ‣ ALB e CLB não tem

    IPs fixos; ‣ Desabilite o cache de DNS em proxies (ex. nginx); ‣ Crie padrões de nomenclatura;
  10. 23.

    Route 53 ‣ Recursos da AWS configurados como ALIAS record;

    ‣ Conta separada para registro de domínios; ‣ Roteamento com múltiplas regras (failover, peso, latência, geolocation);
  11. 24.

    Route 53 endp-app.example.com app.example.com e1x04amp1l3e9c.cloudfront.net elb-us-east-1-pb-exp1-app1... failover secondary
 (no evaluate)

    failover primary
 (evaluate) elb-us-east-1-pb-exp1-app2… weighted
 (90, evaluate) ALIAS ALIAS weighted
 (10, evaluate)
  12. 26.

    CloudFront ‣ Origem S3 (block storage) é diferente de S3

    Website Endpoint (HTTP Custom Origin); ‣ Cuidado com CNAMEs configurados para wildcard subdomains (*.example.com);
  13. 27.

    CloudFront ‣ Cache com query strings (?color=green&lang=en); ‣ ?color=green&lang=en <>

    ?lang=en&color=green; ‣ ?Color=Green&Lang=En <> ?color=green&lang=en;
  14. 28.
  15. 29.

    Simple Storage Service (S3) ‣ Nome de bucket compartilha presença

    global; ‣ Distribua com segurança (Signed URL no CF, IAM, IP Address); ‣ Versione e expire os objetos; ‣ Utilize VPC Endpoint para altos volumes de dados;
  16. 31.

    Relational Database Service (RDS) ‣ Sempre crie um parameter e

    option group customizado; ‣ Conheça seus limites e funcionalidades disponíveis;
  17. 33.

    CloudWatch ‣ Use métricas customizadas para políticas de scaling; ‣

    Logs: Configure uma expiração para logs groups ($); ‣ Logs: Diretivas de logs válidas e individuais (etc/config);
  18. 35.

    CloudFormation ‣ Não atualize componentes manualmente; ‣ Utilize os helper

    scripts em EC2 para controle da stack; ‣ Quebre e segmente seus templates;
  19. 37.

    Identity and Access Management (IAM) ‣ Crie credenciais para todos

    e habilite o MFA; ‣ Não compartilhe credenciais entre serviços e ambientes; ‣ Prefira roles em EC2 do que credenciais hard-coded;
  20. 39.

    Account & Billing ‣ Não gerencie sua conta com a

    credencial root; ‣ Configure alertas que reflitam seu orçamento; ‣ Conta individual para centralizar o billing (master account); ‣ Contas individuáis para cada ambiente;
  21. 41.

    Simple Email Service ‣ Gerencie retornos de bounces e complains;

    ‣ Autenticação SMTP não aceita credenciais AWS, é preciso converter (HMAC-SHA256 algorithm);
  22. 43.

    Operations ‣ Automação é o estado da arte; ‣ Servidores

    são efêmeros (descarte e recrie); ‣ Escolha a melhor região para seu negócio: custo, serviços disponíveis, regulamentações, latência;
  23. 44.

    Operations ‣ Versione sua infraestrutura (Infrastructure as Code); ‣ Repositório

    de artefatos próprio (evite serviços externos); ‣ Utilize múltiplas zonas de disponibilidade (AZs); ‣ Conheça os limites de cada serviço da AWS;
  24. 45.

    Operations ‣ Centralize seus logs (application, servers); ‣ Escale horizontalmente

    (se a arquitetura suportar); ‣ Segmente seus recursos nas camadas: visível, volátil e persistente;
  25. 47.

    Application Development ‣ Persista em object storage e não block

    storage; ‣ Gerencie o cache dos objetos corretamente (HTTP); ‣ Respeite o TTL dos registros de DNS (não faça cache);
  26. 48.

    Application Development ‣ Não guarde estado das sessões (stateless); ‣

    Logs com informações úteis (region, az, instance-id);