作者 | 禾易
来源 | 凌云时刻(微信号:linuxpk)
1
这场疫情让在线教育受到了更大的关注,未来的很长 一段时间里,在线教育都将成为常态化应用。
“还要扩容吗?”
“先扩容 10 倍再说”
这已经不是李诺(洋葱学院联合创始人兼 CTO)第一次提到扩容了。受到疫情影响,今年全国学校普遍延期开学。“停课不停学”,线下教育停摆,教育行业转战线上。流量突然暴涨,扩容成了“常态”,而且每次的流量还是远远超过预期。
李诺去找杨临风(洋葱学院联合创始人兼 CEO)讨论工作的时候,碰巧杨临风正在写一封给用户的公开信。这次疫情让洋葱学院受到了极大的关注,但比起流量价值,杨临风更想以自己的亲身经历告诉用户:“在家自主地学习,是每个学生都要面对的战斗。”
李诺心里清楚,在超高流量的冲击下要保持服务器平稳、用户体验不受影响,这何尝不是一场属于洋葱学院的战斗。
2013 年 12 月,杨临风、朱若辰和李诺共同创立了洋葱数学(现已更名为洋葱学院),这家K12在线教育公司从初中数学课程切入,逐步发展到全学科,主攻人机交互学习的在线教育平台开发。他们从国家课标和教材着手,开始系统地构建在线课程体系,对课本上每一个知识点进行更加精细的教研和设计,并逐个制作成5-8分钟的动画视频课程,围绕这些核心课程为学生打造个性化的学习体验。
人机交互学习的教育模式不要说在当年,即便是现在也很前卫。不仅如此,洋葱的创始团队在公司成立之初还做出了一个意识超前的决定:整套业务系统均基于阿里云搭建。
热热闹闹的在线教育市场上,洋葱学院一直被称为“一股清流”。李诺说:“比起市场上的声量,我们更关注如何去提升那些传统教育下糟糕的学习体验问题。”李诺曾经是创新工场首个孵化项目“点心 OS”的技术负责人,后来项目被收购后,他开始寻找做更有意义的事业。在创办洋葱学院时,因为自身的技术背景,李诺想通过技术的方式去改变教育。“我们的愿景是要以学生为本,同时去赋能教师,最终改变教育的本质问题”。李诺相信技术可以给教育带来无限可能,比如用大数据追踪每个学生的学习行为,用人工智能带来个性化的学习体验。
洋葱学院的发展速度在互联网教育公司里并不算快,李诺说,团队把大部分的精力都花在了课程的研发和学习体验的优化上,以初中数学为例,足足花了4年才完成课程的打磨。当然,洋葱学院对教育的这份坚持,也让其在业界立下了一席之地。疫情影响下,短时间剧烈增长的市场需求把在线教育推到了“快车道”。以前是在线教育企业自己努力,现在是全社会一起推进他们“质量在线”。
今年 1 月 28 日,洋葱学院对外公布了针对疫情期间的课程捐赠方案,把过去六年积累制作的 2650 节核心课程全部免费开放,这很大程度上源于这个团队一直都有的“公益底色”,但流量的威力还是超过了他们的想象。据易观千帆的公开数据显示,洋葱学院 2020 年 2 月的活跃用户规模达到了 795.92 万,同比增幅 151%。
面对大流量、高并发访问需求,洋葱学院为了确保业务稳定性,在阿里云技术专家的建议下,采用了阿里云容器服务。容器服务可以根据不同模块的配置所需,资源分配更加合理,按照定义规则自动弹性伸缩避免了复杂的调度维护。
阿里云容器服务可以在几分钟内扩充底层资源,满足快速部署数千个应用实例的需求。为了更加从容地应对十倍扩容,洋葱学院还进一步优化了整体的 ECS 服务器配置,将大量的小规格 ECS 服务器更换成 30 至 50 核大规格 ECS,改造后运维管控也更加便捷。使用云容器之后,系统在资源利用率上提升了约60%,出现问题后可快速隔离,当面对急剧增长的业务量,也可以在短时间内扩容进行业务支撑。为了及早发现故障并快速做出响应,洋葱学院也采用了阿里云原生监控系列产品,可以覆盖到各类监控报警问题,极大地缩短问题发现时间。
从2013年决定全面上云,到现在拥抱云原生新趋势,洋葱学院以一贯的超前意识,表达着这个时代互联网公司该有的态度。
2
上云成为企业持续发展的必然选择,全面使用开源技 术、云服务构建软件服务的时代已经到来。
云原生在近几年的发展用“乘风破浪”来形容一点也不为过。
随着虚拟化技术的成熟和分布式框架的普及,在容器技术、可持续交付、编排系统等开源社区的推动下,以及微服务等开发理念的带动下,应用上云已经是不可逆转的趋势。回顾近年来商业世界的发展趋势,数字化转型的出现使得企业中越来越多的业务演变成数字化业务,数字化对于业务渠道、竞争格局、用户体验等诸多方面都提出更加严苛的要求,这就要求技术具备更快的迭代速度。
为了实现这样的速度,就需要充分利用云的强大能力,从云技术中获得更高的可用性与可扩展能力,利用云来提升发布和运维的效率。而要做到这些,不仅仅是基础设施和平台的变化,应用也需要做出改变,摈弃传统的土方法,在架构设计、开发方式、部署维护等各个阶段和方面都基于云的特点来重新设计,从而建设全新的云化应用,即云原生应用。
2019 年,Gartner 曾经发布报告表示云原生时代已经到来,在未来三年中将有 75%的全球化企业将在生产中使用容器化的应用。云原生相关技术不仅仅能用于云计算,即便是和云计算既对立又协同的边缘计算,微服务、容器、Kubernetes 依然是事实上的杀手应用和标准。
以前一家企业想使用云原生的技术或产品,需要花费大量的精力研究一些开源项目,自己做运维和管理,还需要考虑集成、稳定性保障等问题,这样才能建立一个云原生平台。今天,为了方便企业和开发者更容易地使用云原生的技术和产品,更好地接受云原生的理念,并解决企业担忧的可靠性、性能、连续性等问题,阿里云为大家提供了一整套云原生产品家族,提供了非常强的 SLA 保障。
阿里云在帮助国内企业了解云原生、使用云原生上做了很多工作。一方面是在内部尝试去使用这些技术,阿里巴巴内部有非常丰富的、大规模的使用场景,通过这些场景可以充分打磨云原生技术。在技术成熟以后,将这些技术回馈到社区,帮助云原生社区提高技术质量和发展水平。
3
因为相信,所以看见
随着云计算的普及与云原生的广泛应用,越来越多的从业者、决策者清晰地认识到「云原生化将成为企业技术创新的关键要素,也是完成企业数字化转型的最短路径」。因此,具有前瞻思维的互联网企业从应用诞生之初就扎根于云端,谨慎的新零售、*、金融、医疗等领域的企业与机构也逐渐将业务应用迁移上云,深度使用云原生技术与云原生架构。
畅捷通是中国领先的小型微型企业管理云服务与软件提供商,为400多万小微企业提供智能云管理服务。随着业务的快速发展,为了适应互联网大型应用快速迭代以及频繁发布的需求,畅捷通IT团队对原有的IT系统进行了大量的微服务化改造,这是畅捷通进行云原生实践迈出的第一步。
紧接着,畅捷通开始迎接下一步挑战:SaaS化企业管理云服务,具有用户量大、业务复杂、调用链路长、与第三方应用系统深度集成等特点,给微服务化改造工作带来了非常大的挑战。特别是在新版本的发布过程中,如果不能保证整个流程平滑、可控,就很容易因为单个应用的更新而造成整个系统的崩溃。
为了快速解决这个痛点,畅捷通IT团队找到阿里云技术专家,选择阿里,不仅因为阿里的业务场景复杂度和对技术打磨的细致,还有阿里一直以来在云原生领域的深耕。最终,畅捷通决定将整个微服务架构逐步部署到阿里云提供的企业级分布式应用服务(EDAS)上。通过Spring Cloud技术体系建立的微服务应用,可以在不涉及任何代码改动情况下,直接部署在EDAS上,整个迁移的过程也非常平滑,对于畅捷通的用户而言没有任何感知。部署之后,在面对复杂业务下的频繁迭代时,畅捷通成功经受住了考验。
在进一步适应云原生的技术和产品以后,畅捷通的IT团队也通过方案背后融入的方法论,掌握了一套适合自己的微服务治理机制,并开始实践全链路灰度等全新的微服务治理思路。
4
还能再极致一点吗?能!
和大部分计算模式不同,Serverless 将“部署”这个动作从运维中“收走”,使开发者不用关心应用在哪里运行,更不用关心装什么 OS、怎么配置网络、需要多少 CPU …… 从架构抽象上看,当业务流量到来 / 业务事件发生时,云会启动或调度一个已启动的业务进程进行处理,处理完成后云自动会关闭/ 调度业务进程,等待下一次触发,也就是把应用的整个运行时都委托给云。
Serverless 非常适合于事件驱动的数据计算任务、计算时间短的请求 / 响应应用、没有复杂相互调用的长周期任务。
百富旅行是全球领先的在线旅游同业交易平台,基于云计算和大数据决策为全球旅游从业者提供一站式智能整体解决方案。截至目前,百富旅行已经与600多家航空公司、国内所有火车线路、2500个汽车站,以及60多家邮轮集团进行了业务整合,网络覆盖全球100多个国家和地区。
随着业务的飞速发展,百富旅行技术团队通过Spring Cloud 等开源框架搭建了完善的微服务技术架构,将微服务应用上云之后,不需要再考虑硬件资源购买以及服务器架设等运维步骤,这样技术团队可以将更多的精力投入到业务需求实现中。但是随着系统迭代次数的增加,问题出现了:
从系统架构的角度,将微服务应用直接部署在云虚拟机上,跟部署在物理机房相比,并没有本质的区别,团队依然需要从底层维护每一个应用实例,包括操作系统调整、磁盘容量规划、JDK等组件安装等工作,这些工作都每一台云虚拟机投入使用的过程中,都是必不可少的。
在系统频繁的迭代过程中,不同的开发小组甚至不同的开发人员都需要单独的一套测试环境,久而久之,整个技术团队创建了多套测试环境,其中一些测试环境包含了所有的微服务应用,整体资源利用率特别低,造成了大量的资源浪费。而且旅游业务本身也存在非常明显的波峰波谷,微服务架构可以很方便地为每一个应用进行水平扩容,但如果用于扩容的虚拟机资源需要预先购买的话,同样会造成大量的资源闲置。
摆在百富技术团队面前的核心难题就是怎么解决资源的闲置与浪费问题。而这恰恰是Serverless最擅长的事情。由于不需要为Serverlesss应用购买底层服务器资源,直接按需申请,可以免去容量规划、操作系统调优等复杂的运维工作,Serverless架构的弹性伸缩机制正好切断了资源浪费问题的源头。
但是Serverless架构要怎么选,百富旅行技术团队开始对市场上常见的实现方式和产品做调研:
Serverless架构有两种常见的实现方式:第一种是把每个微服务应用进行容器化改造后,统一使用Kubernetes进行编排,并利用云厂商提供的弹性容器实例实现容器层的按需调用。这种方式的门槛很高,需要有精通Kubernetes技术的运维小组加入,并且需要团队投入比较大的精力对应用进行容器化改造,暂时不适用于百富旅行这样小规模高效率的技术团队。
另一种方式是使用类似于AWS Lambda或阿里云FC函数计算引擎,将所有业务逻辑进行函数化重构。这种方式基本上需要将之前写的代码推倒重来,而且在一些拥有复杂调用链路的业余环节并不能发挥Serverless的优势,最终排除在考虑范围内。
经过多轮技术调研以及与阿里云技术专家深入交流后,百富旅行技术团队选择了阿里云Serverless应用引擎(SAE)方案。区别于其它 Serverless 产品,SAE 直接支持 Spring Cloud、Dubbo 等开发框架,实现了全面的Serverless化。开发者可以通过WAR、JAR、镜像三种方式部署Serverless应用,不需要学习Kubernetes以及容器技术。
部署在SAE上的微服务应用,可以按需申请资源,根据实际使用资源量按分钟计费,避免业务不活跃时段的费用支出。特别是对于测试环境,SAE可以做到一键启停,避免了资源闲置问题。选择SAE为百富旅行节省了大量云资源的成本投入,并且减少一半以上的运维工作,为后续创新业务的发展打下了基础。
5
云原生是一个时代下践行者们“前赴后继”的故事
一项新技术或者一套新的技术理念,之所以能被广泛接受和快速发展,是因为有愿意相信并真正去落地实践的公司,是他们在为整个时代探索着云计算更大的技术价值。当五年、十年以后我们再来看洋葱学院、畅捷通、百富旅行等企业的实践历程,正是因为这些创新者们愿意接纳一些新的改变,并以此去撬动更大的想象空间,我们才经历了一个如此蓬勃和充满可能的时代。
他们才是真的乘风破浪!