Páginas

7 de ago de 2012

Entendendo o AWS - Amazon Web Services


Recentemente tive a oportunidade de começar a trabalhar com a plataforma de serviços web da Amazon, o Amazon Web Services ou AWS. A amazon, um dos grandes líderes nos serviços web, iniciou em 2006 sua plataforma Cloud-Computing e acredito que todos conheçam esse fantástico conjunto de ferramentas denominado AWS.

O AWS contempla um leque muito grande, um conjunto de ferramentas capazes de hospedar qualquer aplicação de qualquer tamanho, uso ou complexidade. Até então, parece que simplesmente temos um “super-cloud”, mas, na verdade, o AWS tem um conceito de uso diferente das hospedagens que oferecem máquinas cloud-computing, muito famosas e em crescimento.

Para entendermos os conceitos por trás da plataforma Amazon, vamos, primeiramente, rever qual o conceito de cloud-computing que temos hoje. Acredito que o conceito de cloud-computing esteja bem sólido na mente da maioria dos desenvolvedores, principalmente os web. Cloud-Computing então, de modo simplório, seria uma máquina virtualizada dentro de um servidor de alta performance em algum datacerter de algum lugar. Termos controle total sobre essa máquina é importantíssimo quando temos uma aplicação com um nível de complexidade maior que o comum. Nessa versão virtualizada de máquina, são instalados todos os componentes necessários para o funcionamento da aplicação. Desde um portal com milhões de acessos à um web service para um aplicativo iOS, por exemplo.

O novo conceito introduzido pela Amazon, na verdade, está em suas instâncias computacionais. Com essa nova filosofia, a Amazon divide o trabalho feito por aquela máquina virtualizada em várias instâncias de máquina diferentes. Seria uma modularização dos componentes necessários à aplicação. Cada um dos serviços é entregue através de uma nova instância. Esses módulos entregam um um desempenho computacional muito maior com elevado nível de disponibilidade, sendo esta uma maneira bastante efetiva de se implantar redundância de uma aplicação.

Cada serviço oferecido pela AWS está listado em seu AWS Management Console , onde, com alguns cliques, é possível iniciar instâncias para banco de dados, armazenamento, envio de emails ou mensagens além de gerenciador de DNS, gerenciamento de alarmes. Todas ferramentas muito úteis quando se está lidando com aplicações de alta disponibilidade (meu caso).

A seguir, uma rápida definição dos tipos de instâncias que considero as principais no começo do desenvolvimento de uma plataforma sólida. No meu caso, trata-se de um website com alta disponibilidade, número de acessos considerável e elevado envio de emails.

Amazon Elastic Compute Cloud (Amazon EC2)


O Amazon EC2 é a versão amazon para um servidor Cloud-Computing. Como explicado anteriormente, a Amazon otimizou o conceito de instância, uma instância EC2 pode ser criada e posta e funcionamento em questão de minutos. Agregado a isso, existe o conceito chamado “Elastic-Cloud”, também presente nessas instâncias EC2 da Amazon.

Acesso SSH à instância é imediato e chama atenção as funções de segurança ofertadas pela Amazon para esse tipo de Cloud. A possibilidade de criar grupos de segurança, abrir ou fechar portas TCP ou UDP, criar snapshots dentre outros, entrega uma experiência bastante simples, confortável e segura ao EC2.

Amazon Simple Storage Service (Amazon S3)


O Amazon S3 é um tipo de instância amazon especializada em armazenamento. Com elevado nível de redundância e prevenção à falhas e quebra nos arquivos. Pode ser escolhido um entre os vários datacenters da amazon, melhorando assim latência ou economizando os gastos. Sistema de usuários e chaves de autenticação, garantindo a segurança dos arquivos, inclusive, funcionando de acordo com os protocolos internacionais PCI e HIPAA.

Amazon Relational Database Service (Amazon RDS) e Amazon DynamoDB


Aplicações web, em sua maior parte, sofrem de gargalo em banco de dados. Por ser a entrada de dados bloqueante da aplicação, por ser não tão bem configurado ou, na maioria dos casos, não ser bem utilizado por desenvolvedores, o banco de dados sempre requer uma maior atenção.

A Amazon fornece 2 soluções nessa área, também no formato de instâncias. Para atender demandas de dados relacionais, o Amazon RDS é escalável, seguro, com baixa latência e oferece instâncias dos mais conhecidos gerenciadores de banco de dados, como MySQL, Oracle o SQL Server.

Paralelamente, aplicações de alta velocidade e que já fazem uso de tecnologias NoSQL, podem utilizar o Amazon DynamoDB. A plataforma NoSQL da amazon é muito sólida, rápida e escalável. A Amazon garante que todas instâncias DynamoDB estão estruturadas e armazenadas utilizando SSDs.

Amazon Simple Email Service (Amazon SES)


O Amazon SES, atualmente meu objeto de estudo, é a instância Amazon para envio de emails. Com filtros digitais de conteúdo, o SES garante a mínima perda ou bloqueio dos email pelos filtros ISPs anti-spam. Antes do envio, a amazon utiliza filtros digitais para garantir que o email a ser enviado está dentro dos padrões especificados, garantindo assim, um envio de qualidade com a menor perda possível. No console de administração do Amazon SES, é possível visualizar a quota diária de envios, bem como o número de email enviados, rejeitados ou que não puderam ser entregues.

Amazon CloudFront


O Amazon CloudFront é uma ferramenta feita para servir conteúdo da melhor maneira possível. Também conhecida de CDN ( Content Delivery Network ) este tipo de entrega de conteúdo, geralmente estático, é otimizada através de servidores espalhados ao redor do globo, que identificam a origem da requisição, redirecionando-a para o servidor fisicamente mais próximo. Diminuindo lantência e ping de resposta é obtido grande qualidade e velocidade na entrega desse conteúdo. Se existe alguma parte de missão crítica na aplicação, seria uma boa ideia migrá-la para o CloudFront.

Se a ideia for servir conteúdo como fotos, músicas e vídeos, o CloudFront integra-se perfeitamente com o Amazon S3. Tornando a tarefa de armazenar e disponibilizar este conteúdo, muito mais simples, fácil e de grande qualidade.

Tem mais?


Sim, a Amazon ainda tem mais uma dúzia de outros serviços e configurações que podem moldar-se perfeitamente ao seu negócio. Todas elas estão listadas e detalhadamente explicadas no site da Amazon AWS em http://aws.amazon.com/pt/console/ .

Enquanto escrevo este artigo, estou desenvolvendo uma integração para simplificar o envio de emails utilizando o Amazon SES. Logo estará no meu GitHub. Publicarei explicando e atualizarei este artigo, adicionando o link para o próximo artigo. Vamos olhar mais de perto a API do AWS e, em especial, suas funções para envio de emails.

Leia esse documento no Google Docs!

3 comentários:

  1. Amigo parabéns pelo seu artigo!
    Fiquei muito surpreso por não ter nenhum comentário.
    Vou trabalhar com aws em breve, no momento ainda uso hospedagem comum e estou migrando lentamente para VPS.

    ResponderExcluir
  2. Parabéns cara, boa publicação.
    Estou começando a utilizar o SNS e fico no aguardo para ver o seu código utilizando o SES.
    Continue assim! Obrigado.

    ResponderExcluir
  3. Boa matéria, ja tinha lido a respeito e estou atualmente migrando tudo para AWS. Até o momento tudo ok.

    ResponderExcluir