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.
Definindo a 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 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 são essencialmente comoditizados – para alcançar a
crescente demanda por armazenamento, recursos de computação, sistemas de mensagem e bancos de
dados.
É 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.
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.
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.
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.
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). - Conjunto 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.
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 e ainda é possível usar um cliente escrito
em qualquer linguagem de programação que fale HTTP para fazer solicitações aos serviços da
Web.
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 é o 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. Recentemente ele resistiu 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.
Armazenamento com 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.
Ainda é 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, além de 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 e é 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. 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 que vão ser utilizadas na segunda parte do artigo – 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
- Aprenda sobre Serviços da Web específicos da Amazon:
- Amazon Simple Storage Service (S3)
- Amazon Elastic Compute Cloud (EC2)
- Amazon Simple Queue Service (SQS)
- Amazon SimpleDB (SDB)
- O Service Health Dashboard é atualizado pela
equipe da Amazon independente de qualquer problema com os serviços.
- Inscreva-se
para obter uma conta do Amazon Web Services. - O Developer Connection do
Amazon Web Services é um gateway para todos os recursos de desenvolvedores. - Os últimos acontecimentos do mundo do Amazon Web Services
estão no blog. - Leia casos de estudo e histórias de sucesso de uma variedade de empresas que estão usando o
Amazon Web Services para potencializar seus negócios. - “Cloud Computing. Available at
Amazon.com Today‘s” (revista Wired, abril de 2008) discute as iniciativas de
computação em nuvem da Amazon e sua natureza de mudança de jogo. - O artigo do New York Times “Cloud Computing: So You Don’t Have to Stand Still” (maio de 2008) discute o interesse na
computação em nuvem. - Saiba mais sobre o Xen, um monitor de máquina virtual
para x86 que suporta a execução de sistemas operacionais guest múltiplos com níveis de
desempenho e isolação de recursos nunca antes vistos. - Obtenha uma alimentação RSS para esta série.
- Obtenha os recursos necessários para melhorar suas
qualificações na arena da arquitetura na área de Arquitetura do
developerWorks. - Procure na livraria tecnológica
livros sobre esses e outros assuntos técnicos.
***
artigo publicado originalmente no developerWorks Brasil, por Prabhakar Chaganti
Prabhakar 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.







