Cloud是否准备好用于Enterprise Java Web应用程序? 寻求一个JEE托pipebuild议

问候所有在这里的聪明人!

我想问一下,如果将Java企业Web应用程序部署到Amazon EC2这样的,是否可行或是一个好主意。 更确切地说,我正在寻找一个应用程序的基础设施选项,这个应用程序可以处理几百个用户,但是CPU和内存密集型会话都不是。 我正在考虑专用服务器,虚拟专用服务器(VPS)和EC2。 我注意到有一个名为JBoss Cloud的项目,所以人们正在致力于实现这样的部署,但另一方面,它似乎还不成熟,我不确定云已经准备好了这种应用程序,它不同于典型的基于云的应用程序,如Twitter。 你会推荐将其部署到云吗? 优缺点都有什么?

该应用程序是一个Java EE 5 Web应用程序,其主要function是使用户能够通过组合可用部件来组合自己的定制产品。 它使用无状态和有状态的会话bean和JPA将实体持久化到RDBMS,并通过Web服务从公司库存系统中提取关于部件的信息。 除了外部用户外,还有less数内部用户使用这些内部用户,这些用户使用公司的LDAP进行身份validation。 应用程序应该处理大约300-400个并发用户构build他们的产品,并且应该具有合理的可扩展性和可用性,尽pipe在这个阶段这些素质只是中等重要的。

我提出了一个由防火墙(FW)和支持粘性会话和https的负载平衡器组成的体系结构(在云中,这将replace为EC2的Elastic Load Balancing服务和应用服务器上的FW,平衡器将是硬件),然后是两个物理集群应用程序服务器与Web服务器相结合(这样,如果一个失败,用户不会松散他/她的长期构build的产品),最后是数据库服务器。 数据库服务器将需要一个从属备份实例,如果失败,可以replace主实例。 这应该提供合理的可用性和容错性,并且只要单个RDBMS能够保持负载,就可以提供良好的可伸缩性,这应该是相当长的一段时间,因为大多数操作是在内存中使用有状态bean完成的,并且只是偶尔存储或从数据库中检索,数据量也很低。 一个有问题的部分可能是对远程库存系统web服务的依赖,但在应用程序中对其输出进行很好的caching时,应该也可以。

不幸的是,我对系统资源(内存大小,CPU /内核的数量和速度)只有几百个用户需要这样的“平均Java EE应用程序”的模糊想法。 根据亚马逊的实际情况,我粗略的估计是没有根据的是1.7GB和一个2.5GHz主频(高CPU中等实例)的单核2核“现代CPU”应该足够用于任何两个应用服务器因为我们可以通过提供更多的资源来处理更高的负载)。 或者我会考虑使用大型实例(64b,7.5GB内存,1GHz的2个核心)

所以我的问题是,这样一个部署到云是否在技术上和财务上可行,或者专用/ VPS服务器是否是一个更好的select,是否有一些类似的现实世界的经验。

非常感谢你! / Jakub圣

PS:我在一个云案例研究中发现了JBoss EAP,这个案例研究表明可以将一个真实世界的Java EE应用程序部署到EC2云中,但不幸的是,没有关于拓扑,实例types或者其他任何细节。 (

从长远来看,EC2很less比你自己的专用服务器更具成本效益。 它的主要优势在于快速的可扩展性。 如果你的用户基础变化相对较慢,那么这可能是不值得的。

但最重要的是,设置一些东西很容易,只需要less量的$,而不必事先在硬件上布置很多东西。

Glassfish有现成的AMIs。 我的build议是尝试1或2个小实例,它会告诉你清楚VPS /专用服务器是否会更好的价值,并给你一个更好的想法你的要求。

你可能想看看兵马俑。

兵马俑在EC2云上分发JVM。 所以它可以使不可扩展的Java应用程序变得可伸缩,只需很less的代码修改。 兵马俑与Elastic Beanstalk类似,但更适合处理:

  1. Java的
  2. 缩放
  3. 负载均衡
  4. 数据库复制
  5. 它是开放源码/开放核心

    这里是链接http://www.terracotta.org/