在早期的云开发项目中,主要的关注点是移动应用程序,这种安排是合乎逻辑的,因为云技术是一种新型的计算方案。几年后,许多企业意识到最佳的云应用或许是那些从未执行过数据中心的应用程序。怀着这样的想法,计划人员以及架构师们一直在应用程序的探索之中,以期云性能发挥到最佳的状态。
在设计过程中,IT专业人士发现了如下要点:
- 首先要查看工作流和组件化模型
- 在计划初期就要察觉到设计中的逻辑瓶颈
- 充分利用云供应商所提供的平台服务
- 从设计之初就要建立监控和APM体系
采用云计算的好处在于,它有别于遗留数据中心计算,而将重心放在计算的灵活性和敏捷性。软件架构师知道这种优势源于组件化应用的设计。然而,每一位架构师同样也知道组件化设计这条路需要走一段时间,导航功能一步步的设计会产生许多额外的开支。因此,架构师们应当意识到,任何云优化应用设计都需要先经过工作流程和组件化分析。
企业结构文档应该向架构师们提供工作流程的业务图示。对于那些基础数据无法访问的地方,应该开发一种封闭的循环,在监控目标应用程序的同时将工作人员的请求或者输入的信息转化为一种输出信息。通过先进的软件设计流程,这种高级别的工作流程将会被分解为不同的组件化工作流程。
针对应用程序而设计的路线图
一般来说,云应用设计的目的是要将所有的应用程序都变为带有虚拟图像的用户界面前端流程。该流程基于网络设计原则,支持中介数据模型中组件化工作流的在线交易过程。这种模型实现了云计划的两个重要目标:1)实现了设备独立性以及应用开发流程之外的工作人员定制化;2)根据工作容量的比例,应用现有的网络技术来设计应用程序前端组件。
云控制应用设计的第一步就是要在高级水平下应用该模型。接下来,查看olTP端的应用程序,需要将一般的逻辑请求转换为一种普通的、多格式的输出形式。
该流程将会被划为多个步骤,其中许多会与获取或者更新信息有关。每一步流程及其相关组件都会被许多特定的资源设置所限制。为了实现云性能最优化,我们需要先解决三个与约束有关的问题。
输入或者输出环节可以优化吗?内部操作系统可以提速吗?可否复制以提高工作流的速度?
在设计层面上,优化组件 I/O通常意味着,控制必须流进或者流程的信息量。也就是说,注意千万不要因为增加了超过实际组件所需的数据而夸大组件工作流的能力。在设计过程中,我们很容易在单独的交易中创建一个大的数据元素,并在接下来的工作流程中一直应用这个数据元素,但是,最好不要将组件不需要或者不用的多余的东西引入到设计中。
内部处理所需要的是与他们所期望的工作变革相吻合的组件。在处理过程中,组件的功能使命是非常重要的。其目的是要让操作系统可以尽可能的利用本地资源。
如果在不耗费成本的情况下可以复制参考表,那么这样做要比在互联网上连接用户组件而建立中心数据库的做法要好得多。通过组件分组将通用组件合并成一类单独的组件,或者将这些组件设置在工作中相邻的位置,这样就会提升本地存储的价值,优化连接也会更容易。
设计中我们要避免使用混合格式以及相同组件的处理步骤,因为,通过组件复制,它们会限制优化性能。如果组件访问了可能会被共享的数据资源,想做到不使用就会很难。
那些用于提升产量而难以被复制的组件将会是工作流程中的瓶颈,应该在设计阶段加以解决。通过优化核心资源可能使用的路径就会开发出许多提升组件性能的方法。
注意事项
我们要寻找多个组件在不同地点访问同一个数据库获取不同信息的案例,或许将所有信息设置在访问的初始阶段会更好。同样地,在设计中要谨慎使用组件化模型,因此,当应用程序以分片形式发送到云端时,敏捷性能将会以一种高风险方式被引入到交易中。
第二件需要注意的事情是要充分利用云供应商所提供的服务平台。大多是大型云供应商都会向客户提供云数据库管理系统服务、工作流管理和分布式工作流处理服务。通常,这些工具可用于接近Web前端和应用程序的olTP之间的部分。
需要注意的是,以上工具只有部分供应商能够提供,并且只有在公共云环境下才能使用这些工具。我们需要根据云平台的具体环境对应用程序进行定制化处理,只有这样才能得到充分利用。
最后一点是,在设计过程中建立绩效管理以及监控系统。如果组件可以识别性能增强机制,那么,水平缩放或者甚至是分级存储都能够得到最优化处理,并且也能够检查它们何时需要优化,以及它们需要什么形式的协调处理。没有突出的变革是无法有效地提高生产量的。
与数据中心相比,云环境下的性能更复杂,因为,我们不知道其中的资源分配细节,而且它也不会受周围环境所影响。我们最好在一开始就将这种性能优化管理概念融入到应用程序的设计之中,以免后悔没最先考虑到这一点。