Computação em nuvem com o Amazon Web Services, Parte 1: Introdução

Quando é mais inteligente alugar do que comprar

Aprenda conceitos básicos do Amazon SimpleDB (SDB) e explore algumas das funções fornecidas pela boto, uma biblioteca Python de software livre para interagir com o SDB. Nesta série "Computação em nuvem com o Amazon Web Services", aprenda sobre computação em nuvem usando o Amazon Web Services. Explore como os serviços fornecem uma alternativa atrativa para a arquitetura e construção de aplicativos escaláveis e confiáveis. Este primeiro artigo explica os recursos dos blocos de construção dessa infraestrutura virtual. Aprenda como é possível usar o Amazon Web Services para construir sistemas de escala da Web.

Prabhakar Chaganti, CTO, Ylastic, LLC

Prabhakar Chaganti photoPrabhakar Chaganti é o diretor de tecnologia (CTO) da Ylastic, uma empresa que está criando uma interface unificada exclusiva para arquitetar, gerenciar e monitorar todo o ambiente de computação da nuvem AWS de um usuário: EC2, S3, SQS e SimpleDB. Ele é autor de dois livros recentes, Xen Virtualization e GWT Java AJAX Programming É também vencedor do prêmio de escolha da comunidade pelo dispositivo virtual mais inovador no VMware Global Virtual Appliance Challenge.



Jorge A. Salgado, Editor en Jefe, <a href="http://www.ibm.com">IBM</a>

Antes de unirse a IBM, Jorge A. Salgado, editor en jefe de developerWorks y anfitrión del developercast, administró páginas corporativas e informativas de tecnología, telecomunicaciones y entretenimiento. Asimismo, ha ocupado puestos relacionados con medios digitales como redacción, diseño, programación, producción multimedia y redes sociales.



12/Mai/2010

O que é computação em nuvem?

Computação em nuvem pode ser vagamente definida como o uso de recursos de computação escaláveis fornecidos como um serviço fora do seu ambiente no esquema de pagamento de acordo com o uso. Você usa só o que necessita e paga somente pelo que usar. É possível acessar qualquer um dos recursos presentes na "nuvem", a qualquer momento e de qualquer lugar da Internet. Não é preciso se preocupar com a maneira com que as coisas estão sendo mantidas nos bastidores da nuvem.

A computação em nuvem deriva de uma representação comum em diagramas de arquitetura de tecnologia da Internet ou disponibilidade de IP, ilustrada como uma nuvem. A computação em nuvem ganhou atenção em 2007 e tornou-se uma solução popular para o problema de escalabilidade horizontal.

A nuvem é responsável por ser altamente disponível e responsiva às necessidades de seu aplicativo. A computação em nuvem também é chamada de computação de utilitário ou computação em grade.

A computação em nuvem é um deslocamento de paradigma na maneira que arquitetamos e entregamos aplicativos escaláveis. No passado, empresas de sucesso gastaram tempo e recursos preciosos para a construção de infraestruturas que, por sua vez, forneciam-lhes uma vantagem competitiva. Frequentemente, era o caso de "Construa-a e eles virão." Na maioria dos casos, essa abordagem:

  • Deixava grandes áreas de capacidade de computação não usadas que tomavam espaço em grandes datacenters.
  • Necessitava de alguém para tomar conta dos servidores.
  • Possuía custos de energia associados.

A energia de computação não usada era desperdiçada, sem haver uma maneira de ela ser usada por outras empresas ou usuários que estivessem dispostos a pagar por ciclos de computação adicionais.

Com a computação em nuvem, os recursos de computação em excesso podem ser disponibilizados para o uso e ser rentável ao ser vendido a clientes. Essa transformação da computação e da infraestrutura de TI em uma utilidade, que está disponível a todos, nivela relativamente o campo de atuação. Ela força a competição baseada em ideias e não em recursos de computação.

Os recursos que seus aplicativos e sistemas de TI necessitam constantemente (para alcançar a crescente demanda por armazenamento, recursos de computação, sistemas de mensagem e bancos de dados) são essencialmente comoditizados. É possível alugar essa infraestrutura do fornecedor que ofereça o melhor preço e serviço. Simples, não? É uma ideia simples, mas revolucionária que não é inteiramente nova. Ela está agora na vanguarda das tendências tecnológicas atuais devido ao ambiente de computação em nuvem revolucionário introduzido pela Amazon.


Amazon Web Services

Amazon Web Services é um conjunto de serviços que fornece acesso programático à infraestrutura de computação pronta para ser usada da Amazon. A plataforma de computação robusta que a Amazon criou e refinou com o passar dos anos está agora disponível a todos que possuem acesso à Internet. A Amazon fornece vários serviços da Web, mas esta série focará somente nos serviços de bloco de construção básicos que satisfazem as necessidades principais da maioria dos sistemas: armazenamento, computação, sistema de mensagens e conjuntos de dados.

Arquivos corporativos complexos e diversos podem ser arquitetados pelas funções de criação de camadas com base nesses serviços de bloco de construção acessíveis e confiáveis fornecidos pela Amazon. Os próprios serviços da Web habitam uma nuvem fora do seu ambiente e estão altamente disponíveis.

Histórias de Sucesso do Amazon Web Services

SmugMug, um aplicativo de armazenamento de fotos on-line que armazena mais de meio pentabyte de dados em S3, estima que as economias de custo de serviço e armazenamento sejam próximas a US$1 milhão. Ele é um usuário pesado dos recursos de computação Elastic Compute Cloud (EC2) para atingir picos na demanda.

37Signals, fabricante do popular software de gerenciamento de projetos on-line Basecamp, usa S3 para as necessidades de armazenamento.

O New York Times colocou o poder do EC2 em ação para processar terabytes de dados de arquivos usando centenas de instâncias EC2 em 36 horas.

Animoto, um gerador de vídeo de apresentação on-line que necessita de um bocado de energia de computação para processamento de vídeo, resistiu recentemente, com sucesso, a um pico no tráfego da Web que acabaria com o maioria dos sistemas da empresa escalando sua energia de processamento rapidamente usando o EC2. Em certo ponto, eles estavam usando até 3.500 instâncias virtuais sendo executadas ao mesmo tempo.

O pagamento é feito com base no uso, sem a necessidade de gastos adiantados e despesas de capital. Você não incorre em custos de manutenção, pois o hardware é mantido e atendido pela Amazon.

A infraestrutura virtual é uma grande niveladora no mundo direcionado à Web atual. Em minutos, é possível montar rapidamente uma infraestrutura que potencialmente levaria semanas para ser montada em uma loja de TI real. Um ponto importante é que a infraestrutura é elástica e pode aumentar ou diminuir, baseando-se na demanda. Empresas ao redor do mundo estão colocando essa computação elástica em uso (consulte a barra lateral).

Liberdade do aprisionamento de investimentos em grandes infraestruturas e sua manutenção gera grandes oportunidades para inovação. Agora é possível focar-se em suas ideias de negócio ao invés de preocupar-se com o número de servidores que você possui, preocupar-se em ficar sem espaço em disco, etc. De acordo com estimativas da Amazon, as empresas gastam cerca de 70% de seu tempo construindo e mantendo infraestruturas enquanto usam apenas 30% de seu tempo trabalhando realmente em ideias para potencializar seus negócios. A Amazon se preocupa com os detalhes mundanos do hardware e da infraestrutura —e como torná-los altamente disponíveis— enquanto você se concentra em tornar suas ideias realidade.

Os elementos centrais dessa infraestrutura em escala da Web, que fornece os blocos de construção mais comuns necessários a quase qualquer aplicativo não trivial são:

Armazenamento
Todos necessitam de armazenamento — para arquivos, documentos, downloads de usuários ou backups. Armazene qualquer coisa que seu aplicativo necessite no Amazon Simple Storage Service (S3) e tire vantagem do armazenamento escalável, confiável, altamente disponível e de baixo custo.
Computação
O Amazon Elastic Compute Cloud (EC2) fornece a capacidade de aumentar ou diminuir seus recursos de computação baseando-se na demanda e facilita muito o fornecimento de novas instâncias de servidor.
Sistema de Mensagens
Desacople seus componentes de aplicativos usando o sistema de mensagens ilimitado confiável fornecido pelo Amazon Simple Queue Service (SQS).
Conjuntos de dados
Amazon SimpleDB (SDB) fornece armazenamento escalável, indexado e sem manutenção, em conjunto com processamento e enfileiramento para conjuntos de dados.

É possível combinar e corresponder serviços, como necessário; eles são desenvolvidos para trabalhar bem em conjunto. Por estar sendo executada dentro de um ambiente Amazon, toda a comunicação entre esses serviços será, geralmente, muito rápida.

Os artigos nesta série "Computação em nuvem com o Amazon Web Services" exploram cada serviço da Web e as bibliotecas disponíveis para acessá-lo, em detalhes.

Empresários podem criar aplicativos escaláveis e confiáveis usando essa infraestrutura virtual, que custa muito menos do que as plataformas de hospedagem de aplicativos tradicionais que necessitam de server farms enormes para atender flutuações e picos de demanda. Também fornece altos níveis de redundância.

Há dois níveis de suporte disponíveis para usuários do Amazon Web Services:

  • Suporte baseado em fórum grátis da equipe da Amazon que monitora os fóruns Amazon.
  • Pacotes de suporte pagos que fornecem suporte individual e por telefone e são uma maneira mais discreta de solicitar ajuda.

A Amazon publica o status de funcionamento de todos seus serviços da Web em um painel publicamente acessível que é atualizado com qualquer problema relacionado aos serviços. Durante alguma interrupção do serviço, a equipe do Amazon Web Services atualiza a cada 15-30 minutos, enquanto trabalha para solucionar o problema e até que ele seja solucionado.

A Amazon fornece interfaces SOAP e REST baseadas em padrões para interagir com cada um dos serviços. Bibliotecas de desenvolvedores, tanto da Amazon quanto de terceiros estão disponíveis em várias linguagens, incluindo Ruby, Python, Java™, Erlang e PHP, para comunicação com esses serviços. Ferramentas de linha de comando também estão disponíveis para gerenciar seus recursos de computação no EC2. É fácil usar a interface REST; é possível usar um cliente escrito em qualquer linguagem de programação que fale HTTP para fazer solicitações aos serviços da Web.

Armazenamento com o Amazon S3

O Amazon Simple Storage Service (S3) fornece uma interface de serviços da Web para o armazenamento e a recuperação de dados. Os dados podem ser de qualquer tipo e podem ser armazenados e acessados de qualquer lugar na Internet. É possível armazenar um número ilimitado de objetos no S3; o tamanho de cada objeto armazenado pode variar de 1 byte a 5 GB. O próprio armazenamento está disponível tanto nos Estados Unidos quanto na União Europeia. É possível escolher o local de armazenamento para seus objetos ao criar depósitos, que são similares ao conceito de pastas em seu sistema operacional. Os dados são armazenados de maneira segura usando a mesma infraestrutura de armazenamento de dados que a Amazon usa para manter seus Web sites de e-commerce.

As restrições de acesso podem ser especificadas para cada objeto armazenado no S3 e os objetos podem ser acessados com pedidos de HTTP simples. É possível disponibilizar os objetos para download usando o protocolo de BitTorrent.

O S3 liberta-o das preocupações com relação a espaço de armazenamento, acesso a dados e segurança dos dados. Não é nem mesmo necessário lidar com os custos de manutenção dos servidores de armazenamento.

A Amazon assegura alta disponibilidade para seus arquivos para que eles estejam disponíveis sempre que você precisar. O acordo de nível de serviço fornecido pela Amazon para o S3 se compromete a um tempo de atividade de 99,9%, medido mensalmente.

Computação elástica com o Amazon EC2

Amazon EC2 é um serviço da Web que permite que você faça a requisição de máquinas virtuais em minutos e aumentar ou diminuir facilmente sua capacidade baseando-se na demanda. Você paga apenas pelo tempo de computação que você usa. Caso necessite aumentar sua capacidade de computação, é possível ativar instâncias virtuais rapidamente e então concluí-las quando a demanda diminuir.

Essas instâncias são baseadas no Linux® e podem executar qualquer aplicativo ou software que desejar. Você está no controle de cada instância. O próprio ambiente EC2 está construído sobre o hypervisor Xen de software livre, que foi desenvolvido na Universidade de Cambridge. A Amazon permite que você crie imagens de máquina Amazon (AMIs) que agem como modelos para suas instâncias. O acesso às instâncias pode ser controlado através da especificação das permissões. É possível fazer o que quiser com elas; a única restrição é que elas necessitam ser imagens baseadas no Linux. Recentemente, foi anunciado suporte ao Open Solaris pela Amazon, em parceria com a Sun Microsystems, mas a grande maioria de imagens pré-criadas disponível comercialmente e gratuitamente para EC2 são baseadas no Linux.

O Amazon EC2 fornece computação de escala da Web verdadeira, o que facilita aumentar e diminuir seus recursos de computação. Você está totalmente no controle desse ambiente de computação que é executado no datacenter da Amazon. A Amazon fornece cinco tipos de servidores; é possível escolher os que melhor se adequam as suas necessidades de aplicativos. Os servidores variam de servidores de um núcleo x86 comuns a servidores de oito núcleos x86_64. É possível colocar as instâncias em diferentes locais geográficos ou zonas de disponibilidade para assegurar resistência a falhas. A Amazon introduziu recentemente o conceito de endereços IP elásticos que podem ser alocados dinamicamente para instâncias.

Sistema de mensagens confiável com o Amazon Simple Queue Service

O Amazon Simple Queue Service (SQS) fornece acesso à infraestrutura do sistema de mensagens confiável usada pela Amazon. É possível enviar e recuperar mensagens de qualquer lugar usando pedidos HTTP baseados em REST. Não é necessário instalar nem configurar nada. É possível criar um número ilimitado de filas e enviar um número ilimitado de mensagens. As mensagens são armazenadas pela Amazon em servidores e datacenters múltiplos para fornecer a redundância e a confiabilidade necessária para um sistema de mensagens. Cada mensagem pode conter até 8 KB de dados de texto. Os únicos caracteres Unicode que são legais em uma mensagem são
#x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF].

Cada fila pode possuir um tempo limite de visualização configurável, que é usado para controlar o acesso à fila por leitores múltiplos. Quando um aplicativo lê uma mensagem da fila, a mensagem não estará visível a nenhum outro leitor até que o período de tempo limite expire. A mensagem reaparecerá em uma fila após o período de tempo limite ter expirado, então, ela pode ser manipulada por outro processo do leitor.

O SQS integra-se muito bem aos outros serviços da Web da Amazon. Ele fornece uma ótima maneira de criar um sistema desacoplado onde suas instâncias EC2 podem comunicar-se umas com as outras enviando mensagens ao SQS e coordenar o fluxo de trabalho. Também é possível usar as filas para construir uma infraestrutura com escalação e recuperação automática baseada em EC2 para seu aplicativo. É possível tornar as mensagens seguras em sua fila contra o acesso não autorizado usando os mecanismos de autenticação fornecidos pelo SQS.

Processamento de conjunto de dados com o Amazon SimpleDB

O Amazon SimpleDB (SDB) é um serviço da Web para armazenamento, processamento e enfileiramento de conjuntos de dados estruturados. Ele não é um banco de dados relacional no sentido tradicional, mas é um esquema altamente disponível, com um armazenamento de dados menos estruturado na nuvem e que pode ser usado para armazenar e recuperar valores bloqueados. Cada conjunto de valores bloqueados necessita de um nome de item exclusivo; os itens são, por sua vez, particionados em domínios. Cada item pode manter até 256 pares de valores chave de dados. É possível executar consultas em seus conjuntos de dados dentro de cada domínio. Consultas de domínio cruzado não são suportadas atualmente pelo SDB.

O SDB é fácil de usar e fornece a maioria das funções de um banco de dados relacional. A manutenção é muito mais simples do que a de um banco de dados típico, pois não há nada para configurar. A Amazon cuida de todas as tarefas administrativas. Os dados são automaticamente indexados pela Amazon e estão disponíveis a qualquer hora e em qualquer lugar. Uma vantagem principal de não estar preso a esquemas é a capacidade de inserir dados em tempo real e adicionar novas colunas ou chaves de maneira dinâmica.

O SDB é parte da infraestrutura da Amazon e a escalada é feita automaticamente para você nos bastidores. Você está livre para focar sua atenção em coisas mais importantes. Novamente, você só paga pelos recursos de conjunto de dados que usar.


Arquitetura escalável

O Amazon Web Services pode ajudá-lo a arquitetar sistemas escaláveis fornecendo:

Confiabilidade
Os serviços são executados nos datacenters altamente disponíveis e testados em ação que executam o próprio negócio da Amazon.
Segurança
Mecanismos básicos de segurança e autenticação estão disponíveis sem a necessidade de configurações adicionais e é possível melhorá-los, como for necessário, sobrepondo sua segurança específica de aplicativos sobre os serviços.
Custo-benefício
Sem custos fixos ou custos de manutenção. Você paga pelos serviços que usar e aumenta ou diminui seus recursos e orçamento conforme necessário.
Facilidade de desenvolvimento
APIs simples possibilitam tirar proveito de todo o poder dessa infraestrutura e bibliotecas virtuais, disponível na maioria das linguagens de programação amplamente usadas.
Elasticidade
Aumente ou diminua seus recursos de computação baseando-se na demanda. É possível saltar de um a qualquer número de servidores rapidamente para atender suas necessidades de aplicativos.
Natureza coesiva
Os quatro serviços de blocos de construção principais (armazenamento, computação, sistema de mensagens e conjuntos de dados) são desenhados desde sua base para trabalhar extremamente bem em conjunto e fornecer uma solução completa em uma ampla variedade de domínios de aplicativos.
Comunidade
Entre para essa comunidade de usuários vibrante e dinâmica que está levando à ampla adoção desses serviços da Web e criando aplicativos exclusivos construídos nessa infraestrutura.

Prepare-se

Para começar a explorar esses serviços com mais detalhes no restante dessa série "Computação em nuvem com o Amazon Web Services", é necessário inscrever-se em uma conta do Amazon Web Services (consulte a seção de Recursos). Você terá chaves de acesso de segurança públicas e privadas, em conjunto com o certificado de segurança x.509, necessário para começar a usar as várias bibliotecas e ferramentas na "Parte 2: Armazenamento na nuvem com o Amazon Simple Storage Service (S3)".

As ferramentas e bibliotecas disponíveis para interagir com esses serviços da Web estão escritas em uma larga variedade de linguagens. Os artigos nesta série tentam ser agnósticos com relação à linguagem e trabalham com exemplos em linguagens múltiplas, mas seria útil se você tivesse familiaridade com Java, Ruby ou Python.


Conclusão

Este artigo trouxe uma introdução ao ambiente de computação em nuvem da Amazon e uma breve visão geral das quatro principais partes dessa infraestrutura. O restante desta série examina cada Serviço da Web da Amazon de maneira mais detalhada e as várias bibliotecas e ferramentas disponíveis para alavancar essa infraestrutura virtual para construir seus aplicativos.

Recursos

Aprender

Obter produtos e tecnologias

  • Faça o download de versões de avaliação de produtos IBM e use as ferramentas de desenvolvimento de aplicativos e produtos de middleware do IBM® DB2®, Lotus®, Rational®, Tivoli® e WebSphere®.

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=489289
ArticleTitle=Computação em nuvem com o Amazon Web Services, Parte 1: Introdução
publish-date=05122010