向公有云转型就跟迁移移动应用和支付每月账单一样简单。然而,你的开支是否超出应有的费用?下面这五项公有云应用程序优化技术将帮助你节省费用,另外还能提升性能。
1. 重构代码,以应对云服务提供商的计费模式
亚马逊网络服务(AWS)不仅仅针对使用的计算、存储和网络带宽向用户收费――每当你访问你的存储资源以便读取或写入数据时,它也收费。因而,只要有可能,你可能想集合应用程序的读取和写入,并将它们归入单一操作。那样一来,一旦你花钱购置了自己的服务器,每当进行读取或写入操作,就不会产生额外的费用。
这项云优化技术的整体效果取决于你签约使用的那家公有云服务提供商(CSP)的定价方法。无论你与哪家CSP签约,重构代码都可以视作是提升应用程序性能的机会。
2. 优化已选择的默认云实例
使用EC2构建实例时,你可以在不同层次的计算、内存和存储等资源之间进行选择。此外,EC2提供了竞价型实例(Spot Instance),这种实例是指随时可供使用的额外容量,以低于普通实例的价格来提供。
有必要花点时间试一下你的应用程序,以便确定你所需要的计算、内存和存储等资源的***数量。这将帮助你确保没有在容量或配置上开支过度,它会帮助弄清楚要不要考虑使用竞价型实例(或者另一家CSP提供的同等服务)。
3. 兼顾所需的服务级别和默认的云实例
每个应用程序都有各自的服务级别配置文件――也就是它的一般用途和功能。比如说,你那个面向客户的电子商务网站其服务级别就不同于内部员工门户网站。对照各种应用程序所需的服务级别评估公有云实例的成本,可能会帮助你优化公有云成本。
不妨回顾发生过的Netflix停运事件。考虑到视频流服务具有的性质,鉴于Netflix具有存储和带宽密集型的特性,强行启动亚马逊建在另外地方的另一个数据中心可能行不通。然而,必要的话,可以优化不大密集、较为重要的关键任务型服务,以便由替代的数据中心来提供服务,因而让Netflix可以不受此类停运事件的影响。
4. 微调自动扩展规则
有些应用程序可自动扩展(增加和减少)服务器实例的数量,它们为优化提供了大好机会。比如说,你可能有一条自动扩展规则:一旦处理器的使用率在所有当前实例上达到80%,就创建一个新的实例;还有另一条自动扩展规则:一旦处理器的平均使用率达到40%,就创建新的实例。
你如何知道80%和40%是正确的数字?为何不是85%和35%?如果采用后一个规则,你就可以创建较少的实例,并降低成本。
此外,各应用程序对计算、存储和带宽等资源的需求都不一样。因此,你的规则需要基于以上三个因素的复杂组合,而不是仅仅基于处理器的使用率。你可能需要试一下对你的公有云应用程序和所需的服务级别而言看似合乎逻辑的组合。然后,你可以在一段时间内优化这些百分比。
5. 数据库行优化
Netflix之类的应用程序具有局部性,这意味着大多数时候,客户只能访问属于他们的数据。Netflix使用AWS的地区(Region)和区域(Zone)来托管运行服务器,为住在那些数据中心附近的客户提供服务。
这之所以能成为现实,多亏了数据库分片技术。该技术让你可以对数据库中的行进行分区,将不同的分区存储在位于不同数据中心的数据库内。这项技术还适用于信用卡处理之类的应用,因为分片技术适用于局部的使用模式,比如查询某个持卡人的交易或与某个商家之间的交易。
你不需要存储所有数据库实例中的所有数据库行。如果你能划分数据库行,并将它们存储在不同实例中的数据库分区,那么你就能充分发挥使用模式的局部性。这将减少你所需要的服务器实例的数量,因而减少公有云服务的成本。
你将应用程序转移到公有云后,实际上它可能很顺畅地运行,没有任何变化。不过,如果你注意到CSP如何收费,并结合你的应用程序使用计算、内存、存储和网络带宽等资源的模式,很容易降低公有云的费用。借助一些代码重构优化应用程序本身也许能提升应用程序的性能,并延长使用寿命,而试用并微调你自己的默认实例以及自动扩展规则也许有助于进一步降低CSP成本。