敦煌智旅:Serverless 初探,运维提效 60%
作者: 百潼
行业新趋势
在后疫情时代,文旅行业开始复苏,在行业的发展趋势中,我们看到了一个充满机遇和挑战的未来。通过不断创新和适应市场需求,文旅行业继续不断发展壮大,为消费者提供更加丰富多样的旅游体验。与此同时,文旅行业也朝着科技融合,创新颠覆的趋势发展。科技带动产业向“新消费、新供给、新企业”的“智慧旅游”、“智慧企业”进化;产业数字化,数字产业化同时进行。科技正在重塑产业链,数字科技和内容服务的重要性同时提升。科技带来文旅产业链和产业束的快速扩张,形成新的市场领域,项目运营收入空间更大。因此文旅产业做好数字化转型成为必然趋势。
数字文旅的新星:敦煌智旅
敦煌智旅是一家致力于智慧旅游大数据和旅游行业应用系统创新与研发的新型互联网企业。公司依托“旅游+互联网+金融”,以核心旅游资源为入口,以信息化建设为抓手,以互联网营销为手段,整合旅游产业链资源、经营落地游客,推动目的地商业繁荣,构建大旅游生态圈。在文旅行业的数字化转型新浪潮中,敦煌智旅迅速抓住机会,开启了 “智旅云平台” 之路。
数字化转型过程中,企业面临的三大挑战
敦煌智旅的平台从一开始就构建在阿里云的 ECS 上。近几年来公司业务不断扩张,已经与多个旅游景区展开合作,也包含了很多大型景区合作,比如月牙泉和黄河石林等等。然而,业务规模的扩大同时也暴露出原有平台的很多不足,主要存在以下三个方面的挑战:
1)流量跨度大,资源预留难度大
在节假日期间,例如五一或国庆节,游客量会迎来高峰,一天内的接待量可能突破十万级。平常的时候,游客数量可能只有一两万。高峰与淡季的流量差异极大,导致对资源的需求跨度也很大,甚至达到了十倍以上。在过去,为了应对节假日的高峰,研发同学会提前准备多台服务器来支持像下单系统这样的核心业务。等流量高峰过后再释放这些服务器资源。但是这种方式处理效率很低,每次处理高峰都需要手动进行预留服务器的配置。
2)运维工作繁重且效率不高
由于智旅云平台的业务持续拓展和更新,系统发版操作也变得频繁。旧系统中使用的是多个 ECS 节点,每次发布更新时,需要登录到每台服务器上单独发布,这不仅增加了工作量,而且还出现过漏发的情况。研发团队在这种情况下还需要承担一部分运维工作,整体的工作效率非常低。
3)服务器资源利用率不足
当系统部署在 ECS 上时,在业务量达到峰值时期,在流量较低的时段,CPU 利用率就只有百分之十几,甚至个位数,这些资源利用不起来,极大程度上造成了浪费。
所以提升运维效率和资源利用率,以及系统的弹性能力成为敦煌智旅技术团队的当务之急。
选型
“我们当时在做一个新平台,总监在阿里云官网的产品目录上发现了 SAE 这个产品,看到有灰度发布,日志收集这样的能力,觉得非常匹配我们的业务诉求,就了解了一下,尝试用了一下,发现发包很方便,上线部署比原来省时省力,觉得效果还不错,就采用了。”
选择阿里云 Serverless 应用引擎(简称 SAE),不用做任何改造,WAR/JAR 包直接上传部署,也不用买机器运维机器,发版的时候也不需要逐台部署机器,为研发同学节省了大量时间。并且,SAE 就是一个超大规模的弹性资源池,想弹多少弹多少,想什么时候弹就什么时候弹,非常适合敦煌智旅节假日期间难以预估的流量激增。
解决方案
敦煌智旅决定把新平台部署在阿里云 Serverless 应用引擎上,SAE 提供了一个开箱即用的 Serverless PaaS 平台,提供了微服务、监控等能力, 帮助敦煌智旅很好地解决了发版困难、运维困难、弹性能力不足和资源利用率低等痛点问题。
01 高效发版
SAE 支持应用一键部署,秒级完成从源代码仓库或 War、Jar 代码包部署 SAE 应用,并支持自动 CD。同时也提供应用模板、CLI 命令行工具、组件库、成本管家等能力,帮助开发者们快速高效的交付应用程序。帮助敦煌智旅的技术同学解决了发版效率低,发版过程繁琐的困难。
“以前每次发版都需要我们在 ECS 上逐台部署,每发一个新版本要整整 1 天的时间,还需要几个同学时刻监控新版本的情况,一旦有 bug 还需要立刻逐台 ECS 下线新版本,不仅过程繁琐,而且还容易业务受损。”
“现在每次发版的时候,只需要将打包好的镜像直接部署在 SAE 上,半天就能发布一个新版本,如果有问题在控制台上一键回滚老版本就可以了,之前要一个团队完成的工作,现在一个人就可以完成,不仅提升了人效,也彻底避免了之前漏发的情况”。
02 服务发现
与此同时,SAE 具备无侵入微服务治理的能力,支持 Spring Cloud、Dubbo 零代码改造迁移至 SAE。提供服务注册 &发现、环境隔离、配置管理、限流降级、应用无损上下线、服务鉴权、全链路灰度等能力。敦煌智旅基于 SAE 网关和内置的 Nacos 能力实现微服务的服务发现。
“我们之前的那些部署在 ECS 上的老系统,前经常需要给每一个应用改 IP 地址,效率非常低,还经常漏改和改错。SAE 内置的 Nacos 用起来非常方便,再也不用不用针对每一个应用改 IP 地址了,而且我们本来的框架就是用的微服务,SAE 和我们的原始架构非常的适配。”
03 监控与日志采集
敦煌智旅还基于 SAE 集成的监控告警能力实现了日常开发过程中的监控和日志采集。SAE 基于 EBPF 技术提供无侵入的应用监控和告警能力,支持任意语言和任意框架。提供七层入口流量监控,也提供 Java 应用级别 &链路级别的监控。
“我们在研发的过程中非常需要持久化日志,看到 SAE 集成的 SLS 日志功能,原来需要用排除法逐一排查故障,现在利用监控和持久化日志就能有效的定位问题,帮助我们非常迅速地排查故障。”
04 自适应弹性
SAE 提供自适应弹性的能力,能实现百毫秒级弹性伸缩,根据流量自适应调整应用实例;支持白屏化配置多种弹性策略和像 QPS、RT、TCP 连接数等弹性指标。
利用 SAE 的指标弹性策略,敦煌智旅现在在每次节假日或周末时候都能根据流量峰值自动进行弹性扩容,就不再需要提前预估流量峰值来预留机器,避免了高峰期不够,低谷期浪费情况的出现。
“我们之前在节假日之前都要自己提前扩容,需要预估流量提前几个小时备好几台机器,安排 3 个同学值班,等流量洪峰过去之后再立刻缩容,避免资源浪费,但经常预估没那么准确,老系统有业务受损的情况。用了 SAE 之后,完全满足了我们的弹性需求,只需要提前在控制台上配置好指标弹性策略,根本不用提前多开 ECS 部署业务,也不用同学值班,用 SAE 的自适应弹性就能轻松应对流量洪峰,在流量低谷期自动缩容,完全不用我们担心。”
敦煌智旅的研发同学说,“我们现在还处在对 SAE 的持续探索阶段,之后合作的景区越来越多,之后会尽快接入灰度发布和 CICD 的能力。”
使用效果
1)运维提效,效率提升 50% 至 60%: 通过阿里云 Serverless 应用引擎 SAE,在每一次发布新版本的时候,开发运维同学不再需要逐一部署每一台服务器,发包更方便了,新增节点也更方便了,大大简化了原本繁杂的部署工作。研发运维同学能更多的专注于业务本身,过去可能需要一整天才能完成的版本发布和部署,现在缩短至半天内便可顺利完成,运维效率得到了极大提升。
2)无需提前预留资源,轻松应对 10 倍突增流量洪峰: 基于 Serverless 应用引擎 SAE,在每一次节假日之前,不需要再提前准备服务器节点,借助 SAE 强大的弹性能力,在流量高峰期前只需事先设定好弹性伸缩策略,系统就会自动根据实际流量进行资源的快速伸缩,就能轻松应对周末和节假日高于平时 10 倍的流量峰值。敦煌智旅不但保障了用户体验,同时也实现了资源的高效利用,从而显著提升了弹性效率,大大提升了服务的可靠性。
3)成本更优,降本成为意外之喜: 基于 Serverless 应用引擎 SAE,敦煌智旅不用再担心为了扛住流量洪峰预留的资源在流量低谷期的时候浪费,原来在高峰期预留的资源,在低谷期有 80% 都是浪费的。现在应用部署在 SAE 上,在流量高峰期过后,SAE 会自动帮助缩容,能保证资源在低谷期基本不浪费。
总结和期待
“新平台的所有业务部署在 SAE 上,相比于老的平台,在平时开发工作、发版需求和应对弹性能力上都更灵活了,新平台的诉求都能满足。但同时也对 SAE 有了新的期待:目前的 SAE 的 Web 日志会截断,有时候还要依赖 Pod 来排障,希望 SAE 的日志功能可以更强大,实时日志更流畅。”
版权声明: 本文为 InfoQ 作者【阿里巴巴云原生】的原创文章。
原文链接:【http://xie.infoq.cn/article/0c48d271ca515c8220129765f】。文章转载请联系作者。
评论