把一个应用迁往云计算并不是简单地仅仅生成一个机器镜像而已。一次云计算迁移可能会危及数据中心设施,而数据中心设施是支持应用完整性、性能、安全性以及合规性的基础。虽然这些因素都是非常重要的,但是任何一个应用的首要关键就在于它是否能够满足业务需求,而其运行性能则是确定这一点的重中之重。
应用性能管理(APM)不仅是一个措施集,它也是一个工具包——这也是用户体验质量(QoE)中最为关键的要素之一。要么把当前APM实践转移至云计算,要么用与云计算友好等价的方法取代目前的做法,这是至关重要的。
传统APM是通过以下一种或多种方法来注重应用并实现性能提升的:
• 流量压缩以提高有效吞吐量;
• 在接入访问端,按时间或性能关键的流量进行优先级排序;
• 对传输控制协议进行专门更换,以便于更好地应对丢包问题;
• 通过网络实现多路平行通路,以提高有效带宽;
• 跨多个服务器的流量负载平衡。
一般来说,所有这些方法都可以在连接的两端——用户端和服务器端——通过使用一个设施或软件代理来实现。但是,当服务器端迁移至云计算时,这样的实施方法就可能存在问题了,尤其是在它涉及网络设施的情况下。云计算运营商很少会允许用户在他们的数据中心内安装设备,即便有时他们允许用户这么做了,应用在云计算虚拟机中的分布也会让应用远离其加速设施。
这个问题的解决方案就是使用APM软件工具而不是硬件。为了更有效地解决这个问题,APM工具必须以网络中间件的形式存在于应用的机器镜像中。如有需要,在服务器端基于软件的代理仍可与设备配对,这样的组合将至少能够支持目前APM措施中的部分功能。
在云计算应用性能中的顽固瓶颈问题
负载平衡也带来了具体问题,不仅是因为云计算供应商网络不再接受外部设施,而且是因为在云计算中多个应用实例可能并不驻留在同一个数据中心内。DNS有基于软件、分布式负载平衡的机制,但是这可能需要针对应用对它们稍作调整以便于让应用能够正常运行。
下一步就是解决云计算外出现的网络性能问题了。云计算供应商通常都是通过互联网连接至用户并提供最佳服务的。当企业需要更高性能时,他们就必须使用虚拟专用网络(VPN),而且也并不是所有的云计算供应商都会允许用户通过VPN连接访问他们的云计算的。即便供应商支持VPN接入访问,但是网络运营商所提供的VPN服务也有可能存在限制,而且使用VPN也会对云计算功能造成影响,例如托管点到地理区域的分派。云计算规划师必须非常清楚每一家潜在云计算服务供应商所提供的每一个VPN选项,并应试图找出其协议的寿命。
云计算中的性能管理可能还需要提供未能在数据中心内时刻待命可用的选项。大约三分之一的云计算规划师都倾向于使用“云计算爆发”的方法把工作负载从数据中心迁往云计算,从而应对工作负载突增的特殊情况。很多本地的云计算应用已经拥有了“水平扩展”的功能或者自动实例化应用新副本的功能以增加用户数量或服务交易的数量。真正的挑战在于这种规模扩展需要规划师进行精心规划,并且有可能需要对应用本身进行变动。
为了进一步了解水平扩展的优点和需求,可以先构建一个简单的工作流程图来说明应用是如何服务特定用户或交易的。在很多情况下,它会需要通过一个网络服务器、一个应用服务器和一个数据库服务器。经过对当前性能的分析,你将会知道,究竟这些环节中的哪些因素才是真正的性能瓶颈。如果一个特定应用在网络服务器上使用了80%的处理资源,而用户通过产品目录进行解析,那么复制网络服务器(以及目录)将对应用的性能造成较为明显的影响。如果这里只使用了20%的时间,而提供更多网络服务器副本并没有办法实质性地提高性能,那么这就意味着性能瓶颈问题应该是由其他因素造成的。
数据库访问通常会造成新的云计算瓶颈,这是因为企业用户往往并不愿意为网络接入访问和云计算存储买单,而且他们也不愿意承担把关键应用数据迁往云计算的相关安全性和合规性风险。在这种情况下,一些云计算应用就必须通过网络从企业内部往外拉数据。在云计算爆发的情况下,这几乎总是需要的,因为企业的主要数据都保存在应用所运行的数据中心内。
创建一个高效的数据通路是非常关键的,而这可能也意味着在云计算和数据中心之间的数据库连接上增加APM措施。问题在于压缩总是会增加延迟时间,而对于某些数据访问策略来说,这就如同低容量问题一样糟糕。最好的办法就是根据接收服务请求的数据服务器的实际使用情况而不是块级I/O命令进行规划。这将减少数据量,并降低跨接口移动单个记录所造成的累积延迟时间。请求/结果交换也不是延迟敏感的,因此你可以针对应用-数据库连接增加压缩以及其他的APM功能以提高性能。