gol作业帮与腾讯云等联合发布云原生成本管理白皮书

近日,2021腾讯数字生态大会在武汉召开。在大会云原生专场,腾讯云联合中国信通院、作业帮等联合发布《降本之源·云原生成本管理白皮书》(以下简称白皮书),系统性呈现云原生成本优化方法论和最佳实践路径。作业帮基础架构负责人董晓聪在会上分享作业帮云原生成本优化实践之路。
gol作业帮与腾讯云等联合发布云原生成本管理白皮书
文章插图

【 gol作业帮与腾讯云等联合发布云原生成本管理白皮书】为什么要降本增效?
作业帮成立于2015年,是一家致力于用科技手段助力教育普惠的公司。董晓聪介绍,作业帮技术现状主要有两大特点,一个特点是规模化,当前作业帮有数千个应用服务,对应着数万的服务实例,这些实例部署在数十万计算核心之上。另一个特点是复杂化,作业帮的技术栈极为丰富,使用最多的语言为PHP和Golang,约能占到60%以上,除此之外还有大量的系统使用NodeJs、Java、C++、lua、python编写等。
董晓聪说,作业帮从创立之初就是构建在云之上的,充分的享受了云计算的红利。随着这些年的高可用建设,实现了多云的架构。高可用、快速迭代、极致性能也是作业帮一贯的技术要求。
为什么要进行降本增效呢?董晓聪说,这个工作之前一直也在做,但今天的要求会更高。首先,随着互联网的红利消退,公司的每分钱都需要产生更大的价值,要实现成本效益的最大化。其次,成本管控,不必用的支出是应该节省的。最后,也是一个技术从业人员的追求,作为程序员,还是想要写出更好更高性能代码。“在追求降本的同时,还要明确一点,降本不降质,稳定性、研发/运维效率、安全等不应该为此打折扣。”董晓聪表示。
业务快速发展平台架构面临挑战
随着业务的发展,作业帮的 IT 系统面临挑战。现有基础平台架构无法满足快速增长的业务需求,业务对快速迭代、急速弹性、调用链追踪、统一的监控日志平台、提升计算资源利用率等需求迫在眉睫。
2019年下半年,作业帮开始规划并调研容器化解决方案,“但面临诸多挑战”。董晓聪说,首先是应用性能有待提升。对于企业主流使用的语言,如PHP、Golang,从框架入手,但应用框架的理论性能和实际业务的性能往往有很大差距,多为业务架构缺陷或者数据存储设计的不合理导致。同时应用框架随着功能的不断迭代和更高的要求,自身性能上也需要优化。
其次,应用部署模式差,带来计算资源的浪费。对于高并发业务,虚机下机器峰值负载常规在10%-20%,极限可提升到30%-40%。高流量业务一般代表着公司核心业务,一方面为了稳定性的考虑,整体水位不能控制得过低。另一方面,为了应对一些突增流量,要预留一定缓冲。低负载业务一般碎片化比较严重,而这些服务比较长尾,进而拉低了整体负载。
同时,还存在时间空间不均的问题。从时间上看,互联网业务普通有明显的波峰波谷,波峰和波谷的实际资源使用量至少有一个数量级差距,且真正的最高峰只有不到一个小时。企业不得不为这一个小时的用量而付出一天的成本。在空间上,一方面是在线集群波谷空闲了大量计算资源,另一方面是大数据离线计算需要大量计算资源。从整个公司视角来看,资源使用极不均衡。
作业帮的云原生降本实践
“面对这么多挑战,我们该怎么解呢?”董晓聪说,针对每一个细分问题深耕并不系统,所以作业帮选择走云原生的道路,和云厂商一起来充分释放云的潜力。
在应用层,作业帮着手对典型场景进行重点攻克。对于模块数量最多的PHP业务进行优化运行态优化,对资源使用最多的检索服务进行架构优化。在部署调度上依托K8S,实现了CPU、GPU、任务的自定义调度器。同时,使用在离线混部解决空间不均的问题,使用弹性扩缩+serverless解决时间不均的问题。而在资源这部分,K8S通过CRI、CSI、CNI等实现了对应用的透明,便于选择更优的机型。