AWS Well-Architected Framework: conheça os cinco pilares - HypeFlame
by salernorafael 21 de maio de 2021 21 de maio de 2021
A AWS criou o Well-Architected Framework para ajudar quem está trabalhando na nuvem da AWS, mas os seus pilares vão além. Eles também servem para quem está criando ou migrando sistemas na cloud em geral.
Isso é possível porque paper indica as melhores práticas para criar o design de uma arquitetura cloud native com uma operação confiável, segura e eficiente. Mas também é útil para revisar arquiteturas de cloud que já existem. Nesse caso, permitindo que você avalie os pontos que podem melhorar.
Não é para menos, já que as melhores práticas do paper foram baseadas em anos de experiência em arquitetura de soluções em várias áreas de negócio. Também levaram em conta os diferentes usos dos clientes da AWS.
Como resultado, o AWS Well-Architected Framework tem cinco pilares: excelência operacional, segurança, confiabilidade, eficiência de desempenho e otimização de custos. Além disso, ele utiliza alguns princípios de design geral. Vamos explicar cada um deles.
Afinal, o que são os cinco pilares do AWS Well-Architected Framework? Pense que a construção de um software é como a de um edifício: se você não tiver bases sólidas, pode ter problemas.
Na arquitetura de software, os cinco pilares fazem parte dessa base. Se você ignorá-los, no entanto, será mais difícil desenvolver um bom sistema. Já se levá-los em conta, terá um sistema mais estável e eficiente. A seguir, vamos explicar como cada um dos pilares funciona.
O pilar de excelência operacional foca na execução e no monitoramento de sistemas de forma eficiente, com o objetivo de agregar valor ao negócio. Isso implica a melhoria contínua de processos e procedimentos.
Fazer alterações pequenas, reversíveis e frequentes
Refinar os procedimentos de operações com frequência
Antecipar falhas
Aprender com todas as falhas operacionais
Melhores práticas de excelência operacional
Os times de operações devem entender bem seu negócio e a necessidade de seu cliente para dar o melhor suporte possível a ele. Isso porque são eles que vão criar e utilizar procedimentos para responder a eventos operacionais. Ou seja, validam sua efetividade através do suporte que prestam.
Esse times podem coletar e usar dados para medir se estão entregando o valor esperado ao negócio, e dar feedback ao cliente. Além disso, devem trabalhar na recuperação rápida de alterações que não têm o resultado desejado.
Mas as exigências e prioridades dos negócios mudam o tempo todo. Por isso, essas equipes precisam projetar operações que sirvam de apoio para a evolução dessas necessidades. Seu objetivo é responder da melhor forma às mudanças e incorporar as lições que aprenderam a partir da sua performance.
O pilar de segurança foca na proteção de dados, sistemas e recursos. Ele mostra como usar as tecnologias da cloud para melhorar sua segurança.
Implementar uma base de identidade forte
Ativar a rastreabilidade
Aplicar segurança em todas as camadas
Automatizar as práticas recomendadas de segurança
Proteger os dados em trânsito e em repouso
Manter pessoas longe dos dados (reduzir a necessidade de acesso direto aos dados)
Preparar-se para eventos de segurança
Antes de arquitetar um sistema, você tem que pensar nas práticas de segurança. Ou seja, tem que estar preparado para identificar incidentes de segurança e proteger o sistema contra ataques.
Para isso, você deve usar técnicas e ferramentas de proteção. Elas são muito importantes, pois evitam que você tenha prejuízo. Também ajudam a cumprir obrigações legais. Mas, para que sejam efetivas, dê preferência a processos e práticas já testados. Assim você responderá melhor a incidentes de segurança.
Com o modelo de responsabilidade compartilhada da AWS, as empresas podem usar a cloud para ter segurança e atingir seus objetivos de compliance. Isso porque a AWS assegura fisicamente sua infraestrutura. Ou seja, como cliente da AWS, você pode simplesmente focar na arquitetura do seu sistema.
Além disso, a cloud AWS disponibiliza de ferramentas de segurança de dados, e tem uma resposta automática a eventos de segurança.
O pilar de confiabilidade tem a ver com a capacidade do sistema rodar de acordo com o esperado, de forma eficiente e no momento certo. Isso inclui se recuperar de falhas. Para isso, você pode usar recursos de computação.
Recuperar-se automaticamente de falhas
Procedimentos de teste de recuperação
Escalar horizontalmente para aumentar disponibilidade do sistema agregado
Parar de adivinhar capacidade
Gerenciar mudanças com automação
Melhores práticas de confiabilidade
Para atingir a confiabilidade, você deve ter um ambiente com serviços e topologia de rede que suportem a carga de trabalho. Isso porque a arquitetura deve estar apta a prevenir e mitigar falhas. Ou seja, o sistema deve suportar mudanças de requisitos e conseguir se recuperar sozinho.
Antes de mais nada, os requisitos que dão confiabilidade ao sistema devem ser compatíveis. Por exemplo, você tem que ter uma banda de rede adequada no data center. O problema é que, muitas vezes, pontos como esse são ignorados por não serem do escopo de um projeto único.
Na AWS é diferente. Isso porque a maioria desses requisitos fundamentais para a confiabilidade do sistema já estão incorporados na cloud. Alguns podem ser utilizados de acordo com a necessidade.
A cloud da AWS fornece a banda e o processamento compatíveis com as necessidades de cada cliente. Ou seja, é só alocar os recursos conforme a demanda.
O pilar de eficiência de desempenho fala sobre utilizar recursos de computação para atender os requisitos do sistema. O objetivo é manter sua eficiência mesmo quando as demandas mudam e evoluem.
Democratizar tecnologias avançadas (torná-las mais fáceis de utilizar)
Ser global em minutos
Usar arquiteturas serverless
Experimentar com mais frequência
Simpatia mecânica (‌utilizar tecnologias que se adequem melhor a seus objetivos)
Para construir uma arquitetura de alta performance, utilize uma abordagem dirigida por dados (data-driven). Tenha em mente que você deve levar em conta todos os aspectos da arquitetura, desde a configuração de tipo de recursos até o alto nível.
Mas qual é o objetivo de reunir dados? Eles permitem que você reveja suas escolhas de tempos em tempos. Isso ajuda você a tomar decisões melhores e a evoluir sua cloud AWS. Além disso, o monitoramento permite que você saiba antes quando pode ter problemas de desempenho.
Outro ponto importante para melhorar sua arquitetura é realizar trade-offs regularmente. Isso porque a melhor solução mais adequada à sua carga de trabalho varia. Para melhorar o desempenho, você pode combinar mais de uma. Aliás, cargas de trabalho bem arquitetadas geralmente utilizam múltiplas soluções.
O pilar de otimização de custos fala sobre entregar valor de negócio com o menor custo possível. Para isso, você deve evitar ou eliminar gastos desnecessários.
Implementar uma gestão de custos financeiros de cloud
Adotar um modelo de consumo (gastar somente com o que você realmente precisa e quando precisa)
Medir a eficiência geral
Parar de gastar dinheiro em operações do data center
Analisar e atribuir despesas
Melhores práticas de otimização de custos
Decisões de design muitas vezes são guiadas pela pressa, não por dados. O problema é que isso impede que se comparem diferentes opções para escolher a implantação com melhor custo-benefício. Como resultado, muitas implantações são caras e pouco otimizadas.
Assim como nos outros pilares, você deve levar alguns trade-offs em conta para otimizar custos. Por exemplo, se você acha mais importante diminuir o tempo para mercado ou economizar. Em alguns casos, o melhor é ganhar velocidade, mesmo que saia um pouco mais caro. Mas nem sempre é assim.
De um modo geral, escolher os serviços, recursos e configurações mais apropriados para sua carga de trabalho é a melhor forma de economizar. Por exemplo, existem aplicações que só rodam uma vez ao dia, e não precisam guardar estado. Ou seja, não necessitam de um servidor somente para isso. Nesse caso, você pode utilizar serverless e gastar muito menos do que para manter um servidor.
Princípios de design geral na AWS Well-Architected
Além dos cinco pilares, o AWS Well-Architected Framework leva em conta alguns princípios de design geral. Veja como você pode utilizá-los na cloud:
Pare de tentar adivinhar sua capacidade: se você errar ao implantar uma carga de trabalho, pode ter dois tipos de problemas. Um deles é ficar com com recursos ociosos, e o outro é ter problemas de desempenho devido à capacidade limitada. Com a cloud, você elimina isso, porque pode usar recursos de acordo com a necessidade, já que ela amplia e diminui automaticamente.
Teste sistemas em escala de produção: na cloud, você só paga pelo ambiente quando está utilizando ele. Ou seja, pode criar um ambiente de teste em escala de produção sem gastar muito. É só desligá-lo depois de realizar os testes.
Automatize a experimentação de arquiteturas: a automação permite que você replique cargas de trabalho, evitando despesas com esforço manual. Além disso, você pode medir o impacto, e reverter os parâmetros quando necessário.
Permita arquiteturas evolutivas: em um ambiente tradicional, a arquitetura geralmente implementa eventos estáticos, com poucas versões de um sistema. Na cloud, não. Você pode automatizar e testar a demanda. Isso reduz o risco de impacto no design, porque permite que o sistema continue a evoluir.
Dirija arquitetura utilizando dados: na cloud, é possível coletar dados da arquitetura do sistema. Assim, você pode descobrir como ela impacta no comportamento de sua carga de trabalho. Além disso, os dados ajudam você a tomar decisões baseada em fatos.
Melhore através de game days: faça testes regularmente. Escolha dias específicos, ou game days, para simular eventos em produção. Eles são importantes porque ajudam você a entender o que deve melhorar.
Conclusões sobre o AWS Well-Architected Framework
Como vimos, o Well-Architected Framework indica as melhores práticas com base nos cinco pilares e em princípios de design geral. Ele serve para que você crie arquiteturas que sustentem da melhor forma a carga de trabalho.
A partir disso, o paper dá o que você precisa para desenvolver um sistema com uma operação confiável, segura e eficiente. Por isso, o paper serve tanto para quem está migrando para a cloud quanto para quem já está na cloud e busca melhorar sua operação.