云是否为企业 Java Web 应用程序做好了准备?寻求 Java EE 托管建议 [已关闭]
问候这里所有聪明的人!
我想问一下,将Java企业Web应用程序部署到Amazon EC2等云中是否可行或是一个好主意。更确切地说,我正在为一个应用程序寻找基础架构选项,该应用程序将处理数百个用户,这些用户具有长时间但既不占用CPU也不占用内存的会话。我正在考虑专用服务器,虚拟专用服务器(VPS)和EC2。我注意到有一个名为JBoss Cloud的项目,所以人们正在努力实现这样的部署,另一方面,它似乎还不成熟,我不确定云是否为这种应用程序做好了准备,这与Twitter等典型的基于云的应用程序不同。是否建议将其部署到云中?有哪些优点和缺点?
该应用程序是一个Java EE 5 Web应用程序,其主要功能是使用户能够通过组合可用的部件来组合自己的定制产品。它使用无状态和有状态会话 Bean 和 JPA 将实体持久化到 RDBMS,并通过 Web 服务从公司的库存系统获取有关部件的信息。除了外部用户之外,它还被少数内部用户使用,他们根据公司的LDAP进行身份验证。应用程序应处理大约 300-400 个并发用户构建其产品,并且应该具有合理的可伸缩性和可用性,尽管这些质量在此阶段仅具有中等重要性。
我提出了一个由防火墙(FW)和负载平衡器组成的架构,支持粘性会话和https(在云中,这将被EC2的弹性负载平衡服务和应用程序服务器上的FW所取代,在物理架构中,负载平衡器将是一个硬件),然后是两个物理集群应用程序服务器与Web服务器相结合(因此,如果一个失败, 用户不会失去他/她长期构建的产品),最后是数据库服务器。数据库服务器需要一个从属备份实例,该实例可以在主实例发生故障时替换主实例。这应该提供合理的可用性和容错能力,并提供良好的可扩展性,只要单个RDBMS可以保持负载,这应该在相当长的一段时间内是可以的,因为大多数操作都是使用有状态bean在内存中完成的,并且只是偶尔从数据库中存储或检索,并且数据量也很低。一个有问题的部分可能是对远程清单系统Web服务的依赖,但是通过在应用程序中很好地缓存其输出,它也应该没问题。
不幸的是,我对系统资源(CPU/内核的内存大小,数量和速度)只有模糊的概念,这是几百个用户需要的“普通Java EE应用程序”。根据亚马逊的实际产品,我粗略且毫无根据的估计是,1.7GB和单个2核“现代CPU”,速度约为2.5GHz(高CPU中型实例)应该足以满足两个应用程序服务器中的任何一个(因为我们可以通过配置更多的应用程序服务器来处理更高的负载)。或者,我会考虑使用大型实例(64b,7.5GB RAM,1GHz时的2个内核)
因此,我的问题是,这种部署到云中是否在技术和财务上可行,或者专用/ VPS服务器是否是更好的选择,以及是否有一些类似的东西的实际体验。
谢谢!/雅各布·霍利
PS:我在云案例研究中发现了 JBoss EAP,该案例研究表明可以将实际的 Java EE 应用程序部署到 EC2 云,但遗憾的是,没有关于拓扑、实例类型或任何内容的详细信息:-(