从框架到平台

当我将近十年前作为Java开发人员开始我的职业生涯时,该行业正在经历革命性的变化。 Spring框架(于2003年发布)Swift发展起来,并成为庞大的J2EE平台的严重挑战者。 经过过渡时间后,我很快发现自己赞成使用Spring框架而不是J2EE平台,即使是早期版本的Spring,声明bean也非常乏味。

接下来发生的是对J2EE标准的改进,该标准后来被重命名为JEE。 尽管如此,在这个时代占主导地位的仍然是在Sun提出的平台上使用开源框架。 这种做法使开发人员可以完全控制他们使用的技术,但会扩大部署规模。 慢慢地,当云应用程序成为现代应用程序的规范时,我观察到了将基础架构服务再次从框架迁移到平台的趋势。 但是,这次,它不是受Cloud应用程序的驱动。

框架与平台

我从未听说过或不得不在学校使用任何框架。 但是,在加入该行业后,如果没有任何框架的帮助,就很难构建可扩展和可配置的软件。

据我了解,任何应用程序都包含实现业务逻辑的代码以及一些其他帮助程序,实用程序或用于设置基础结构的代码。 在许多项目中重复使用的与业务逻辑无关的代码可以被概括并提取出来以供重用。 此提取过程的输出是框架。

简而言之,框架是与业务逻辑无关但有助于解决应用程序中常见问题并适合重用的任何代码。

如果遵循此定义,则MVC,依赖注入,缓存,JDBC模板,ORM都是考虑的框架。

平台与框架相似,因为它也有助于解决应用程序中的常见问题,但是与框架相反,该服务是在应用程序外部提供的。 因此,公共服务端点可以同时为多个应用程序提供服务。 JEE应用程序服务器或Amazon Web Services提供的服务是平台的示例。

比较这两种方法,平台比框架更具可扩展性,更易于使用,但它提供的控制更少。 由于这些优势,平台似乎是构建Cloud Application时更好的使用方法。

我们什么时候应该在框架之上使用平台

转向平台并不能保证开发人员会摆脱框架。 相反,平台仅是构建应用程序时对框架的补充。 但是,在某些特殊情况下,我们可以选择使用平台或框架来实现最终目标。 我个人认为,在满足以下条件时,平台比框架更好:

  • 框架使用和维护都很繁琐
  • 该服务具有一些在实例之间共享的公共信息。
  • 可以利用其他硬件来提高性能。

在办公室中,我们仍在应用程序中使用Spring框架,Play框架或RoR,并且这不会很快改变。 但是,为了进入云时代,我们将一些现有产品从内部托管迁移到了Amazon EC2服务器。 为了充分利用Amazon基础架构并提高软件质量,我们对当前的软件架构进行了一些重大重构。

以下是一些我们要将产品集成到的平台:

Amazon Simple Storage Service(Amazon S3)和Amazon Cloud Front

我们发现,Amazon Cloud Front对于提高应用程序的平均响应时间非常有用。 以前,我们在英国和美国的内部服务器场中托管大多数应用程序。 这导致其他大洲客户的响应时间显着增加。 幸运的是,亚马逊拥有更强大的基础架构,其服务器场遍布全球。 无论客户身在何处,这都有助于确保包裹的交货时间恒定。

当前,由于手动为应用程序设置新实例,我们认为Amazon Cloud Front的最佳用途是使用静态内容,该内容与Amazon S3中的应用程序分开托管。 这种做法使CDN提供了更一致的交付时间,同时在浏览器中为静态内容提供了单独的连接计数,从而为我们带来了性能上的双重好处。

亚马逊弹性缓存

在集群环境中进行缓存从未如此简单。 “群集”一词意味着您的对象将不会被存储或从系统内存中检索。 相反,它是通过网络发送和检索的。 过去,此任务非常棘手,因为开发人员需要将记录从一个节点同步到另一个节点。 不幸的是,并非所有的缓存框架都自动支持此功能。 最佳的分布式缓存框架是Terracotta

现在,我们转向Amazon Elastic Cache,因为它便宜,可靠,并且为我们节省了设置和维护分布式缓存的巨大精力。 值得强调的是,分布式缓存决不是要取代本地缓存。 性能上的差异表明,仅当用户需要访问实时临时数据时,才应在本地缓存上使用分布式缓存。

数据分析的事件记录

过去,我们使用Google Analytics(分析)来分析用户行为,但后来决定建立内部数据仓库。 动机之一是能够跟踪来自浏览器和服务器的事件。 事件跟踪系统使用MongoDB作为数据库,因为它允许我们快速存储大量事件。

为了简化事件的创建和检索,我们选择JSON作为事件的格式。 由于浏览器无法防止跨域攻击,因此我们不能简单地将此事件直接发送到事件跟踪服务器。 因此,Google Analytic将事件以对静态资源的GET请求的形式发送到服务器。 由于我们完全控制应用程序的构建方式,因此我们选择让事件先发送回应用程序服务器,然后再路由到事件跟踪服务器。 这种方法更加方便和强大。

知识门户

过去,应用程序从数据库或内部文件存储库访问数据。 但是,为了能够更好地扩展,我们收集了所有知识以构建知识门户。 我们还构建了查询语言来从该门户检索知识。 这种方法为知识检索过程增加了一层,但对我们来说幸运的是,我们的系统不需要提供实时数据。 因此,我们可以利用缓存来提高性能。

结论

以上是我们在迁移到云时转换软件架构的一些经验。 请与我们分享您的经验和意见。

翻译自: https://www.javacodegeeks.com/2014/07/from-framework-to-platform.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值