【云驻共创】VIPKID在线教育平台从天到秒的跨云迁移实践

【导读】目前在线教育行业业务量高速发展,遇到了很多技术难题。云原生可以作为一个解决思路,今天我们就通过中国国内最大的在线青少儿英语教育品牌VIPKID在云原生方面的迁移实践来了解云原生在处理多场景实践过程中的优势和特点。

一、在线教育行业面临的问题

1.  业务体量的快速增长

在整个在线教育行业的迅速发展的背景下,如何既能满足业务体量的快速增长,又能灵活控制成本,成为了所有公司都要考虑的问题。

2.  业务产品的快速发展

需求的增加势必导致产品迭代加速,创新项目也相继增加。如何能够提供高效快速的项目发布支持,助力产品快速成长也是当前大多数企业需要考虑的迫切问题。

3.  产品模式的多样化

除传统的Web服务外,如何满足AI计算,多语言栈,音视频编解码等不同的产品模式的新的资源需求,也正逐渐成为大家将来,甚至是现在需要考虑的内容。

随着容器使用场景的增加,传统的容器使用方式在效率、成本方面优势已经出现瓶颈。2020年初,VIPKID就已经开始遵循云原生的容器化之路,对原有的容器化方案进行了调整,加速对业务需求的支持。

二、容器化方案调整带来的收益

1.  无状态应用容器化

效率收益,过去在VM上,一个应用从创建到上线需要2-3天的流程,现在借助容器平台,仅需要3-5分钟,并且80%以上的需求场景完全自动化,无需运维人员介入。

2.  弹性伸缩能力

成本收益,与容器化改造前,AI离线计算成本下降了43%,弹性实现完全自动化,无需人工干预,降低了人工成本,在线服务成本下降了10%-70%

3.  音视频服务容器化  

效率收益,部署效率大大提升,从0开始部署并上线整套系统由原来的3-5天缩短到3-5小时。成本收益还正在统计中。

三、无状态应用的落地挑战

1.  研发的准备工作。微服务化,存储分离,状态外置。

2.  产品迭代迅速,多种技术栈快速支持。应用从创建到部署要求周期短,自助便捷。新技术栈快速支撑,快速使用。可以借助CI/CD实现自动化和规范化处理。

3.  多种发布方式支持。业务研发同学对蓝绿发布和灰度发布方式的需求。

4.  跨云厂商,跨地域的多集群管理。对于多个业务端统一的容器化平台支持,需要提供跨云、跨地域的一站式应用挂历平台。这就要求拉齐不同云上的集群操作。

5.  来自研发同学的咨询和求助。面对来自研发同学对容器生态的陌生感,各种疑问和怀疑接踵而至。如何高效的解决这些问题,成为了一个摆在大家面前的难题。


四、弹性伸缩能力的实践

AI离线计算任务,利用云原生带来技术领先型。AI业务线某项目升级,在推敲了基于容器的任务调度能力后,欣然达成合作。目前该项目的所有计算任务均基于K8SJob来承载,而VIPKID又针对任务的整体容量增加了K8S node的动态扩缩容能力,这个可以把计算任务跑到任意一个云上面。

在线服务通过HPA进行弹性伸缩,有效降低了服务成本。原生的HPACronHPA结合的方式,为了方便管理,最终选择了社区开源方案——keda.shCNCF sandbox)。

 

五、音视频服务的落地过程

有状态应用改造实践,需要摒弃VM上的不良使用习惯。有状态应用改造中,一些VM时代的使用习惯虽然依然work,但是他们不符合云原生的思想,会带来更多的维护成本。下面可以通过一张图来了解一下改造前后的拓扑关系。

在这个过程中,遇到了一个长连接ELB负载不均的问题。使用K8S原生服务时,某个业务服务被调用,但是实例上收到的请求量发生了负载不均衡的问题。原因是传统的ELB对接K8S原生nodeport service时,长连接会出现负载不均衡的隐含问题。解决方案是使用华为云云原生2.0网络,使外部流量直通容器,不再经过K8S原生的nodeport service转发。

使用多种容器方案,势必会涉及到多集群管理的问题。原生方式,使用kubectl和公有云控制台进行管理,这需要专门的运维工程师来操作。第三方的PaaS平台服务,使用基于Web UI的控制界面来进行管理,比如RancherKubesphere等,运维工程师和小部分高级研发工程师都可以进行管理和操作。完全理想的形式,就是集中管理,集群间自动调度,故障自动转移,同时,大部分工程师都可以进行运维管理和日常操作,但是目前还没有这样成熟的方案。

 

面对实际的项目需要,VIPKID也提出了自己的可行性方案,就是依托下一代集群管理工程KarmadaKarmada的主要技术特点包括三点,一是集中管理,但是要求原生。二是应用在不同集群的差异化管理。三是集群故障自动转移。具体控制模型,可以参考下图:

六、经验感悟

最后,通过本次平台跨云迁移实践,VIPKID的工程师也给出了自己的建议和感悟。1. 拥抱云原生,拥抱社区开源产品。2. 效率至上,平台面向R&D,面向全生命周期。3. 平台系统松耦合,同时考虑分层设计,剥离自身业务,少给自己造轮子

本文整理自【华为云社区内容共创者火热招募中】第五弹:拒绝躺平,踮脚够上生活小美好!

查看活动详情:https://bbs.huaweicloud.com/blogs/278686

视频链接:https://live.huawei.com/hdc2021/meeting/cn/8124.html

(完)