运维开发网

Cloud准备好了Enterprise Java Web应用程序吗?寻求Java EE托管建议

运维开发网 https://www.qedev.com 2020-03-25 18:39 出处:网络 作者:运维开发网整理
问候这里的所有聪明人! 我想问一下,将Java企业Web应用程序部署到Amazon(如Amazon EC2)上是否可行或者是一个好主意.更确切地说,我正在寻找应用程序的基础架构选项,该应用程序将处理长达数百个用户,但不能处理CPU或内存密集型会话.我正在考虑专用服务器,虚拟专用服务器(VPS)和EC2.我注意到有一个名为JBoss Cloud的项目,所以人们正在努力实现这样的部署,另一方面它似乎还
问候这里的所有聪明人!

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

该应用程序是一个Java EE 5 Web应用程序,其主要功能是使用户可以通过组合可用的部件来组成自己的定制产品.它使用无状态和有状态会话bean和JPA将实体持久化到RDBMS,并通过Web服务从公司的库存系统中获取有关零件的信息.除了外部用户,它也被很少的内部用户使用,他们根据公司的LDAP进行身份验证.该应用程序应该处理大约300-400个并发用户构建其产品,并且应该具有相当的可扩展性和可用性,尽管在这个阶段这些质量只是中等重要性.

我提出了一个由防火墙(FW)和负载均衡器组成的架构,支持粘性会话和https(在云中,这将被替换为EC2的弹性负载平衡服务和应用服务器上的FW,在物理架构中,平衡器将是HW),然后两个物理群集应用程序服务器与Web服务器结合(以便如果一个失败,用户不会松开他/她的长期建立的产品),最后是数据库服务器. DB服务器需要一个从备份实例,如果失败,可以替换主实例.这应该提供合理的可用性和容错性,并提供良好的可扩展性,只要单个RDBMS可以保持负载,这应该是好的一段时间,因为大多数操作是在内存中使用有状态的bean完成的,只是偶尔存储或从数据库检索,数据量也很低.一个有问题的部分可能是对远程库存系统webservice的依赖,但是在应用程序中对其输出的缓存也很好.

不幸的是,我对于几百个用户需要的这种“平均Java EE应用程序”的系统资源(内存大小,CPU /内核的数量和速度)只有模糊的想法.基于实际的亚马逊产品,我粗暴而无根据的估计是,1.7GB和2.5GHz速度(高CPU中等规格)的单核“2 CPU”现在应该足够用于两个应用服务器因为我们可以通过配置更多的负载来处理更高的负载).或者,我会考虑使用大型实例(64b,7.5GB RAM,1GHz的2个内核)

所以我的问题是,这样一个部署到云端在技术上和财务上是可行的,还是专用/ VPS服务器是否会是一个更好的选择,以及是否有类似的现实世界的经验.

非常感谢你! /雅库布圣

PS:我发现JBoss EAP in a Cloud Case Study表明可以将一个真实世界的Java EE应用程序部署到EC2云中,但不幸的是没有关于拓扑,实例类型或任何内容的细节:-(

我从一个EC2 High-CPU Medium实例提供“几百个用户”.没有负载平衡,没有专用的数据库服务器,没什么好奇的.只是一个单一的盒子.另外我正在使用一些服务:

> Elastic Block Store用于MySQL数据,MySQL binlogs和Lucene索引

> S3用于资源和备份存储,每个显然不同的篮子

> SimpleDB资源元数据

> CloudFront资源 – 主要是因为我们可以:)

> Simple Queue Service用于消息传递(用于排队一些后台任务)

正如我所说,没有什么好奇 – 至少在亚马逊的云环境中.一切都不到200美元/月.关于定价,你应该注意.亚马逊在模糊主要成本方面做得很好.例如,在查看CloudFront Pricing时,您可能会看到每GB 0,15 $,但是每10,000个忽略0,01 $ – 对于很多请求来说,这是一个非常小的价格,不是吗?大惊喜:我们的CloudFront成本的2/3是针对请求(每个请求约3 KB). EBS的I / O请求也是一个类似的故事.

因为它是非常容易扩展(使用更大的实例,移动数据库在Relational Database Service)我建议你从同样的设置开始.正如你所说,投入更多的盒子很简单(假设你的设置支持在运行中添加/删除节点).这使得通过试验和错误选择适当的设置容易可行 – 一些彻底的负载测试应该做这个工作.选择适用于您的预期负载(加上一些额外的功率),并且一旦有生产数据,增长/收缩.

作为一个结论:是的,肯定有可能在EC2上托管Java EE应用程序:)

编辑:作为附注:将EC2与传统托管的价格比较是比较苹果和橙子 – 至少只要您没有获得网络的SLA,几乎无限的可扩展性,无硬件问题,几乎无限制和冗余的存储,不同的可用区域和一堆额外的服务.如果有人告诉你传统的托管是便宜的话,他可能是一个系统管理员,对他的工作非常担心;)不要误会我,而是更便宜一些,但是少一点点钱.

顺便说一句,我并不隶属于亚马逊…但是我觉得我应该因为一个好的发言人而被奖励,不是吗? :D

0

精彩评论

暂无评论...
验证码 换一张
取 消