O blog da AWS

Escolha o serviço correto da AWS para implantar sua aplicação web ou website na nuvem da AWS

Por Ibrahim Cesar, Arquiteto de Soluções na AWS

 

Aplicações web e websites fazem parte dos projetos de desenvolvimento de produtos e grande parte das cargas de trabalho na indústria, quer sejam manipulados por indivíduos ou empresas.

Para auxiliar na tomada de decisão de qual serviço utilizar para implementar seu website ou sua aplicação web na AWS, iremos explorar o guia prescrito de recomendação AWS Prescriptive Guidance: Choosing the right AWS service to deploy your website or web application in the AWS Cloud.

Um website estático é definido como não possuindo nenhum tipo de processamento por um servidor ou outras aplicações. Usualmente corresponde a apenas HTML, JavaScript e CSS, podendo realizar chamadas de API com as interações dos usuários. Websites dinâmicos envolvem um servidor e seu conteúdo é gerado ou modificado dinamicamente, de acordo com os requisitos da solicitação.

 

Árvore de decisão

 

Explorando cenários

Dentre as opções de site estático,  todas pressupõem que seus objetos estejam armazenados no Amazon Simple Storage Service (S3), serviço de armazenamento de objetos, sejam acessadas através do Amazon CloudFront, serviço de entrega de conteúdo com baixa latência e altas velocidade de transferência, que é automaticamente criado e gerenciado pelo AWS Amplify, uma solução completa que permite que desenvolvedores frontend para plataformas móveis e Web criem, enviem e hospedem aplicações full-stack na AWS.

O uso de S3 com CloudFront permite que todos objetos permaneçam privados, sendo acessíveis apenas através do controle de acesso à origem (OAC) e identidade do acesso de origem (OAI), configurados entre os serviços. Além disso, a experiência dos usuários finais ao acessar o website é melhorada, uma vez que o conteúdo é distribuído em caches em pontos de presença, reduzindo a latência.

Diversos frameworks e bibliotecas em JavaScript como React, Angular e Vue geram websites estáticos e realizam ações dinâmicas, com chamadas de APIs através do navegador, que podem se comunicar com sistemas diversos ou empregar recursos de computação sem servidor, como Amazon API Gateway, serviço gerenciado que permite que desenvolvedores criem, publiquem, mantenham, monitorem e protejam APIs em qualquer escala com facilidade, e AWS Lambda um serviço de computação sem servidor e orientado a eventos que permite executar código para praticamente qualquer tipo de aplicação ou serviço de backend sem provisionar ou gerenciar servidores.

O AWS Amplify provê bibliotecas e ferramentas para ajudar o desenvolvimento de aplicações web, tornando mais fáceis as atividades de desenvolver, hospedar e colocar em produção aplicações fullstack na AWS.

Com a hospedagem do Amplify é possível até mesmo fazer a implantação de aplicações que utilizam frameworks JavaScript como o Next.js, empregando server-side rendering, ou renderização no lado do servidor. Esta flexibilidade faz com que o Amplify se posicione como uma boa alternativa para o desenvolvimento de aplicações web.

Outra característica do Amplify é oferecer integração com diversos repositórios e incorporar CI/CD ao processo, além de possibilitar diversas integrações com serviços da AWS. Oferece também diversas ferramentas que auxiliam no desenvolvimento, como o Amplify Studio e sua biblioteca de UI.

Amazon Lightsail é um serviço virtual private server (VPS) para as necessidades de computação, armazenamento e rede. Oferece um atrativo de possuir o custo estimado dos recursos provisionados e uma administração unificada. É apropriado para migração de plataformas como WordPress, Ghost, Joomla, Drupal, Magento, Redmine, LAMP, LEMP, MEAN e Django, dentre outros.

AWS Elastic Beanstalk suporta carregar o código de sua aplicação em PHP, Java, Python, Ruby, Node.js, .NET, Go, e mesmo aplicações web em Docker, implantando de forma gerenciada, com base em configurações de uso de recursos.

O Amazon Elastic Cloud (EC2) é a opção que oferece maior controle, porém, isso significa que você deverá realizar todo o gerenciamento dos recursos — do sistema operacional, balanceamento de carga, rede, até todas as demais configurações e patches que forem necessários. Por permitir o maior controle, exige o maior esforço de administração.

 

Soluções em contêineres

Diversos serviços da AWS suportam o desenvolvimento e a implantação de aplicações web em contêineres. Você pode implementar a orquestração em alguma capacidade ou escolher um serviço totalmente gerenciamento:

  • Amazon EC2 lhe dá controle total para rodar contêineres e provê opções como hosts e instâncias dedicadas, além de gestões mais complexas e estratégicas de suas cargas de trabalho. Ao utilizar essa opção, você escolherá o ambiente de execução de Containers de sua preferência. Por permitir o maior controle, exige o maior esforço de administração;
  • Amazon Elastic Container Service (ECS) oferece um serviço de orquestração de contêineres totalmente gerenciado que facilita a implantação, o gerenciamento e a escala de aplicações integradas ao ecossistema da AWS.
  • Amazon Elastic Kubernetes Service (EKS) é um serviço gerenciado do Kubernetes para executar o Kubernetes na nuvem AWS e em datacenters on-premises. Importante destacar que utilizando o EKS, seu time não necessita mais gerenciar o . Portanto, permite a times que empregam Kubernetes se beneficiar e utilizar todo o ecossistema existente, assim como expandir o uso da nuvem. O Amazon EKS Blueprints auxilia na criação de ambientes, através de Infraestrutura como Código, fornecendo diversas integrações para acelerar a implementação de cargas de trabalho em Kubernetes na AWS.
  • AWS Fargate é uma opção tanto para ECS ou EKS, e permite a execução de cargas de trabalho conteinerizadas sem servidor, com pagamento conforme o uso. O uso do Fargate é indicado para cargas de trabalho imprevisíveis, pois não há necessidade de aguardar o provisionamento um novo nó, em alguns casos, para atender a demanda;
  • ECS e EKS também possuem formas de executar contêineres em sua própria infraestrutura ou em ambientes híbridos, com as versões Amazon ECS Anywhere e Amazon EKS Anywhere;
  • AWS App Runner é um serviço de aplicações de contêineres totalmente gerenciado que permite criar, implantar e executar aplicações Web e serviços de API em contêineres sem exigir infraestrutura prévia ou experiência em contêineres.

 

Conclusão

Neste blog post, exploramos as recomendações prescritivas do AWS Prescriptive Guidance: Choosing the right AWS service to deploy your website or web application in the AWS Cloud, que oferece uma árvore de decisão para auxiliar na tomada de decisão de qual serviço da AWS implementar websites ou aplicações web, sejam estáticos, dinâmicos ou utilizando contêineres. A AWS provê serviços que atendem os mais diversos casos de uso para auxiliar na implementação de websites e aplicações web.

Devido às características de cada serviço, é interessante explorar os mais diversos tipos para avaliar o que mais se adapta à sua aplicação, já que muitos permitem, com poucos cliques, implantar rapidamente aplicações. Uma vez definido, é possível utilizar a calculadora de preços da AWS para estimar o custo de sua solução.

Desta forma, colocamos em prática um dos princípios de design de arquitetura na nuvem, que se trata de considerar a afinidade mecânica, ou seja, utilizar a abordagem tecnológica que se alinhe melhor às suas metas. Este é um dos princípios de design de arquitetura do pilar de eficiência de performance, um dos pilares do AWS Well-Architected, que ajuda arquitetos de nuvem a construir infraestruturas seguras, resilientes, eficientes e de alta performance, para aplicações e cargas de trabalho. Baseado em seis pilares (excelência operacional, segurança, confiabilidade, eficiência de performance, otimização de custos e sustentabilidade), o AWS Well-Architected fornece uma abordagem consistente, para que clientes e parceiros avaliem arquiteturas e implementem designs que podem se expandir com o tempo.

 

Recursos

Informações gerais

Documentações dos serviços AWS

Tutoriais e guias

Apresentações do AWS re:Invent

 


Sobre os autores

Ibrahim Cesar é Arquiteto de Soluções na AWS, para o segmento de Enterprise. Builder, atua a mais de 15 anos no mercado de tecnologia, tendo experiência desde o desenvolvimento até a gestão. É entusiasta do Well-Architected Framework como ferramenta para avaliação e melhoria dos projetos na nuvem. Fora do trabalho, é um leitor voraz e participa ativamente de iniciativas open-source e projetos de mentoria.

 

 

 

 

Revisores

Luis Miguel é arquiteto de soluções na AWS. Ele possui mais de 10 anos de experiência em arquitetura de soluções desde soluções on-prem e cloud, com foco em resiliência, performance e automação. Hoje está se especializando em computação serverless. No seu tempo livre gosta de ler, jogar um bom vídeo game e passar o tempo com a família e amigos.

 

 

 

 

Neuton Assis é Arquiteto de Soluções na AWS, para o segmento de Enterprise. Antes disso, trabalhou por mais de 10 anos na arquitetura e desenvolvimento de softwares voltados para automação de atividades de TI, auditoria de sistemas e gestão de identidade e acesso, atuando principalmente em ambientes Microsoft. Atualmente, auxilia clientes e parceiros da AWS a terem sucesso na jornada para computação em nuvem.

 

 

 

 

Davi Garcia está localizado no Brasil e é arquiteto de soluções da AWS especializado em modernização de infraestrutura e aplicações na nuvem, acelerando a jornada de clientes de diversos segmentos na América Latina. Possui larga experiência em plataforma de containers, arquiteturas nativas de nuvem e automação. No seu tempo livre, ele gosta de contribuir com projetos open-source, se divertir em família com jogos de tabuleiros e viajar