本文为CSDN博主「L-JingJing」的原创文章
原文链接:https://blog.csdn.net/sch881226/article/details/105362679
就在不久前,Mobvista刚刚发布了2019年的财报数据。我们观察到其程序化广告收入已高达22.3亿元,同比增长40.8%;经调整后EBITDA达3.6亿元,同比增长高达19.5%……试想仅仅上市一年,Mobvista在增长放缓的大环境下依然能够取得如此“高光时刻”,可见其发展势头不容小觑。
在收入方面大举“开源”的同时,Mobvista还运用技术手段有效“节流”。财报中提到,过去一年汇量科技的程序化业务收入显著增長的同時,程序化业务的服务器成本下降了10.8%,服务器成本占程序化广告业务收入的比例,从2018年的6.6%降至2019年的4.2%。
这归功于汇量科技独立研发的技术中台——尤其是其中的弹性集群管理平台SpotMax,在过去一年中的深度应用。在程序化广告业务的长期实践中,Mobvista已经将大数据计算引擎(EnginePlus)、大规模机器学习算法平台(MindAlpha)、数据管理平台(Datatory)和云服务器弹性集群管理平台(SpotMax)沉淀为可复用、共享和迭代的技术中台。技术中台提供的大数据实时计算的能力,为支持广告精准定向和展示向安装的转化率持续提升,推动程序化业务的规模化增长提供了技术基础。而技术中台更为直观的作用是实现云服务器成本的集约。
SpotMax背后的云服务成本之观
记得初识SpotMax还是在去年云栖大会与阿里云联合发布之时,据悉在联手打磨此款服务的过程中,阿里云弹性计算团队会根据Mobvista的反馈对自身弹性集群作相应的改进提升;而Mobvista方面则是将自身的产品与解决方案更好融入阿里云的解决方案库中,并定期向阿里云方面的架构师与销售团队同步,便于一同将价值传递给用户。
盘点服务始末,我们发现,SpotMax始于Mobvista在利用Spot Instance优化云端成本上积累的一定经验,为的就是帮助其他云的使用者找到成本可控的大规模云端系统实践的可行之路。“我们更适合将SpotMax定义为一种体系,即利用弹性计算资源进行云端系统成本优化的工具,它包含产品和解决方案等诸多层面,甚至可以被理解为一种生态,可做到因需求不同来选择具体的组成部分并完成既定目标。”Mobvista技术副总裁兼首席架构师蔡超对此总结道。
如今SpotMax解决方案和服务主要包含MaxArch、MaxChaos和MaxGroup三部分。其中MaxArch是一种基于架构的咨询服务,主要是Mobvista为用户提供针对现有架构的评估以及向云上迁移的实践建议与有关云原生的架构设计等;而MaxChaos则是基于开源软件与Mobvista自研的诸多服务框架之上,提供可以帮助用户持续提升自身系统高可用性的混沌工程服务;最后MaxGroup则可被简单定义为Spot Instance集群管理服务,主要通过集群防退化、集群推荐以及基于强化学习的混合机群负载均衡等助力用户进一步降低云上系统的成本。总结一句,SpotMax寄希望于云计算平台得天独厚的弹性计算基础能力,以此搭建一套实时竞价和调度管理系统,达成按需购买与抢占实例低价的双重优势。
读到此处,想必各位看官对刚才提出的“双重优势”一头雾水,所以在细聊之前,晶少还是先针对性介绍下目前用户购买使用云服务的几种方式以及与之产生的成本关联吧!如今用户购买使用云服务会有这样几种形式,最常使用的当属按需实例,即随买随用、按需获取模式,这种方式虽然省去了提前规划的复杂性,但也是最昂贵的使用方式之一,如果不是财大气粗的企业用起来恐怕还是吃不消的。
另外一种则是预留实例,即用户通过预定用量和时长来享受一定折扣的服务,但缺陷比较明显,那就是不够灵活弹性,在这个“天下武功为快不破“的时代显然也是使用起来寸步难行。而以SpotMax服务为代表的则是第三种方式,也是目前Mobvista业务中在线系统正在大规模使用的,一度被阿里云称之为抢占实例,顾名思义就是“想用就要抢”的理念,这也是目前提出的一种最大化购买碎片计算力资源来优化云上系统成本的做法。
如果从技术角度考量这几种形式,可以这样被理解:常用的按需获取其实主要利用了云计算的弹性拓展特性,因为此过程中云服务提供商需要具备让用户可以随时随地获取被释放计算资源的能力,所以就不得不预留大量的计算资源,竞价实例可以被认为是云服务提供商利用闲置计算资源推出的实例,其价格会根据供需情况实时变化,但与按量实例相比较其价格优势就非常明显了。
可尽管竞价实例的价格通常是按需实例的10-20%,但遇到出价低于市场价或是资源紧张的情况就会出现被回收,也就是关于竞价实例中存在的中断机制。基于此为了保持系统服务的可持续性和服务水平,用户就需要在竞价实例被回收时及时作出应对系统集群容量变化的有效举措 ,通常情况下此过程中需要结合一些Spot集群管理软件,帮助维持集群容量的动态稳定,这样就可做到在不影响可用性的前提下实现系统成本的大幅度节省。
基于此蔡超表示,SpotMax就是源于该理念所达成的设计实践,目前已经在Mobvista内部同时支持了三条主要业务线的运维工作,主要侧重大量抢占实例支撑的在线系统,辅以其他优化措施实现了单位请求成本节约70%。
关于未来的技术创新迭代,他表示其实最初设计SpotMax时就已经考虑到要积极有效应对用户不同场景中千差万别的需要以及以后层出不穷的刚性需求,所以在架构上着力采用了插件的模式,即可根据用户场景不同来选择相应的插件使用。“目前Mobvista针对容器化场景的插件已经被提供,另外某些定制化创新性质的插件正在被研发中。尽管目前SpotMax依然处于早期的推广使用阶段,但从反馈的数据中我们发现针对目前试用用户的系统计算资源成本至少可降低一半左右。”
云原生架构实践促Mobvista“云端俭省之道”
如此说来,SpotMax是云上系统成本降低的刚需产物不假,但我们目前所经历的云上系统成本居高不下又根源于何呢?其实很重要的一方面是计算资源的成本使然。所谓计算资源成本,简单来说就是我们熟悉的云端虚拟机、数据存储、流量使用以及云端资源所涉及的诸如消息队列服务、机器学习等功能性服务之类;如今随着企业上云的规模化与产业化差异性越发鲜明,需求的碎片化趋势也逐渐加剧,如何有效降低运成本就顺理成章变成用户关注的大问题,所以也就不难理解SpotMax的应运而生了。
对此晶少觉得,其实降低成本最直观有效的办法就是系统可以做到对需求量完成自动伸缩以及合理使用服务平台的收费模式,在此过程中无论是最基本的CPU利用率还是数据存储选择的范围等都会被纳入考察范围之内,进一步来说如果想要达成此种弹性的系统要求,架构的合理性绝对是关键所在。“在利用云特点的基础之上采用更加细腻有效的伸缩方式,比方说微服务架构让系统伸缩力度更颗粒性。毕竟复杂单体系统伸缩会需要更大而昂贵的计算资源,繁杂的人力支持更是不可缺少。”蔡超补充道。
具体来说,通过架构调整来完成系统伸缩力度更细化,其实本质上是促成架构更高效适用云平台的契机之一,即利用云平台特性让服务集群更好地应对竞价实例,减少中断对服务集群自身容量的影响并稳定容量,例如采取最基本的机器保障支持利用率、根据数据属性选择合适的存储方式以及线上集群自动伸缩等。
说到此处不得不提及一点,其实Mobvista在投身SpotMax研发之前自身也经历过促成云成本降低的艰难探索,无论是尝试低CPU利用率机器的合并淘汰,还是对数据存储的优化以及购买Reserved Instance预留实例等,同时也是蔡超在加入Mobvista之后秉承all in cloud的前提不断跟进的重要任务之一。
众所周知,Mobvista旗下拥有程序化广告平台,移动程序化广告的具有请求量巨大的特性,峰值达到单日近千亿次,同时对于响应时间也有着非常苛刻的要求。晶少了解到通常程序化一般对于响应时间的要求是50-100ms,在这种苛刻的条件下要采用竞价实例的话势必要充分提高系统的弹性,一来二去,展开Mobvista架构向微服务为代表的云原生构架迁移就被提上了蔡超的日程。
通过介绍,晶少知晓早年间Mobvista的几大业务系统都是部署在云端较为庞大的单体系统,其中最大的瓶颈则是需要横向扩展时不免要整体复制,过程中必然需要更多的计算资源。基于此Mobvista方面首先开始了从云单体系统向云原生架构的改造,构建微服务成为第一步,该实践需要考量的是面向容错、恢复和混沌工程,以此建立一个高可用的微服务架构使云上系统更具弹性,以便更好利用资源。
深入提及架构改造,蔡超明确,云原生实质是帮助企业高效运用云平台,以便更快速开发和发布应用的一些技术方法及理念。但在此尝试中由于基础设施的改变需要相应架构调整去适配,所以本地系统直接向云上迁移是完全不可行的,不但使用艰难还会造成巨大的成本浪费。“另外更容易被忽视的一点,企业尝试云原生时往往停留在系统建设层面,而忽视了与其配套的开发团队甚至是工作方式的相关调整,这方面确实需要很长一段时间来解决,不能一蹴而就,这也算是Mobvista的一些宝贵的实践心得。”
如今Mobvista已经在架构方面完成了微服务的改造,未来还将紧跟技术趋势加大对容器化、服务网格等技术的引入。“我们希望能够提升基础设施的抽象层次,做到从虚拟网络到容器网络,再到服务网络,如此就可以大大提升大规模与复杂系统的可维护性。更深入来讲,无论是目前的推广、变现还是数据洞察业务,抑或是云端架构改造所带来的成本优化,本质上为企业创造价值并构建工具生态的想法是需要持续被坚持的,也是Mobvista的大事儿。”蔡超说。