GAIA(盖亚) - 面向Function的新一代业务交付平台
淘系技术基础平台高级技术专家——孙棋(空蒙)提及,作为淘系技术程序员,可能经常会面临如下的对话场景。
淘系技术产品经理:“这个需求非常紧急,只需要改动一点点,加个字段透出来,必须在**前上线。”
淘系技术研发人员可能会给出如下几种回答。
· “这个字段不在我的这个应用服务里面,我需要再添加服务依赖。”
· “我正在升级一个三方依赖包/中间件,这个发布还要一段时间,等这个发布完稳定一段时间后再说。”
· “这个修改,需要拉分支修改,然后还要编译、打包、部署,再测试验证,研发交付过程最快也需要1个小时。”
· ......
这里面存在3个问题,一是淘系技术“应用”承载了太多的业务服务,随着业务的发展,应用越来越臃肿,业务之间相互耦合影响,二是淘系技术“应用”与基础设施依赖紧密耦合,淘系技术“应用”负重前行;三是淘系技术“应用”的编译打包与部署的耗时都是分钟级的,业务交付成本高。
分析思考
为了解决业务耦合和扩展性问题,淘系技术提供了微服务;微服务由应用来承载,多个服务/同领域服务处于同一个应用里面,应用切分粒度与灵活性一直是一个挑战,典型的方案是对服务进行再分组、或者直接对应用物理拆分的方案。
应用包含了大量的强依赖,如三方依赖/中间件,为解决微服务部署问题,淘系技术提供了容器化部署方案。但基于容器的部署解决方案,其问题在于存在大量非业务组件(如metric、logagaent等),与业务缺乏隔离性。
面对富容器+富应用的现状,是否有一种新的机制可以实现业务之间以及业务与基础设施之间的隔离解耦?可以发现,云计算以及IaaS、PaaS、CaaS等理念得到普及后,硬件网络等基础设施下沉到了通用平台,业务落地技术门槛也在不断降低。由图2-17可见,从IaaS到PaaS,业务需要关注的内容在不断地减少,但“应用”仍是一个非常庞大的载体,如何让业务更专注于业务逻辑自身,FaaS将是最优选项。
IaaS、CaaS、PaaS、FaaS架构
在微服务和容器化的背景下,淘系技术为解决业务与服务化基础设施能力的耦合问题,淘系技术演进出了Service mesh的应用架构,而FaaS与mesh的结合,很好优雅的解决业务与基础设施的耦合问题。
业务交付过程,淘系技术是不断进行代码提交、编译、打包、部署的过程,淘系技术研发人员需要清晰地知道这些过程,并机械地重复整个过程,淘系技术那么能否实现代码修改即交付,淘系技术将代码提交、编译、打包、部署乃至自动化验证对开发交付过程透明呢?
淘系技术的答案
打造轻量级Function容器,基础设施下沉隔离解耦,所见即所得(What You See Is What You Get)、Function版本化交付运行是实现这一目的方案。
如典型的分层图,淘系技术的不断标准化,降低了开发的复杂度,提高了业务研发的运营效率,是技术演进的核心价值体现;当下云原生概念日渐火热,K8S、Service Mesh等技术不断地将业务依赖的基础设施下沉隔离,技术理念的认知也得到了更新,这些都为FaaS技术提供了新的机遇,GAIA正是基于这样的背景产生的,淘系技术需要完成两件事情,即定义面向Function的容器规范,定义面向Function的研发过程。
典型分层图