Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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.

Alexandre Malucelli

August 15, 2017
Tweet

Other Decks in Technology

Transcript

  1. Serviços da AWS: 

    Melhores Práticas e Lições Aprendidas
    Alexandre Guimarães Malucelli
    Site Reliability Engineering

    View Slide

  2. www.fluig.com

    View Slide

  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

    View Slide

  4. Amazon VPC

    View Slide

  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;

    View Slide

  6. Virtual Private Cloud (VPC)
    vpc-us-east-1-fluig1
    vpc-sa-east-1-fluig2
    vpc-eu-west-1-fluig3
    componente
    região
    ambiente

    View Slide

  7. Virtual Private Cloud (VPC)
    subnet-us-east-1a-pv-fluig2-elb1
    subnet-us-east-1b-pv-fluig2-elb2
    subnet-us-east-1a-pb-fluig1-elb1
    subnet-us-east-1b-pb-fluig1-elb2
    subnet-us-east-1c-pb-fluig1-elb3
    componente
    região
    ambiente
    tipo da rede
    finalidade

    View Slide

  8. Virtual Private Cloud (VPC)
    acl-us-east-1-pb-fluig1-elb
    acl-us-east-1-pv-fluig1-app
    acl-us-east-1-pb-fluig1-nat
    componente
    região
    ambiente
    tipo da rede
    finalidade

    View Slide

  9. Virtual Private Cloud (VPC)
    subnet-us-east-1a-pb-fluig1-app1
    subnet-us-east-1a-pb-fluig1-app2
    subnet-us-east-1b-pb-fluig1-app1
    subnet-us-east-1c-pb-fluig1-app1
    acl-us-east-1-pb-fluig1-app

    View Slide

  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

    View Slide

  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;

    View Slide

  12. Amazon EC2

    View Slide

  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;

    View Slide

  14. Amazon Auto Scaling

    View Slide

  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;

    View Slide

  16. Auto Scaling
    asg-us-east-1-pv-fluig1-app1
    asg-us-east-1-pv-fluig1-web1
    asg-us-east-1-pv-fluig1-api1
    componente
    região
    ambiente
    tipo da rede
    finalidade

    View Slide

  17. Auto Scaling
    lc-us-east-1-pv-fluig1-app1
    lc-us-east-1-pv-fluig1-web1
    lc-us-east-1-pv-fluig1-api1
    componente
    região
    ambiente
    tipo da rede
    finalidade

    View Slide

  18. Amazon ELB

    View Slide

  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);

    View Slide

  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;

    View Slide

  21. Elastic Load Balancer (ELB)
    elb-us-east-1-pb-fluig1-app1
    elb-sa-east-1-pb-fluig1-web1
    elb-sa-east-1-pv-fluig1-api1
    componente
    região
    ambiente
    tipo da rede
    finalidade

    View Slide

  22. Amazon Route 53

    View Slide

  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);

    View Slide

  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)

    View Slide

  25. Amazon CloudFront

    View Slide

  26. CloudFront
    ‣ Origem S3 (block storage) é diferente de S3 Website
    Endpoint (HTTP Custom Origin);
    ‣ Cuidado com CNAMEs configurados para wildcard
    subdomains (*.example.com);

    View Slide

  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;

    View Slide

  28. Amazon S3

    View Slide

  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;

    View Slide

  30. Amazon Relational
    Database Service

    View Slide

  31. Relational Database Service (RDS)
    ‣ Sempre crie um parameter e option group customizado;
    ‣ Conheça seus limites e funcionalidades disponíveis;

    View Slide

  32. Amazon CloudWatch

    View Slide

  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);

    View Slide

  34. Amazon CloudFormation

    View Slide

  35. CloudFormation
    ‣ Não atualize componentes manualmente;
    ‣ Utilize os helper scripts em EC2 para controle da stack;
    ‣ Quebre e segmente seus templates;

    View Slide

  36. Amazon IAM

    View Slide

  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;

    View Slide

  38. Account & Billing

    View Slide

  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;

    View Slide

  40. Amazon Simple Email Service

    View Slide

  41. Simple Email Service
    ‣ Gerencie retornos de bounces e complains;
    ‣ Autenticação SMTP não aceita credenciais AWS, é preciso
    converter (HMAC-SHA256 algorithm);

    View Slide

  42. Operations

    View Slide

  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;

    View Slide

  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;

    View Slide

  45. Operations
    ‣ Centralize seus logs (application, servers);
    ‣ Escale horizontalmente (se a arquitetura suportar);
    ‣ Segmente seus recursos nas camadas: visível, volátil e
    persistente;

    View Slide

  46. Application Development

    View Slide

  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);

    View Slide

  48. Application Development
    ‣ Não guarde estado das sessões (stateless);
    ‣ Logs com informações úteis (region, az, instance-id);

    View Slide

  49. Obrigado!

    Alexandre Guimarães Malucelli
    [email protected]

    View Slide