计世网

首席架构师教你:怎么用AWS最省钱?
作者:刘沙 | 来源:计算机世界
2019-08-08
要降低云计算的成本,最根本的方式还是要让系统架构适应于云计算,能够充分利用云计算提供的服务,以及云计算的收费模式。

 

  什么样的架构才算是好的架构?

  在汇量科技(Mobvista)技术副总裁兼首席架构师蔡超看来,作为IT人,一定会想到很多关键词:可伸缩、可扩展、高可靠性、可维护、可复用……这些都是好的架构应该具备的要点,而云端基础设施更加有助于构建可伸缩和可维护的系统。但更重要的是,好的架构首先必须是企业负担得起的架构。

  “现在很多企业都会面临一个共同的问题,那就是云计算的成本。”蔡超告诉《计算机世界》记者。

汇量科技(Mobvista)技术副总裁兼首席架构师 蔡超

 

  成本的秘密

  作为一家提供移动广告及营销服务技术平台的公司,汇量科技致力于为全球应用开发者提供移动广告及数据分析服务,目前已建立起覆盖200多个国家和地区、每日触达超10亿用户的移动流量体系。在2013年公司成立之初,汇量科技就做了架构“All in Cloud”的决定,并且把系统都放到AWS的云平台上,采用了Amazon EC2、Elastic Load Balancing、Amazon Redshift、Amazon DynamoDB、Amazon S3、Amazon RDS、Amazon EMR等一系列产品。

  在加入汇量科技之前,蔡超曾经担任过亚马逊全球直运平台首席架构师、亚马逊(中国)首席架构师,而正是这样的经历,让汇量科技的创始人“误以为”蔡超掌握了亚马逊成本的秘密。

  “但其实根本没有这样的秘密,我们与AWS之间的结算也没有任何优惠。”蔡超笑着说道。不过,也正是这个小插曲和过往的种种经历让他意识到,在云端构建成本可控的大规模系统其实是个非常大的挑战,“所以我应该为这个做一点什么。”

  在加入汇量科技后,蔡超发现,汇量科技已经采用过很多降低云计算成本的办法,如:对于低CPU利用率的机器进行合并、淘汰,对数据存储进行一些优化,按照一定的时间段购买Reserved instance等等。“但在这样的情况下,我们依然觉得成本对业务的挑战非常大。”蔡超表示,“我觉得整体架构要更适应于云,要对云的成本优化进行重新架构。”

  用微服务实现细粒度扩展

  蔡超采取的第一种方式是微服务。过去汇量科技扩展一个单体系统的时候通常是把整个单体系统复制一下,再对大量的数据进行分片。但是采用微服务以后,就可以找到与瓶颈相关联的服务,只复制这部分服务。因为微服务的一部分就是数据,已经在微服务里做了分割,可以对微服务里的数据进行进一步的分片。“所以其实是增加了扩展的维度,做了一个更细粒度的扩展,我们可以利用这种细粒度的扩展做到更高效的硬件资源利用。”

  据透露,通过这样的方式,汇量科技对收购的GameAnalytics公司的架构进行重构,将GameAnalytics的整体成本成功降低了50%。

  “在构建微服务时,还要考虑到Fault Oriented、Recovery Oriented和Chaos Engineering。就是用面向错误、面向恢复的编程和混沌工程去构建高可用的微服务。”蔡超强调,尤其是混沌工程,对于像汇量科技这样大规模的公司具有重大的意义。

  因为汇量科技有超过5000个Instance是在云端的,没有办法构建足够扩展的测试环境。那么该如何知道系统的可用性、容错性?当有多少请求变成慢请求时,还能满足用户的SLA,满足广告平台要求的100MS的延迟?“其实很难去评估,因为构建不了那么大规模的测试环境。”蔡超透露,“我们就是通过混沌工程来解决这些问题的。后来我们把自己做的这些东西也对外开源了,希望可以帮到更多人在云端做好这样的事。”

  用弹性系统支撑竞价实例

  另外一种是采用Amazon EC2 Spot Instance。蔡超指出,“当你的服务变得更加弹性、更可恢复的时候,你反倒可以找到很多实现更低的成本方式,Spot Instance就是其中之一,也叫做竞价实例。”

  据了解,一般情况下Spot Instance的价格是On demand价格的1-2折,只要你出的竞价高于当前Spot Instance的价格,你就可以拿到这个Spot Instance。但是你要支付的价格并不是你出的竞价,而是当前的市场价格,所以你出多少钱其实都没有关系。

  不过Spot Instance本质上是将AWS闲置资源开放出来给大家用的,当资源紧张的时候,Instance也会被回收。但如果你的系统有足够的弹性和容错能力,当一些Instance被拿走的时候,对你的SLA不会造成严重的影响,这时还是能够节省很多成本。

  所以企业要构建一个非常有弹性的系统,要面向恢复设计、面向容错设计,也可以在收到中断警告时,用新的Instance来取代原有的Instance,并且实现上面的应用迁移。据悉,在汇量科技,有70%在线系统的Instance都是Spot Instance,所以会对系统架构有很高的要求。

  让蔡超自豪的是,2018年底,他完成了加入汇量科技时许给CEO的承诺,将单次请求的成本降低了65%!

  用SpotMax帮助更多云用户

  蔡超坦言,汇量科技非常愿意把这些成功经验分享给更多的人,帮助客户和其他云的使用者一起把事情做好,所以汇量科技推出了SpotMax。“它既不是一个产品,也不是一个系统,也不是一个服务,它包括三部分,都是基于我们的经验得来的。”

  第一部分是MaxArch。如果有人需要我们的帮助,我们可以和客户一起去复盘我们的架构,帮助他们做一个更适合云的、在云端能够节省成本的架构。“高弹性的架构才是获取更低成本的根本!”

  第二部分是MaxChaos。真正实践混沌工程的不仅仅是几个条款,它并没有那么简单,所以我们会在我们的开源服务以外,为用户提供更好的服务,让用户能够把它真正做起来。

  第三部分是MaxGroup,是一个服务或一个产品,用于解决线上Spot instance集群的应用问题。它包括了根据现有服务集群运行情况及业务特征推荐Spot Instance集群的机型构成,线上现有集群向Spot Instance集群的安全自动迁移, 主动集群防退化以及基于强化学习的混合机型集群负载均衡等。

  让你的架构充分适应云计算

  蔡超向记者笃定地表示,未来云计算的成本还会有下降空间,一方面是基于技术的进步和新的思路,另一方面大家也可以看到,云计算的整体价格是在不断下调的,如AWS就对Instance进行过多次降价。

  “不过,要降低云计算的成本,最根本的方式还是要让系统架构适应于云计算,能够充分利用云计算提供的服务,以及云计算的收费模式。”蔡超强调,目前很多企业的传统架构都是基于本地数据中心的,如果要从本地架构直接迁移到云端,一定会遇到很多需要优化的问题。而现在很多工程师和架构的设计思想还是来自于非云的时代,大家的知识体系也要进行更新,要花时间去摸索、实践,要用新的思路来构建云上的架构。
 

责任编辑:刘沙