AmazonWS - EC2 (Servidores virtuais em cloud)

Olá pessoal, é uma dúvida frequente aqui no site sobre qual serviço de hospedagem utilizar, então estou escrevendo esse post apenas para dar uma luz sobre o Amazon WS. Especificamente sobre o serviço Amazon Elastic Compute Cloud (EC2) que eu considero excelente, mas o pessoal tem algumas dúvidas sobre o seu funcionamento…

Sobre o Amazon WS (Amazon Elastic Compute Cloud - Amazon EC2)

Site: http://aws.amazon.com/ec2

O Amazon EC2 é um serviço que provê força computacional usando cloud computing.

O Amazon EC2 possui um parque de máquinas físicas, essas máquinas físicas possuem máquinas virtuais. Você pode “alugar” uma dessas máquinas virtuais.

Essas máquinas virtuais são alocadas nessas máquinas físicas de acordo com a necessidade (mas isso é controlado pelo Amazon WS, não se preocupe com isso).

É como um VPS (Virtual Private Server) a diferença é que o Amazon EC2 é mais flexivel. Você pode por exemplo, aumentar o poder computacional da sua máquina, melhorando o processador ou colocando mais memória RAM.

No Amazon EC2 você terá total dominio sobre sua máquina, ou seja, terá acesso de Root no sistema operacional. É você que terá que instalar seus programas e fazer as configurações. Como JVM, servidores, banco de dados. Você terá completo poder, mas a responsabilidade de configuração é sua. O firewall é controlado por uma interface do Amazon WS, bem simples de usar.

O primeiro passo para utilizar o AmazonWS é criar o seu login no site. Você não terá que pagar nada por enquanto, você só paga para a Amazon o que utilizar.

Depois que criar seu login (no site tem várias instruções) você criará uma instancia. Uma instancia nada mais é do que um computador virtual. Você terá algumas opções como um Single Core com 1.7Gb de Ram 32-bits, ou Dual Core com 7.5Gb de Ram 64-bits, entre outros.

Depois disso você escolherá uma imagem para instalar na sua máquina. Essa imagem irá configurar sua máquina com determinado Sistema Operacional. O Amazon provê alguns default, mas você poderá usar sistemas personalizados por usuários. Existem uns muito bons, eu utilizo um Ubuntu.

A sua máquina terá um HD virtual associado a ela. Você pode posteriormente criar uma máquina mais potente e associar esse HD a essa máquina melhor. Melhorando a performance do seu sistema com poucos passos.

Existem 3 tipos de sistema de cobrança:
On-Demand: Pague o que usar
Reserved Instances: Pague por um periodo (1 ou 3 anos) um valor mais em conta do que se usar o sistema on-demand
Spot Instances: Mais ou menos um sistema de leilão de máquinas ociosas, que você pode utilizar pagando um valor mais baixo.

Você também irá pagar pelos GBs que estiver usando de HD, acessos a rede ou acessos ao disco. Mas esse valor é mínimo, o que vai custar mais caro mesmo é a máquina que estiver utilizando.

No sistema On-Demand que é o mais simples e interessante principalmente para quem está começando, você paga pelo tempo em que sua máquina estiver ligada. Suponhamos que você configurou uma máquina com linux, ligou, testou, mas agora você não precisa mais da máquina. Você pode desligá-la, e não pagará nada, enquanto ela estiver desligada. Você ainda pagará pelo HD que estiver registrado, mas como disse, o valor é minimo. Quando precisar da máquina novamente no futuro, basta ligá-la e então o serviço será cobrado.

Pelo que pesquisei, os preços do Amazon WS são uns dos mais baixos. E tem essa flexibilidade muito útil de ligar e desligar máquinas, ou mudar a configuração.

O Amazon oferece máquinas Linux e Windows. Sendo que para quem está começando ou não tem muita habilidade com o Linux, o Windows é uma boa opção. (O Sistema Windows é um pouco mais caro).

No site do Amazon existem documentação de como acessar sua máquina remotamente.

Exemplo de cobrança da minha conta (valores em dólar):

Amazon EC2 running Linux/UNIX
$0.085 per Small Instance (m1.small) instance-hour (or partial hour)
12 Hrs 1.02

$0.34 per Large Instance (m1.large) instance-hour (or partial hour)
1 Hrs 0.34

Amazon EC2 running Windows

$0.12 per Small Windows Instance (m1.small) instance-hour (or partial hour)
9 Hrs 1.08

$0.48 per Large Windows Instance (m1.large) instance-hour (or partial hour)
1 Hrs 0.48

Amazon EC2 Bandwidth

$0.00 per GB Internet Data Transfer - all data transfer into Amazon EC2
6.380 GB 0.00

$0.150 per GB Internet Data Transfer - first 10 TB / month data transfer out of Amazon EC2
0.180 GB 0.03

$0.010 per GB Regional Data Transfer - in/out/between AZs or when using public or Elastic IPs or Elastic Load Balancing
0.447 GB 0.01

Amazon EC2 EBS

$0.10 per GB-month of provisioned storage
41.875 GB-Mo 4.19

$0.10 per 1 million I/O requests
1,771,092 IOs 0.18

$0.01 per 10,000 gets (when loading a snapshot)
631 Requests 0.01

Total 7.34

As cobranças mais importantes foram:
1.02 Por 12 Horas de utilização de uma instancia Small Instance
0.34 Por 1 Hora de utilização de uma instancia Large Instance
1.08 Por 9 Horas de utilização de uma instancia Small Instance WINDOWS
0.48 Por 1 Hora de utilização de uma instancia Large Instance WINDOWS
4.19 Por 41GB de armazenamento de memória por mês (o HD virtual, que será cobrado por mes, independente se a máquina estiver ligada ou não)

Espero ter ajudado…

Até mais

Ótimo post, ajudou muito. Tirou a maioria das minhas dúvidas.

Mas quando ao HD virtual, como funciona exatamente. É seguro para rodar os bancos de dados relacionais?

E o backup como funciona?

Muito obrigado pelas informações.

O Hd … é o HD da máquina…

Vc tem as máquinas e tem os HDS separadamente… que vc pode mudar de máquina… a vontade…

O proprio amazon faz backup…

Você pode tirar um snapshot do HD naquele momento… e guardar… depois pode restaurar o HD do jeito que estava no momento do snapshot…

É claro que vc também pode guardar seus backups dos bancos de dados… mas aí… vc é que tem que configurar esse backup…

Para voce que vai trabalhar com o Amazon… é como se fosse um HD físico normal… não tem diferença…

Eles tem dois tipos de sistema, um chamado EBS… e o outro me fugiu o nome agora…

Não lembro mais a diferença entre os dois sitemas… mas no meu caso… o EBS é melhor… acho que o outro sistema tem umas limitacoes…
Mas como já tem um tempo que estudei as diferenças nao lembro mais…

No site da amazon tem documentação…

Acho que na grande maioria dos casos… o interessante é usar EBS…

Eu tenho algumas perguntas:

1- eu gostaria de comprar um server lá pra hospedar o meu site. É possível né?
2- quanto sairia +/- um servidor simples? para aguentar um blog em php que recebe poucas visitas?
3- eu precisaria instalar tudo né? (php, apache, ftp, mysql)

Obrigado.

O mínimo que você consegue lá… é um servidor single core… de 1.7Gb de RAM…

Isso dá mais ou menos 70 dólares por mes… o que é muito para o que voce precisa…

E você terá que instalar tudo…

Eu também possuo um site… php… com fórum … blog … banco de dados… etc…

Nessa situação eu recomendo o Host Monster que é o que eu uso… $5.95 por mes… sem limites de nada

http://www.hostmonster.com/

Seria possivel montar essa estrutura no Amazon WS… mas acredito que seja um canhão para matar moscas…

Sardinha, se quiser seguir na linha do cloud tem esse aqui: http://www.slicehost.com/ com um valor mensal fixo.

Gostei desse slice… para uma máquina com 256 mb de ram… se torna uma opção bem interessante…

Você utiliza ele? Funciona bem?

Não, nunca utilizei. Encontrei nas minhas pesquisas sobre servidor de cloud.

Mais especificamente nesse artigo:

http://rafael.adm.br/p/um-overview-sobre-hospedagem-em-maquinas-virtuais-passando-por-amazon-slicehost-e-linode/

Obrigado rogelgarcia e rafaelbnc!
EU esta afim de contratar esse serviço para aprender mais sobre OS e cloud (configurar tudo e tals).

Vou analisar ainda, pois faltam 3 meses para acabar o contrato com o atual host.

[]'s

Sei que o tópico é um pouco antigo, mas estou estudando a possibilidade de colocar algumas app em cloud. Lendo sobre o AWS, mais prescisamente sobre o EC2, apareceu um SDK-AWS. Pra que serve isso? Sei que no GAE temos que usar o SDK-GAE, mas se no EC2 voce tem um host virtual, porque deveria usar o SDK-AWS?

Abraços a todos.

Se não estou fazendo confusão, esse SDK é para você controlar programaticamente suas instancias. Ligar e desligar servidores por exemplo. Você não precisa usar isso no desenvolvimento do seu sistema. Aliás, você não precisa alterar absolutamente nada no seu sistema.

Acho que é isto mesmo, controlar tudo via software próprio, tipo o que o Netflix fez, vejam a materia: http://techblog.netflix.com/2012/06/asgard-web-based-cloud-management-and.html