A nuvem está pronta para um aplicativo da web Enterprise Java? Buscando um conselho de hospedagem JEE

4

Saudações a todas as pessoas inteligentes por aqui!

Gostaria de perguntar se é viável ou uma boa ideia implantar um aplicativo da Web corporativo Java em uma nuvem como o Amazon EC2. Mais exatamente, estou procurando opções de infraestrutura para um aplicativo que deve lidar com algumas centenas de usuários com sessões longas, mas nem intensivas em CPU nem em memória. Estou pensando em servidores dedicados, servidores virtuais privados (VPSs) e EC2. Tenho notado que existe um projeto chamado JBoss Cloud para que as pessoas estejam trabalhando na ativação de tal implantação, por outro lado, ele não parece estar maduro ainda e eu não tenho certeza se a nuvem está pronta para esse tipo de aplicativos, que difere dos aplicativos típicos baseados em nuvem, como o Twitter. Você recomendaria implantá-lo na nuvem? Quais são os prós e contras?

O aplicativo é um aplicativo da Web Java EE 5 cuja principal função é permitir que os usuários componham seu próprio produto personalizado, combinando as partes disponíveis. Ele usa beans de sessão stateless e stateful e JPA para persistência de entidades em um RDBMS e busca informações sobre Peças do sistema de inventário da empresa por meio de um serviço da web. Além dos usuários externos, ele é usado também por alguns internos, que são autenticados em relação ao LDAP da empresa. O aplicativo deve lidar com cerca de 300 a 400 usuários simultâneos construindo seu produto e deve ser razoavelmente escalonável e disponível, embora essas qualidades sejam de importância média nesse estágio.

Eu propus uma arquitetura que consiste em um firewall (FW) e balanceador de carga com suporte a sessões fixas e https (na nuvem isso seria substituído pelo serviço Elastic Load Balancing do EC2 e pelo FW nos servidores de aplicativos, em uma arquitetura física o balanceador de carga seria um HW), depois dois servidores de aplicativos físicos em cluster combinados com servidores da Web (para que, se um falhar, um usuário não perca seu produto de construção longa) e, finalmente, um servidor de banco de dados. O servidor de banco de dados precisaria de uma instância de backup escravo que possa substituir a instância do mestre caso ela falhe. Isso deve fornecer disponibilidade razoável e tolerância a falhas e fornecer uma boa escalabilidade, contanto que um único RDBMS possa manter a carga, o que deve ficar bom por um bom tempo porque a maioria das operações é feita na memória usando um bean de estado e armazenada apenas ocasionalmente ou recuperados do banco de dados e a quantidade de dados também é baixa. Uma parte problemática poderia ser a dependência do serviço web do sistema de inventário remoto, mas com bom armazenamento em cache de suas saídas no aplicativo, ele também deveria estar OK.

Infelizmente, tenho apenas uma vaga idéia dos recursos do sistema (tamanho da memória, número e velocidade de CPUs / núcleos) que um "aplicativo Java EE médio" para algumas centenas de usuários precisa. Minha estimativa aproximada e basicamente infundada baseada em ofertas reais da Amazon é que 1,7 GB e um único "CPU moderno" de 2 núcleos com velocidade em torno de 2,5 GHz (a instância média de alta CPU) devem ser suficientes para qualquer um dos dois servidores de aplicativos ( já que podemos lidar com uma carga maior provisionando mais deles). Como alternativa, consideraria usar a instância Grande (64b, 7,5 GB de RAM, 2 núcleos a 1 GHz)

Portanto, minha pergunta é se tal implantação para a nuvem é tecnicamente e financeiramente viável ou se servidores dedicados / VPS seriam uma opção melhor e se existem experiências reais com algo semelhante.

Muito obrigado! / Jakub Holy

PS: Encontrei o JBoss EAP em um estudo de caso de nuvem que mostra que é possível implantar um aplicativo Java EE real na nuvem do EC2, mas infelizmente não há detalhes sobre topologia, tipos de instância ou qualquer coisa: - (

    
por Jakub Holý 14.04.2010 / 16:43

2 respostas

1

A longo prazo, o EC2 raramente é mais econômico do que os servidores dedicados de sua preferência. Sua principal vantagem é a rápida escalabilidade. Se você tem uma base de usuários relativamente lenta, provavelmente não vale a pena.

Mas o melhor é que é fácil criar algo e testá-lo por apenas um punhado de $, sem ter que planejar muito o hardware com antecedência.

Existem AMIs prontas para Glassfish. Meu conselho seria testar 1 ou 2 instâncias pequenas, isso mostrará claramente se os servidores VPS / Dedicados terão melhor valor e lhe darão uma ideia muito melhor de suas necessidades.

    
por 14.04.2010 / 18:38
0

Você pode querer olhar para o Terracotta.

A terracota não distribui a JVM pela nuvem do EC2. Por isso, ele faz com que aplicativos Java não escalonáveis sejam escaláveis com pouca modificação de código. Terracota é semelhante ao Elastic Beanstalk, mas mais adequado para o manuseio:

  1. Java
  2. Dimensionamento
  3. Balanceamento de carga
  4. Replicação de banco de dados
  5. É Open Source / Open Core

    Aqui está o link link

por 13.04.2011 / 06:49