Serverless
思考:Serverless架构如何落地实践?
小陈在收到业务部门的加急需求后,开始进行技术调研。他发现无论是将图片进行压缩或解压缩操作,都发生在相对较短的时间窗口内,对计算资源需求的弹性很大,存在着明显的高峰期和低谷期,且峰值的资源需求往往会比较高。如果要开发一个单独的应用功能来实现需求的话,需要考虑分布式架构、负载均衡、弹性伸缩等多方面的技术问题,对于开发资源的投入还是一个不小的挑战。小陈对需求实现的具体方式有些拿捏不准,准备找师傅大刘来探讨一番。
小陈:师傅,业务部门提的那个网站图片文件处理需求,如果要为此开发一个应用的话,我初步评估了下涉及到的技术栈还比较多,我担心自己不能完全胜任,咱们团队内部短时间内也很难协调开发资源。
大刘:运营部门对功能上线的时间催得很急,目前看起来确实是有这个风险。你觉得要实现需求,目前遇到的主要难点在哪?
小陈:图片压缩处理的功能本身实现起来其实并不复杂,但是为了实现这样的功能应用,光有应用代码还不够,需要选择合适的技术架构来承载,包括相关的容量规划、资源准备、应用配置等工作,同时还需要结合业务波峰波谷的变化考虑计算资源的弹性能力,以及合理的成本控制。需要考虑的问题还是挺多的,感觉有点亚历山大。
大刘:嗯,按你说的,如果按照传统应用的开发方式,对任何应用的开发,除了应用本身以外还需要关注资源层面的问题,确实不是一件简单的事儿。前一阵不是学习了Serverless么,不妨想想Serverless架构有助于解决我们面临的挑战吗?
小陈:师傅您这倒是提醒我了,Serverless倡导的就是屏蔽资源层面的复杂性,关注在应用功能逻辑本身,或许是适合解决我们当前的需求场景的一种方案。
大刘:当然,其实你前面所提到的难点,我认为Serverless架构都可以在一定程度上很好的解决。
小陈:Serverless架构的模式和理念我已经有所理解了,但如何才能利用它快速的落地我们的需求呢,有什么好的工具和产品吗?
大刘:建议你可以去了解一下函数计算这种服务,它可以算是Serverless的一种最佳实践了,各大云厂商基本都会提供这种形态的产品,比如阿里云函数计算服务,去研究研究,相信可以帮助到你。
小陈:好的师傅,我这就去学习。
函数计算诞生的需求背景
在之前的课程《Serverless技术和应用初体验》中我们学习过,Serverless通常被看作包含FaaS(Function as a Service,函数即服务)与BaaS(Backend as a Service,后端即服务)两部分。其中FaaS部分,通常负责业务逻辑的实现,其代表性产品就是函数计算,是Serverless中比较常见和通用的产品服务。通过函数计算服务,开发人员无需管理服务器等基础设施,只需编写代码并上传,函数计算会自动准备好计算资源,并以弹性、可靠的方式运行代码。
以上述提到的网站图片处理业务场景为例,我们在传统架构下,需要在云服务器或容器集群上部署应用来解析web图片和进行图片处理,用户通过手机端/网页端上传图片素材后,应用程序对素材进行定制处理,例如按用户属性分类、按区域分类,审核鉴定图片,压缩图片文件以及建立索引等,经过处理之后把素材存储到云存储中,用户通过最近节点的CDN可以轻松获取经过处理的图片素材。
注:CDN指Content Delivery Network 内容分发网络,是由不同区域的服务器组成的分布式网络,解决跨地域、跨运营商网络性能问题,提供稳定快速的加速服务,供用户就近获取内容,降低源站压力。
传统架构下的图片处理业务
在传统架构中,我们需要考虑的环节比较多,例如:
- 需要采购多少台服务器?服务器采用什么规格?
- 如何配置网络和操作系统?
- 如何部署环境?
- 如何负载均衡和分布式处理?
- 如何动态伸缩?
- 如何升级配置?
- 如何应对服务器宕机和相关运维事件?
- 如何应对用户请求峰值?
- 如何应对系统监控报警?
为了帮助应用开发者摆脱服务器等底层基础设施管理的负担,专注于业务层的创新,而将底层服务器资源的管理和调度交给云厂商自动完成,Serverless计算模式就应运而生了。而函数计算服务,可以充分的发挥出Serverless架构的优势能力。通过使用函数计算,用户可以设置云存储的触发器,当用户的行为满足了触发器的条件时,会立即触发函数计算的执行,同样当业务访问量是峰值的时候,函数计算服务会自动扩容来支撑整个业务处理。处理后的数据回传到云存储OSS中,其他用户通过CDN可以访问被处理后的素材资源。
Serverless架构下的图片处理业务
在函数计算场景下,无论应用调用的频繁与否,开发者可以不需要关心业务波峰波谷对资源带来的影响,而是交给云平台来保障底层资源弹性扩容的有效性,甚至支持计算资源缩容到0,在没有业务处理请求时无需占用资源。这样即简化了运维管理的工作,又降低了成本开支,还通过云平台本身的安全能力增强了安全保障,同时还降低了整个业务开发、部署、迭代的技术门槛。在较为复杂的AI等高计算需求场景中,也可以支持按量付费的GPU计算资源,帮助企业更加高效率的实现业务的上线与迭代。