Concrete Logo
Hamburger button

Well Architected Framework: o padrão Amazon de qualidade

  • Blog
  • 29 de Agosto de 2018

Pensando em facilitar o aprendizado, não só o meu, mas de quem quiser tirar a certificação AWS, consegui reunir neste artigo alguns pontos centrais do documento da Amazon.

Para criar arquiteturas bem distribuídas, tolerantes a falhas, altamente disponíveis, confiáveis e resilientes para suas aplicações, a Amazon criou o Well Architected Framework, um padrão a ser seguido por arquitetos de soluções, sysadmins e desenvolvedores.

Do que se trata?

Elaborado e lançado em um whitepaper no re:invent 2016 e bem comentado no re:invent 2017 por Werner Vogels, CTO da Amazon, o Well Architected Framework foi criado para garantir aos clientes que usam nuvem e aos clientes que já nasceram na nuvem da AWS uma abordagem consistente para avaliar arquiteturas e garantir que áreas fundamentais não sejam negligenciadas.

Baseado em cinco pilares, com princípios de design e questões relacionadas, quando se constrói sistemas em nuvem, esse modelo ajuda a entender os prós e contras quando se toma a decisão de construir sistemas na AWS.

Pilares do Well-Architected Framework

1. Excelência Operacional

A capacidade de rodar e monitorar sistemas para entregar valor de negócio e continuamente fornecer suporte aos processos e procedimentos, melhorando a execução de suas operações ao longo do tempo e garantindo que seu time tenha os procedimentos e habilidades para operar uma carga de trabalho.

O foco e melhores práticas dessa área incluem:

Preparar – Envolver as equipes de negócio e desenvolvimento na definição de propriedades operacionais;

Operar – Qualquer evento na qual você cria alerta deve ter um runbook associado ao playbook, além disso, usuários devem ser notificados não apenas sobre falhas em seus serviços como também sobre sua normalidade;

Evoluir – Aprenda com a experiência, compartilhe seus aprendizados, sejam eles positivos ou negativos.

Princípios de design:

Realizar operações com código e documentação sempre anotada, fazer alterações pequenas, reversíveis e frequentes, refinar procedimentos de operações, além de antecipar falhas e aprender com as mesmas.

Questões relacionadas:

  • Quais fatores direcionam suas prioridades operacionais?
  • Como você projeta sua carga de trabalho para permitir operacionalidade?
  • Como você sabe que está pronto para suportar uma carga de trabalho?
  • Quais fatores direcionam sua compreensão da saúde operacional?
  • Como você gerencia eventos operacionais?
  • Como você evolui as operações?

2. Segurança

A capacidade para se proteger a informação, sistemas e ativos enquanto agrega valor de negócio através de avaliações e mitigação de estratégias.

O foco e as melhores práticas dessa área incluem:

Identidade e gerenciamento de acesso – Garantir que apenas usuários autorizados e autenticados podem acessar seus recursos;

Detetor de controles – Controle do ciclo de vida para estabelecer linhas de base de operações, auditorias internas para examinar controles, alertas automatizados;

Proteção da infraestrutura – Engloba metodologias de controle necessários para atender melhores práticas e obrigações regulamentares;

Proteção de dados – Uso de controle e padrões para manter a confidencialidade de seus dados enquanto preserva a integridade e disponibilidade;

Resposta a incidentes – Como os processos precisam estar no lugar para mitigar e responder a um potencial incidente de segurança.

Princípios de design:

Implementar uma forte base de identidade, permitir rastreabilidade, aplicar segurança em todas as camadas, automatizar segurança com melhores práticas, proteger dados em trânsito e em rest, além de se preparar para eventos de segurança.

Questões relacionadas:

  • Como você gerencia credenciais, acessos humanos a serviços e acesso programático para a sua carga de trabalho?
  • Como você toma ciência dos eventos de segurança e se prepara para responder a um incidente com sua carga de trabalho?
  • Como você protege seus recursos de computação e redes contra ameaças ?
  • Como você se mantém atualizado com os recursos de segurança e ameaças de segurança da indústria?
  • Como você classifica seus dados e gerencia os mecanismos de proteção de dados?
  • Como você protege seus dados em trânsito e em repouso?

3. Confiabilidade

A capacidade de um sistema recuperar sua infraestrutura de falhas de serviço, adquirir dinamicamente recursos de computação para atender a demanda e mitigar interrupções tais como “configurações incorretas” ou falhas relacionadas a problemas com rede.

O foco e melhores práticas dessa área incluem:

Fundamentos – Antes de arquitetar qualquer sistema, requisitos fundamentais devem influenciar a confiabilidade. Influência de estar no lugar, por exemplo, você implementou um banco de dados na nuvem, porém não se atentou em usar replicas de leitura (read replicas), ou seja, essa neglicência pode ter um impacto significativo na capacidade de entregar um sistema confiável. Leve em conta os limites físicos e restrições de recursos.

Gerenciamento de Mudanças – Esteja ciente de como as mudanças afetam um sistema para planejar de forma pro-ativa. Monitore e avalie para inicialmente identificar tendências.

Gerenciamento de falhas – Em qualquer sistema com alta complexidade é esperado que ocorram falhas, deve ser de seu interesse conhecer como se tornar consciente de falhas, responder e previnir para não ocorrer no futuro.

Princípios de design:

Procedimentos de recuperação de testes, recuperações automáticas depois da falha, escala horizontal para aumentar a disponibilidade do sistema agregado, pare de adivinhar a capacidade e gerencie mudanças na automação.

Questões relacionadas:

  • Como você está gerenciando os limites de serviço da AWS em suas contas?
  • Como planeja a sua topologia de rede na AWS?
  • Como o seu sistema se adapta às mudanças na demanda?
  • Como você monitora recursos da AWS ao implementar mudanças?
  • Como você faz backup de dados?
  • Como o seu sistema suporta falhas de componentes enquanto testa a resiliência?
  • Como você planeja a recuperação de desastres?

4. Eficiência no desempenho

A capacidade de usar recursos computacionais eficientemente para atender requisitos de sistema e manter a eficiência como demanda de mudanças e evolução de tecnologias.

O foco e melhores práticas dessa área incluem:

Seleção – Configuração ideal do servidor para uma arquitetura específica pode variar com base no design de suas aplicações;

Revisão – Revise sua seleção, pois a AWS continua a inovar com novos tipos de recursos e funcionalidades;

Monitoramento – Faça bom uso do cloudwatch para monitorar e enviar alertas, use automação para trabalhar em torno de desempenho, use “triggers” para ações nos serviços;

Trade-off – Você pode trocar espaço de armazenamento, durabilidade deste espaço versus tempo ou latência para fornecer mais desempenho.

Princípios de design:

Disponibilizar tecnologias mais avançadas, tornar-se global em minutos, usar arquiteturas serveless, experimentar mais frequentemente novas tecnologias.

Questões relacionadas:

  • Como você seleciona a arquitetura de melhor desempenho?
  • Como seleciona a sua solução de computação/ banco de dados ?
  • Como configura a sua solução de rede?
  • Como você evolui a sua carga de trabalho para aproveitar os novos lançamentos?
  • Como monitora os seus recursos para garantir que eles estejam funcionando conforme o esperado?
  • Como você usa e equilibra suas soluções para melhorar o desempenho?

5. Otimização de custos

A capacidade de evitar ou eliminar custos desnecessários ou a subutilização de recursos.

O foco e melhores práticas dessa área incluem:

Recursos de baixo custo – Usar instâncias e recursos apropriados para seu sistema é a chave pra redução de custos;

Combine oferta e demanda – A oferta corresponde a demanda e oferece o menor custo para um sistema. A demanda pode ser fixa ou variável, exigindo métricas e automação para garantir que a gestão não se torne um custo significativo. Se puder antecipar mudanças na demanda, vai economizar mais;

Conscientização de Gastos – Esta atribuição precisa de custos que permite você entender seu custo em vários serviços e unidades de negócios. No entanto, a facilidade de uso e capacidade sob demanda virtualmente ilimitada pode exigir uma nova maneira de pensar sobre gastos;

Otimizar ao longo do tempo – Como a AWS lança novos serviços e funcionalidades nos recursos existentes, é uma boa prática reavaliar suas decisões de arquiteturas existentes para garantir que elas contribuem para ser as mais rentáveis possíveis.

Princípios de design:

Adotar um modelo de consumo, beneficiar-se de economias de escala, parar de gastar dinheiro com operações de datacenters, analisar e atribuir despesas, usar serviços gerenciados para reduzir custo de propriedade.

Questões relacionadas:

  • Como você avalia o custo para atender às metas de consumo com as diversas opções existentes ao selecionar serviços da AWS?
  • Como você usa modelos de precificação para reduzir custos?
  • Como planeja taxas de transferência de dados?
  • Como combina a oferta de recursos com a demanda do cliente?
  • Como governa e monitora o uso e o custo?
  • Como você desmantela recursos e avalia novos serviços?

Adote este framework para a sua arquitetura. Isso vai ajudar você a produzir sistemas estáveis e eficientes que permitem focar melhor em seus requisitos.

Mais detalhes aqui.

Aqui na Concrete, o capítulo de DevOps é o motor para a agilidade dos times, responsável por pensar estrategicamente na estrutura e arquitetura final, garantindo a qualidade. Justamente por automatizar processos e melhorar o desempenho do time de desenvolvimento, nossos “DevOps” trabalham desde o início da criação dos produtos, implementando processos de integração e entrega contínua, utilizando servidores de CI, repositórios de código, scripts de automatização e relatórios. Quer trabalhar com os melhores? Só vem! concrete.com.br/vagas