O cloud computing é inevitável?
A Caelum.com.br roda agora no cloud. Por que? Vale a pena? Temos tantos acessos assim?
Entre os exemplos clássicos do bom uso do cloud temos o sucesso do New York Times: eles conseguiram digitalizar em PDF mais de 4 terabytes de edições do jornal muito antigas (1851-1922) usando 100 máquinas e gastando apenas 240 dólares! O cloud é perfeito para situações em que você precisa de muito desempenho e recursos por um curto período de tempo.
Essa definitivamente não é a necessidade da Caelum em rodar em um cloud. Qual seria então?
Temos várias opções para você ter seu próprio cloud: através do TerraCotta, pelo VMWare ou pelo Grid Gain. Usando esses softwares você mesmo precisa prover sua infraestrutura de máquinas, o que pode ser trabalhoso. Um nível mais abstrato e encapsulado seria usar o EC2 da Amazon: ele já fornece as máquinas, facilitando muito a manutenção, e cobra por tempo de processamento (eliminando o gasto inerente ao tempo ocioso que suas máquinas poderiam ficar). No Brasil, a Locaweb foi a pioneira ao oferecer esse serviço.
Por último, temos hosts que já provêm tudo para você: a infraestrutura e o software para permitir a escalabilidade. O Google App Engine é um desses hosts.
Aqui, sim, entra a Caelum e entra também o interesse das empresas de hosting: se o cloud é mais barato para os fornecedores por compartilhar recursos ociosos, e ainda oferece altíssima escalabilidade e disponibilidade para os clientes, temos então um casamento de interesses. Essa relação ganha-ganha fortalece muito a tendência da adoção de uma arquitetura mais elástica. Os clientes também ganham uma enorme independência de hardware, terceirizando os grandes problemas que acabam acontecendo quando temos servidores dedicados: esses servidores não são à prova de bala. Para a Caelum, mesmo sem necessidade de rodar em 100 servidores, é interessante ter o poder de fazer o deploy de nossas aplicações Web sem ter de nos preocupar se “é suficiente X micros e Y de RAM para esta aplicação?”, por menor que ela seja.
O site da Caelum usava VRaptor 3 como controlador, JSP e taglibs na visualização e Hibernate para persistência. Para colocá-lo no cloud do Google App Engine, a única grande mudança que fizemos foi migrar a camada de persistência para o BigTable. Trata-se de um banco de dados não relacional proprietário, que possui uma API específica, mas também há uma implementação (não completa) de JPA para ele, o que facilita bastante a migração.
Desvantagens? O Google App Engine ainda está em beta, e já ficou fora do ar alguns momentos, em especial o serviço do DataStore (o BigTable). Há também o problema do cold start e do plugin para o Eclipse, que é um pouco lento para iniciar o servidor de testes: falaremos com detalhes sobre ambos em um outro post. Outra desvantagem é a dependência ao BigTable: como é um serviço proprietário, migrar para qualquer outro cloud vai necessitar de ajustes, mesmo que usando a JPA.
Respondendo o título do post: independente se o seu cloud é Amazon EC2, Google App Engine ou GridGain, algo é certo: ele traz vantagens tanto para os desenvolvedores quanto para o host, mostrando que a estratégia do cloud está cada vez mais solidificada.
Agradecimentos ao Pedro Matiello, Guilherme Silveira e Sérgio Lopes pela migração do site. Em breve, postaremos detalhes de como trabalhar na Google App Engine. Veja mais artigos de cloud no blog.
Programação, Mobile, Front-end, Design & UX, Infraestrutura e Business
Parabéns, Paulo, pela visão de futuro. É disso que precisamos na comunidade, de pessoas visionárias!
[]s
Recentemente uma revista que prefiro não citar o nome, apresentou uma matéria onde 5 “especialistas” falaram a respeito de cloud, um deles falou tanta besteira que quase rasguei a revista.
Parabenizo a Caelum pela consistência de suas colocações, nào apenas baseadas em conceitos mas também em uma experiência prática que atesta o que vocês apresentam em seus textos.
O CloudComputing é uma realidade sem dúvidas, ainda precisando de amadurecimento e ajustes mas já em condições de uso e agregação de valor a nossas operações.
Eu não diria que ele é inevitável, sempre teremos profissionais ortodoxos que optarão pelo controle do lógico e do físico, mas para aqueles que tiverem coerência em sua análise verão que estamos falando de uma tendência, não de um modismo, e não vejo porque não embarcar nesta onda desde já!
Parabéns também pelas apresentações no Serpro!
Boa! O modo como você falou que não precisava de 100 servidores pra processar, mas sim da utiliidade do cloud em si ficou muito bem colocada.
Mais uma ótima notícia. Abraço.
Aliás, existem rumores (não sei se é verdade) que a Google App Engine suporta (ou suportará) Scala. Mais um ponto pra ela.
Oi pessoal! Obrigado pelo apoio.
Resumindo a posição da Caelum, é que o cloud é interessante tanto para o forneedor, quanto para o cliente, e não só em casos em que escalabildiade é extremamente necessário!
Sobre Scala, já roda no GAE, assim como muitas das linguagens dinâmicas, já que algumas são compiladas para bytecode (como Scala), e outras a api de scripting do Java 6 consegue interepretar!
Paulo,
Bom saber do Scala. Tenho que me atualizar nesse assunto!
Abraço!
Pessoal pra quem quizer entender mais, nada melhor que os proprios criadores explicando…
Oucam o melhor podcast da categoria Google App Engine, pessoalmente este é um dos meus favoritos.
http://google-developer-podcast.googlecode.com/files/googledev015.mp3
Hmm, muito bom. Essa semana fiz uns estes no meu site e quero loco publicar no GAE. Já vou aproveitar e migrar de vraptor 2.6 para o vraptor3.
Agora… como vocês criaram a estrutura do banco de dados? E como migraram os dados já existentes para lá?
Estou lendo sobre o Google App Engine, no caso de cotas, vocês chegam a ultrapassar aqueles valores de cotas? ou já ajustaram valores lá que comporte uma quantidade de acessos suportáveis, a minha preocupação é ficar mais caro do que imagino.
Recentemente minha empresa decidiu embarcar nessa onda de cloud computing, e contratou os serviços da SimpleWeb, e não podíamos estar mais satisfeitos. Reduzimos em cerca de 50% nossos custos em datacenter e servidores, e ganhamos em performance e escalabilidade. É possível inclusive aumentar os recursos dos servidores em períodos críticos de pico de uso, como por exemplo quando rodamos a folha de pagamento em nosso ERP.
Cloud Computing é inevitável, mas devemos ter cuidado, pois na “computação” lidamos sempre com idéias antigas que se renovam, e idéias novas que rapidamente ficam ultrapassadas. O que não devemos é nos deslumbrar…
Muito boa a materia, tive que comentar, parabens