本文PPT来自高级专家承宗于10月16日在2016年杭州云栖大会上发表的《云上技术架构和业务架构的进化之路——阿里云Serverless的解决方案》。
目前软件开发规模日趋庞大,在软件研发与运维经常会遇到许多挑战。这些挑战主要包括六点:1.随着新旧业务一起发展,老的软件架构越来越复杂,软件与硬件的管理运维复杂度指数增长 2.为应用增加新功能的周期越来越长 3.复杂的业务模式下,硬件采购的估算成为世界难题,拍脑袋成为常态 4.老的硬件和软件需要被淘汰,业务永续出现巨大风险 5.系统架构中由于各种硬件或者软件的原因,存在单点故障可能。
但与此同时,为克服这些挑战,相应的软件研发过程与架构设计方法也在持续发展中,例如在应用架构方面,从原来的单体系统过渡到分层架构再到现在的微服务;在资源单位方面,从原来的服务器到虚拟机再到容器。其他发生重大变化的方面还包括资源管理和部署发布。在所有的技术发展中,云服务(Serverless)无疑成为高可用与弹性伸缩的首要选择。
阿里云现在也在不断推动Serverless模式地发展,Serverless模式给开发部署带来的改变是巨大的。Serverless指的是由开发者实现的服务端逻辑运行在无状态的计算容器中,它由事件触发,完全被第三方管理,其业务层面的状态被开发者使用的数据库和存储资源所记录。所以Serverless并不是指不需要任何服务器,而是指开发者不需要顾虑任何服务器资源,特别是在云上部署的Serverless。Serverless使用方式很简单,首先用户构建一个任务,然后上传代码或镜像,并设置一个事件触发器,最后运行监控服务即可。Serverless适用的场景很广,包括后台事务执行、批量任务、数据处理工作流、低频反馈式任务、定时任务、人工触发等。
在架构上,阿里云Serverless按照功能划分组件,每个组件各司其职。具体来说,Function Compute提供了一种完全对服务器无感知、事件驱动的Serverless产品,Docker为Serverless的到来提供了技术准备,消息服务提供了事件驱动的基础设施,日志服务为Serverless提供报警监控和日志分析,Serverless架构可以是数据处理的流水线,API Gateway则不仅把计算变成成服务,也把计算的结果变成了服务。