蔡超.jpeg

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

7月31日,AWS技术峰会2019(北京站)在北京国家会议中心举行,本次大会以“即刻构建”为主题,探讨前沿云端技术及最佳实践。出席大会的汇量科技Mobvista作为AWS客户,在其移动营销领域已有长期的云原生软件架构经验。

Mobvista技术副总裁兼首席架构师蔡超,在2017年加入Mobvista之前曾任亚马逊全球直运平台首席架构师、亚马逊(中国)首席架构师。在云端构建成本可控的大规模系统正在成为一个非常大的挑战,为此蔡超从Amazon转到Mobvista,探索成本可控的大规模云端系统实践。

成立于2013年的Mobvista专注于为全球APP开发者提供移动广告及数据分析服务。截至2018年底,Mobvista为2400多家广告主提供获客服务,为超过1500个应用开发者的逾6900款应用提供变现服务,日均触达移动终端用户超过10亿。此外,Mobvista的移动分析SaaS平台已追踪分析49,000多款游戏的数据。

作为一家在全球16大城市设立办公室、团队规模超过700人的公司,Mobvista从创业一开始就迁移到AWS全云架构之上,2017年开始全面转向全云原生软件架构体系。2013年到2015年,Mobvista经历了三次大的系统架构升级,分别对应系统承载点击量达到100万次、1000万次和1亿次三个节点。而到了2018年底的10亿日均触达移动终端用户,不仅系统架构需要重构,其所使用的云资源费用也需要不断降低。

蔡超任职Mobvista技术副总裁兼首席架构师后,一方面展开Mobvista架构向微服务为代表的云原生构架迁移,另一方面则探索在全面采用云服务的前提之下如何节省更多的节本。Mobvista刚开始只使用了少量Amazon EC2和AWS的简单数据存储服务,随着业务的快速发展和系统架构的升级,陆续采用了AWS在新加坡、日本、北美、欧洲等多个区域的服务,包括Amazon EC2、Elastic Load Balancing、Amazon Redshift、Amazon DynamoDB、Amazon S3、Amazon RDS、Amazon EMR等一系列产品,建成了覆盖全球236个国家和地区的移动广告网络平台。

蔡超在AWS技术峰会2019北京站上介绍,此前Mobvista已经使用了几乎所有的AWS技术,获得了全球化云计算架构的高可用、高可扩展、高可靠和可维护性等收益。但随着系统规模的日益扩大,Mobvista的更大挑战来自于不断攀升的云资源成本。

加入Mobvista之后,蔡超发现Mobvista和所有常规公司一样,已经完成了多轮云计算的成本降低,包括对于低CPU利用率机器的合并和淘汰、对数据存储的优化、购买Reserved Instance预留实例等。在这样的前提下,Mobvista依然面临着成本压力的挑战。蔡超加入Mobvista后的首个目标为至少再降低40%的单次请求处理成本。

在蔡超加入Mobvista之前,Mobvista的几大业务系统,都是架设在云端的大型单体系统。虽然单体系统可以在云端不断扩展规模,但当某一个功能成为瓶颈而需要扩展该功能时,只能不断复制整个单体系统从而达到对单一功能扩展的效果,这就浪费了大量的计算资源。因此,蔡超加入Mobvista后即着手开始了从云单体系统向云原生架构的改造,包括采用微服务、无服务器计算等多种云原生技术。

蔡超介绍,Mobvista在构建云原生架构的时候,引入了面向容错、面向故障恢复的架构和混沌工程,从而构建一个高可用的微服务架构。这些使得系统架构更加具有弹性,从而可以更好利用云端的高弹性资源,而高弹性计算资源往往具有更好的价格优势。例如,利用AWS Spot Instance竞价实例。Spot Instance本质上来说是开放AWS闲置资源供使用,当资源紧张的时候会被回收,并且只给两分钟的提前通知时间。大多数情况下,Spot Instance能比按需使用Instance节省80%-90%的成本。但为了保持系统服务的可持续性和SLA服务水平,就需要有效的应对Spot Instance回收而产生的系统集群容量变化,这就是面向容错和恢复的架构以及混沌工程。目前,Mobvista的在线系统集群中70%的Instance都是Spot Instance,单次广告请求的成本降低了65%。

如今,Mobvista还把使用Spot Instance的经验和实践进行了对外的产品化输出:SpotMax。Mobvista的SpotMax解决方案和服务,包括了MaxArch、MaxChaos和MaxGroup三大部分。其中,MaxArch是一种架构咨询服务,主要是Mobvista为客户提供的其现有架构评估以及向云迁移和云原生架构设计;MaxChaos是基于开源软件及Mobvista自研的服务框架之上,提供混沌工程服务,让客户可以持续提高生产系统可用性;MaxGroup则是Spot Instance管理服务,通过集群防退化、Spot Instance集群推荐及基于强化学习的混合机群负载均衡等,帮助云上系统进一步节省成本。

蔡超认为,云端系统有其特定架构,与传统的本地系统架构不一样,但当前大量的工程师和开发人员都是从二三十年前的架构书籍中学习,很多开发人员也都是从本地的数据中心进行构建,所以当前软件工程的架构知识也需要整体面向云端更新,需要用新的工程化思路和架构理论来构建云上大规模应用系统。