疫情期间,在线教育、在线办公需求持续井喷,钉钉做为不少企业首选的在线办公软件,用户量激增,特别是钉钉视频会议、直播的需求随之飙升。同时,钉钉为了响应教育部门“停课不停学”的号召,宣布老师们能够免费试用钉钉在线课堂。数据库
流量如洪流般涌入钉钉,一场资源扩容的技术挑战拉开了帷幕。中小学生集体对钉钉展开了五星分期与在线写歌“泄愤”的策略,钉钉本钉不得不在线求饶。而在大战间隙,一声感叹传出:安全
流量这么大,钉钉为何不崩?服务器
从1月28日开始,钉钉音视频会议、直播的访问流量倍数级增加。做为一个在云上成长起来的产品,钉钉开启了在阿里云的资源扩容之路,知足了用户在家办公及在家上课的需求,保证了用户良好的体验,钉钉如何作到的?架构
如此大型的扩容,面临着两大困境:效率与资源供应运维
人工扩容困境:效率低下编辑器
时间过短。面对流量暴增,留给钉钉技术团队时间只有几天。从1月29日起,钉钉团队就已在阿里云上24小时开始全力扩容,截止2月2日,从最初的2W vCPU扩容到3W vCPU,仅作到了数倍扩容,还远未达到业务需求。性能
购买与配置很是复杂。钉钉的系统架构包含多种资源,不一样于单一的云服务器ECS服务集群,还包含SLB、MongoDB、Redis、EIP等产品。这些资源都须要一个个购买,其之间的关系也须要技人工自行配置。测试
人工部署效率低、失误率高。钉钉用户群量级大。若是人工部署集群,一我的部署1个集群须要1小时左右,同时也只能操做3-4个集群,还须要大量的配置操做,很容易失误。阿里云
部署复杂度高。集群的服务能力自闭环,支持无限扩展,但也会相应提高部署复杂度,而此次扩容涉及8个地域、16个可用区,传统部署方式扩容场景效率低下
大规模集群管理难度大。须要快速扩容近千集群,才能知足几亿人在家办公及学生在家上课的需求。当资源上千后,就很难管理资源之间的关系了,更况且超百万的资源规模。云计算
人工部署,容错率比较差,排查困难。集群之间常常出现误差,某个集群的SLB监听端口是300,另外一个集群是3000,出现问题很难排查。
除却以上困难,创建和运维如此巨大的集群规模还会带来更多的技术挑战。
利用资源编排服务ROS,实现快速自动部署
早在2月2日流量洪峰带来以前,钉钉就经过阿里云的资源编排服务(Resource Orchestration Service,简称 ROS)提升集群部署效率、帮助其快速扩容。而这款服务不负重托,帮助钉钉在短短2小时内新增部署了超过1万台云服务器,这个数字也创下了阿里云上快速扩容的新纪录。
什么选择资源编排服务?
资源编排服务是一款帮助阿里云用户简化云资源建立、更新和删除的自动化服务。其经过资源栈 (Stack) 这种逻辑集合来统一管理一组云资源(一个资源栈即为一组阿里云资源)。利用资源编排服务,云资源的建立、删除、克隆等操做均可以以资源栈为单位来完成。在 DevOps 实践中,资源编排能够轻松地克隆开发、测试、线上环境;同时,也能够更容易实现应用的总体迁移和扩容。
基础设施即代码(Infrastructure as Code)
资源编排服务是阿里云提供的基础设施即代码(Infrastructureas Code,简称IaC)的云产品,使用ROS能够帮助最快速地实践DevOps中关于IaC的理念。
全自动托管服务
ROS产品为全托管服务,无需购买维护IaC模板自己执行所使用的资源,只须要关注业务所须要使用的资源,即模板中定义的资源。尤为须要建立多个项目(对应多个资源栈)时,全托管的自动化能够更快地完成任务。
可重复部署
不管客户是须要部署的环境是开发,测试和生产环境,均可以使用同一套模板进行建立。指定不一样的参数能够知足环境的差别化,例如,测试环境的ECS实例数是2台,而生产环境的ECS实例数是20台。或是客户须要进行多地域的部署,使用同一套模板能够进行重复的部署,从而提升部署多地域的效率。
标准化部署
在实践中,不一样环境的细微差别每每带来很是复杂的管理成本,延长了问题诊断的时间,从而影响了业务的正常运转。经过使用ROS重复部署,能够将部署环境标准化,减小不一样环境的差别,将环境的配置沉淀到模板中。再经过相似代码的严格管理流程,从而保证部署的标准性。
统一的身份认证、安全和审计
和其它的同类产品对比,阿里云官方出品的ROS与其它阿里云产品有着最佳的集成。集成资源访问管理(RAM)提供了统一的身份认证,而无需为单独创建用户认证体系。全部的云产品操做都经过OpenAPI调用,意味着您可使用操做审计服务(ActionTrail)来审查全部的运维操做,包括ROS自己。
ROS如何服务钉钉扩容?
定义资源模板
ROS帮助钉钉快速建立了描述其所须要用到的阿里云资源(如 ECS 实例、数据库实例等)的模板,以定义它的集群架构。ROS提供可视化编辑器能力,可自动可以使用的模板。模板完成后,ROS将自动地建立并配置这些资源,便可实现基础设施即代码(Infrastructureas Code)的理念。
模板解析与执行
当ROS接收到用户建立资源栈的请求时,在执行建立前,首先会对模板进行解析。解析包括语法检查、参数校验、依赖分析等。
依赖分析就是分析出资源间的依赖关系,目的有两个:
模板解析完成后,ROS会按照依赖关系建立资源,只有全部前置资源完成建立,后面的资源才会开始建立,相似状态机的机制。
该资源模板能够快速地重复部署,尤为多地域、多可用区部署的状况;同时也能够减小环境之间的误差,将部署过程和结果标准化,减小由于环境误差引入的系统问题。
总结
钉钉使用资源编排服务ROS,扩容效率就提高了100倍,陆续为钉钉完成了10万台云服务器的快速扩容和部署,创下了阿里云上快速扩容的新纪录。
目前ROS已经拥有平均每分钟1个集群的扩容效率、天天超百万vCPU弹性能力。将来,能够预见到,疫情结束后,数百万资源回收释放也将是一个浩大的工程。资源编排服务ROS具备一键销毁功能,自动回收集群内全部资源,避免繁琐操做及遗漏。
弹性是云计算最大的优点,也是云计算对整个社会提供的普惠和便利,而阿里云弹性计算资源编排服务ROS做为阿里云上原生的自动化编排部署服务,让云计算的弹性发挥到极致,为钉钉提供了强有力的支持,让钉钉成为使用最频繁最流畅的平台。
查看更多:https://yqh.aliyun.com/detail..._content=g_1000107087
上云就看云栖号:更多云资讯,上云案例,最佳实践,产品入门,访问:https://yqh.aliyun.com/