客户简介

百富旅行是全球领先的在线旅游同业交易平台,覆盖机票、火车票、酒店、邮轮、汽车票、门票、旅游、商城等版块,通过整合全球的优势资源,基于云计算和大数据决策为全球旅游从业者提供一站式智能整体解决方案。截至目前,百富旅行已经与600多家航空公司、国内所有火车线路、2500个汽车站,以及60多家邮轮集团进行了业务整合,网络覆盖全球100多个国家和地区。

业务痛点

随着业务的飞速发展,百富旅行技术团队通过Spring Cloud等开源框架搭建了完善的微服务技术架构,并在底层服务器资源方面全面拥抱阿里云ECS,利用云计算提升工作效率,降低工作成本。将微服务应用上云之后,不需要再考虑硬件资源购买以及服务器架设等运维步骤,这样技术团队可以将更多的精力投入到业务需求实现中。随着系统迭代次数的增加,原有的微服务架构开始暴露出一些问题:

  • 从系统架构的角度,将微服务应用直接部署在云虚拟机上,跟部署在物理机房相比,并没有本质的区别,团队依然需要从底层维护每一个应用实例,包括操作系统调整、磁盘容量规划、JDK等组件安装等工作,这些工作在每一台云虚拟机投入使用的过程中,都是必不可少的。
  • 另外,在系统频繁的迭代过程中,不同的开发小组甚至不同的开发人员都需要单独的一套测试环境,久而久之整个技术团队创建了多套测试环境,其中一些测试环境包含了所有的微服务应用,整体资源利用率特别低,造成了大量的资源浪费。而且旅游业务本身也存在非常明显的波峰波谷,微服务架构可以很方便地为每一个应用进行水平扩容,但如果用于扩容的虚拟机资源需要预先购买的话,同样会造成大量的资源闲置。

解决方案

近些年在云计算领域异军突起的Serverless架构正好能解决上述这两个问题。由于不需要为Serverlesss应用购买底层服务器资源,直接按需申请,可以免去容量规划、操作系统调优等复杂的运维工作,Serverless架构的弹性伸缩机制也彻底解决了资源的闲置与浪费问题。因此,百富旅行技术团队开始对Serverless架构进行技术预研。

Serverless架构有两种常见的实现方式:

第一种是把每个微服务应用进行容器化改造后,统一使用Kubernetes进行编排,并利用云厂商提供的弹性容器实例实现容器层的按需调用。这种方式的门槛很高,需要有精通Kubernetes技术的运维小组加入,并且需要团队投入比较大的精力对应用进行容器化改造,暂时不适用于百富旅行这样小规模高效率的技术团队。

另一种方式是使用类似于AWS Lambda或阿里云FC函数计算引擎,将所有业务逻辑进行函数化重构。这种方式基本上需要将之前写的代码推倒重来,而且在一些拥有复杂调用链路的业余环节并不能发挥Serverless的优势,对百富旅行而言更加不合适。

经过多轮技术调研以及与阿里云技术专家深入交流后,百富旅行技术团队认为,阿里云提供的Serverless应用引擎(SAE)方案最适合他们的Serverless平台。区别于其它 Serverless 产品,SAE 直接支持 Spring Cloud、Dubbo 等开发框架,真正实现了 Serverless 架构 + 微服务架构的完美结合。开发者可以通过WAR、JAR、镜像三种方式部署Serverless应用,不需要学习Kubernetes以及容器技术,也能享受Kubernetes和云上弹性容器的技术红利。

图 1. 解决方案架构图
解决方案架构图

由于SAE属于应用层的Serverless方案,对于之前通过Spring Cloud框架构建的微服务应用,可以非常平滑地逐步迁移到SAE平台上,不涉及任何代码和业务逻辑的修改,这一点也是百富旅行全面拥抱SAE方案最重要的原因。

部署在SAE上的微服务应用,可以按需申请资源,根据实际使用资源量按分钟计费,避免业务不活跃时段的费用支出,有效降低成本,并且微服务应用也能充分的发挥弹性伸缩的价值。特别是对于测试环境,SAE可以做到一键启停,避免了资源闲置问题。对于生产环境的任何一个应用,如果有扩容实例的需求,也能够迅速拉起新的实例,并自动与SLB以及注册中心完成绑定。

此外,通过SAE提供的应用生命周期管理能力,百富旅行技术团队彻底告别了通过编写脚本进行版本发布的方式。不论是应用的部署、启动、停止、与SLB关联、扩容实例、缩容实例,都可以通过阿里云控制台进行可视化操作。配合SAE的版本管理以及多种灰度发布机制,进一步降低了版本更新过程中的风险。对于新发布的版本可以在生产环境先进行小规模验证,一旦不能满足要求可以一键快速回滚。SAE还额外提供了系统监控功能,能从基础资源、JVM、应用链路等多个层面实时、直观地了解系统运行状态。

实现价值

经历了基于SAE的Serverless化演进之后,百富旅行节省了大量云资源的成本投入,并且减少一半以上的运维工作,为业务持续发展打下了坚实的基础。未来,百富旅行将继续基于自身的技术特点不断深入探索Serverless架构,在拥抱新技术的同时也能充分享受到云计算的红利。

相关产品

  • Serverless 应用引擎

    Serverless 应用引擎(Serverless App Engine,简称 SAE)是面向应用的 Serverless PaaS 平台,帮助 PaaS 层用户免运维 IaaS,按需使用,按量计费,实现低门槛微服务应用上云,有效解决成本及效率问题。支持 Spring Cloud、Dubbo 和 HSF 等流行的开发框架,真正实现了 Serverless 架构和微服务架构的完美融合。除了微服务应用外,您还能通过 Docker 镜像部署任何语言的应用。

    更多关于Serverless 应用引擎的介绍,参见Serverless 应用引擎产品详情页