Introdução ao Amazon Web Services

Conheça nesse artigo os serviços de Cloud Computing da Amazon, o Amazon Web Services e saiba quando e como utilizá-los.

Fique por dentro
Este artigo tem como objetivo apresentar os principais serviços de cloud computing oferecidos pela Amazon, e ilustrar casos onde seu uso pode ser útil em um projeto de infraestrutura.

A Amazon é o principal player de cloud computing do mercado e, portanto é fundamental para todos os interessados no assunto conhecer sua oferta de serviços.

A maioria dos leitores provavelmente já ouviu falar na Amazon. O negócio que começou com a venda de livros em 1994, hoje é considerado a maior loja online do mundo, com mais de 100 mil funcionários e faturamento de mais de 60 bilhões de dólares em 2012.

Para um negócio desse porte funcionar, foi preciso a criação de uma infraestrutura de TI colossal, com literalmente milhares de servidores distribuídos em vários datacenters pelo mundo.

Com essa quantidade de servidores, só existem duas alternativas para uma administração eficiente: contratar um exército de técnicos, ou automatizar o quanto for possível.

A Amazon escolheu o segundo caminho, e após muito trabalho de pesquisa e desenvolvimento, onde foram criadas soluções para diversos problemas comuns de infraestrutura, eles perceberam que poderia ser um negócio interessante a venda de recursos computacionais utilizando a própria infraestrutura.

Até aí, não parece diferente do que os provedores tradicionais faziam com serviços de hospedagem, por exemplo. A grande diferença é que na Amazon, só se paga pelo uso do serviço, ou seja, se você possui um site que tem picos de acesso em determinadas épocas, você pode provisionar recursos adicionais por um período, e simplesmente deixar de usá-los quando não forem mais necessários.

Isso é uma grande mudança de paradigma: hoje, quando falamos do modelo tradicional, onde a empresa é dona de um parque de servidores dentro do datacenter, quando houver a necessidade de aumento de capacidade, provavelmente será necessário investir em equipamentos, seja servidor, storage ou rede.

Aí começam os problemas: a empresa pode ter determinados equipamentos que foram descontinuados e que agora possuem um custo de expansão maior do que o custo de equipamentos novos.Ao comprar novos equipamentos,é preciso decidir se vale a pena manter os antigos em uso, ao lado dos novos, ou se é melhor migrar tudo para os novos equipamentos, o que envolve projetos de migração complexos.

A virtualização ajuda a minimizar muitos desses problemas, mas ainda está sujeita a alguns, como por exemplo, o caso do pico sazonal. Quando há a necessidade de se suportar uma demanda alta e inesperada com uma infraestrutura interna, provavelmente será necessário ter uma infraestrutura dimensionada “por cima”, ou seja, com uma grande capacidade de processamento, que será utilizada poucas vezes por ano.

O Amazon Web Services (daqui para frente, chamado apenas de AWS), fornece uma alternativa interessante para esses problemas.É como se tivéssemos à nossa disposição uma infraestrutura “infinita”, em que podemos alocar recursos quando necessário, de forma rápida e relativamente barata.

Para alguns tipos de empresa, como bancos, existem questões quanto à segurança e interoperabilidade dos serviços em nuvem que com o tempo precisam ser esclarecidas. Por exemplo, no Brasil existem leis que proíbem o armazenamento de dados fora do país.

No entanto, com o modelo de operação atual oferecido pelos provedores de cloud computing, não é possível garantir que dados de empresas brasileiras não serão replicados para servidores em outros países. Para empresas cujo negócio está baseado na web, a aderência é muito mais óbvia. O maior exemplo disso foi a migração da Netflix, um dos maiores provedores de conteúdo ondemand do mundo, para o AWS em 2011.

O AWS oferece diversos serviços, desde a infraestrutura até bancos de dados e enfileiramento de mensagens. Veremos neste artigo os principais serviços relacionados à infraestrutura (IaaS – Infrastructure as a Service), e em alguns casosprocuraremos mostrar casos de uso de cada tecnologia.

Regiões e zonas de disponibilidade

O AWS está distribuído em datacenters presentes em várias localidades no mundo. Esses datacenters são chamados pela Amazon de regiões. Para aprimorar a disponibilidade, dentro de cada região existem ao menos duas zonas de disponibilidade, que são infraestruturas completamente independentes com links de baixa latência entre elas para garantir uma comunicação eficiente.

Atualmente as regiões da Amazon são as seguintes, com as respectivas quantidades de zonas de disponibilidade:

Como um diferencial, muitos serviços possuem replicação de dados transparente entre zonas de disponibilidade, para garantir a contingência em caso de falhas. Além deste recurso, a replicação de dados entre regiões também é possível, mas deve ser implementada caso a caso.

Assim, ao desenharmos uma arquitetura para funcionar sobre o AWS, devemos levar em conta as regiões e zonas de disponibilidade para garantir a contingência da aplicação, evitando que falhas no AWS causem impacto para a aplicação.

Diante desse cenário, já ocorreram grandes falhas em regiões isoladas do AWS que causaram indisponibilidade para grandes clientes como Sony e Netflix. Estatisticamente, ao considerarmos a infraestrutura apresentada, a probabilidade de todas as zonas de disponibilidade de uma região falharem ao mesmo tempo é muito pequena, e a probabilidade de todas as regiões falharem é menor ainda.

Se desenharmos nossa arquitetura com isso em mente, o que teremos é uma infraestrutura com um nível de resiliência altíssimo, ao custo de alguns milhares de dólares, e que custaria muito mais se implementada de forma tradicional, com servidores instalados on-premises.

Sendo assim, é preciso analisar cada caso de forma independente, mas de modo geral, o custo das soluções no AWS é bastante atrativo.

Simple Storage Service – S3

O S3 foi o primeiro serviço do AWS, tendo sido lançado em 2006. Ele fornece um sistema de armazenamento online bastante simples, onde os arquivos são acessados via HTTP, web services (REST ou SOAP) ou protocolo BitTorrent. No S3, o armazenamento é feito em buckets (containers de arquivos), e cada bucket possui uma série de funcionalidades, que listamos a seguir:

O S3 tipicamente é utilizado para hospedagem de arquivos que serão acessados diretamente pela web, como imagens e páginas web estáticas, mas pode ser utilizado também como repositório de arquivos de backup de instâncias e imagens do EC2.

Elastic Compute Cloud – EC2

O EC2 é o serviço de virtualização de servidores do AWS, onde é possível criar servidores virtuais (chamados de instâncias, na terminologia da Amazon) com diversas opções de tamanho e sistema operacional.

A Amazon classifica o tamanhodas instâncias oferecidas através da métrica chamada de ECU – Elastic Compute Unit. Uma ECU equivale à capacidade de um processador Xeon ou Opteron de 1.0 GHz de 2007. Conforme os servidores físicos da Amazon são atualizados e passam a utilizar processadores de maior capacidade, a oferta das instâncias muda e o número de ECUs de um determinado tipo de instância muda também. Nesse ponto vale destacar que a informação de tamanho de um tipo de instância é descrita pelo número total de ECUs.

A seguir podemos ver os principais tipos de instância disponíveis no AWS equal a indicação de uso para cada um deles:

Na Tabela 1 podemos ver a relação entre os tipos de instância e os tamanhos oferecidos.

Tabela 1. Tamanhos das instâncias disponíveis no EC2.

Tipo de Instância Tamanho vCPU ECU Memória (GB)
Uso Geral m3.xlarge 4 13 15
Uso Geral m3.2xlarge 8 26 30
Uso Geral m1.small 11 1 1.7
Uso Geral m1.medium 1 2 3.75
Uso Geral m1.large 2 4 7.5
Uso Geral m1.xlarge 4 8 15
Otimizadas para CPU c3.large 2 7 3.75
Otimizadas para CPU c3.xlarge 4 14 7
Otimizadas para CPU c3.2xlarge 8 28 15
Otimizadas para CPU c3.4xlarge 16 55 30
Otimizadas para CPU c3.8xlarge 32 108 60
Otimizadas para CPU c1.medium 2 5 1.7
Otimizadas para CPU c1.xlarge 8 20 7
Otimizadas para CPU cc2.8xlarge 32 88 60.5
Instâncias com GPU g2.2xlarge 8 26 15
Instâncias com GPU cg1.4xlarge 16 33.5 22.5
Otimizadas para Memória m2.xlarge 2 6.5 17.1
Otimizadas para Memória m2.2xlarge 4 13 34.2
Otimizadas para Memória m2.4xlarge 8 26 68.4
Otimizadas para Memória cr1.8xlarge 32 88 244
Otimizadas para Storage hi1.4xlarge 16 35 60.5
Otimizadas para Storage hs1.8xlarge 16 35 117
Instâncias Micro t1.micro 1 Até 2 0.615

Vejamos os principais recursos oferecidos pelo EC2:

Em uma infraestrutura tradicional, o ambiente seria dimensionado pelo pico, ou seja, para suportar a maior quantidade possível de acessos prevista. Isso faz com que paguemos o ano inteiro por uma infraestrutura que só é utilizada algumas vezes por ano.O auto scaling serve para racionalizar o uso da infraestrutura.

Ele monitora o consumo de recursos dos seus servidores, e baseado em políticas, pode adicionar ou remover servidores do grupo para atender a demanda.

Ou seja, no caso de um pico de tráfego, o auto scaling pode aumentar a capacidade de 2 para 10 servidores, e quando o pico passar, eliminar os servidores adicionais e deixar somente os dois que existiam antes. Dessa forma, somente pagamos pelo utilizado;

Os volumes podem ter até 1 TB de tamanho, e podem ser do tipo Standard, ou do tipo Provisioned IOPS, onde se paga um pouco mais caro para garantir um throughput previsível. Um volume EBS é replicado dentro de uma mesma Zona de Disponibilidade para garantir a contingência quanto a falhas de hardware.

Com todos os recursos citados, é possível implementar soluções completas de infraestrutura de servidor na nuvem, tanto para uso em aplicações públicas, como sites de e-commerce, como para aplicações internas e privadas. Com os vários tamanhos de instância disponíveis, é possível hospedar serviços diversos como e-mail, banco de dados, servidores web, entre outros.

Além disso, existem casos de empresas que utilizam o AWS para a criação de supercomputadores, empregando tecnologias de clustering sobre centenas de instâncias EC2. Essa é uma estratégia que proporcionou grande economia para estas empresas, que tradicionalmente investiam milhões de dólares na construção de supercomputadores.

Virtual Private Cloud – VPC

VPC é o serviço que possibilita a configuração de uma rede privada no AWS. Dentro de uma rede privada é possível ter todos os recursos do EC2, como instâncias e balanceadores, bem como montar sub-redes separadas, com endereços IP privados, e rotear entre elas.

É um serviço bastante útil para manter organizado o ambiente em nuvem quando a solução começa a depender de vários componentes, como servidores de aplicação, banco de dados, balanceadores de carga, etc.

Além disso, a rede privada é interessante do ponto de vista da segurança, porque com uma VPC as nossas instâncias EC2 não precisam de endereço IP público para serem acessadas.

É possível ainda criar uma VPN entre sua empresa e uma VPC no AWS para ter o seu ambiente na nuvem pública, mas com acesso totalmente isolado.A seguir podemos ver as principais configurações oferecidas pelo serviço de VPC:

Glacier

O Glacier é o serviço de storage off-line do AWS. É um serviço de baixíssimo custo (1 centavo de dólar por GB) direcionado para o armazenamento de grandes volumes de dados e que são muito pouco acessados, como soluções de backup histórico e backup off-site. Os dados copiados para o Glacier são automaticamente replicados dentro da infraestrutura do AWS, com o objetivo de garantir máxima durabilidade.

O baixo custo de armazenamento tem uma contrapartida de custo no acesso aos dados. Deste modo, se o cliente acessar em um mês mais do que 5% da média histórica do volume armazenado mensalmente, essa transferência é cobrada. É a forma utilizada pela Amazon para garantir que o acesso seja infrequente. Se precisamos de acesso frequente, o S3 e o EBSsão produtos mais apropriados.

Relational Database Services – RDS

O RDS é o serviço de banco de dados relacional do AWS. Através dele podemos criar instâncias de banco de dados MySQL, Microsoft SQL Server, Oracle ou PostgreSQL. O RDS cria servidores virtuais com o DBMS desejado de acordo com os parâmetros especificados pelo usuário. Para bancos de dados que necessitam de alto desempenho de I/O, é possível utilizar a opção de Provisioned IOPS, que garante uma quantidade de IOPS (operações de I/O por segundo) mínima e previsível.

Uma opção que o RDS oferece é a possibilidade de criarmos instâncias de contingência, utilizando a feature Multi-AZ, que indica que a instância será replicada automaticamente para outra instância que está em uma zona de disponibilidade diferente, e o AWS fará o failover para esta instância caso uma falha seja detectada. Essa funcionalidade está disponível para todos os DBMSs, exceto para o MS SQL Server. No caso do MySQL, podem ser criadas réplicas somente para leitura, que são úteis no caso de aplicações web de alto tráfego.

A seguir são apresentadas as principais funcionalidades do RDS:

Custos

Todos os produtos do AWS possuem políticas de preço bastante detalhadas e com farta documentação no site. É importante estudar a forma de cobrança de cada produtoantes da contratação para evitar sustos na hora da conta. É muito comum provisionarmos mais recursos do que precisamos porque todos os serviços estão a um clique de distância, de forma muito simples. Outro ponto importante é que existem duas formas de contratação para a maioria dos recursos: on-demand e reservado.

No caso do EC2, por exemplo, instâncias on-demand são aquelas que nós criamos e removemos a qualquer momento. Nesse caso pagamos um valor por hora, pelo total de horas em que a instância esteve ligada.

No caso de demandas de prazo mais longo, a Amazon oferece descontos bastante atrativos para clientes que querem se comprometer a manter um contrato por períodos de 1 ou 3 anos.

Deste modo, ao pagarmos um valor por instância no momento do contrato, o valor pago por hora cai para menos da metade do valor de instâncias on-demand, em alguns casos.

A recomendação geral é que, da mesma forma que não se deve investir em hardware ou datacenter sem planejamento, não se deve fazê-lo com recursos na nuvem. O planejamento antecipado pode maximizar enormemente a economia que pode ser conseguida ao se optar por contratar infraestrutura na nuvem.

Neste artigo foram apresentados os principais serviços de cloud computing fornecidos pela Amazon e foram mostrados alguns casos de uso. Além desses, existem vários outros serviços, mais focados em aplicação, que omitimos aqui por questões de brevidade.

Sendo assim, sugerimos que o leitor visite o site do AWS e explore os produtos, para entender em profundidade do que a plataforma é capaz. Além do site, vale mencionar que todos os manuais dos produtos do AWS estão disponíveis na loja do Kindle (leitor de livros digitais da Amazon) sem custo. A documentação é bastante completa e certamente ajudará a esclarecer os detalhes de cada produto.

Para os que gostam de programar, vale mencionar que existem bibliotecas para as linguagens de programação mais populares, como Java, C# e Python, por exemplo, que permitem a automação de todos os aspectos de todos os produtos do AWS. Esse é um recurso extremamente interessante, que possibilita a construção de ferramentas de gerenciamento e automação bastante poderosas, e que facilitam a vida no dia-a-dia.

Apesar de o artigo ser totalmente baseado no AWS, que por ter sido o pioneiro, ainda é a referência no mercado quando se fala de nuvem pública, vale mencionar que existem outras ofertas no mercado, sendo o Windows Azure, da Microsoft, e o Compute Engine, da Google, as mais conhecidas.

Com base no que falamos, é importante conhecê-los para poder avaliar qual é oserviço mais adequado para cada situação, e o mais importante, para que comparemos os valores e vejamos qual oferece o melhor custo benefício. Com a tendência da popularização do uso da nuvem pública, espera-se que a concorrência se torne cada vez mais acirrada, e com isso podemos esperar uma oferta de serviços de qualidade cada vez melhor e com menor custo.


Artigos relacionados