解读Serverless架构的前世今生
什么是Serverless架构
Serverless架构是一种基于函数计算事件驱动,弹性、无状态、按需付费的新型架构。它的核心思想是:开发者无需再关注基础架构,只需要专注于编写和维护自己的业务逻辑函数,代码运行在云上的一个虚拟环境中,由云服务商来管理运维的细节,如环境搭建、弹性扩缩容、安全、高可用等等,开发者只需要按照实际资源使用量付费,极大地降低了开发者的运维成本。
Serverless架构的发展历程
1. 开始崛起
Serverless架构概念在2014年就被提出,最早被AWS(Amazon Web Services)推出的Lambda服务所引领。当时,AWS在Re:Invent大会上推出这个类似于函数计算的服务,并预测它会是下一代计算范式的未来,瞬间引起了业内的高度关注。
2. 业界跟进
几年之后,随着AWS Lambda逐步成熟和发展,很多其他云服务商也推出了类似于Lambda的函数服务,Google Cloud Functions(2016)和Microsoft Azure Functions(2016)等都相继面世。
3. 快速崛起
2017年,AWS宣布推出AWS Fargate服务,使得云服务商开始为Serverless应用提供更加全面的支持,并在同年发布了AWS Serverless Application Model(SAM),为使用Lambda的应用提供了更加统一、高效的部署模式,进一步推进了Serverless的快速崛起。
4. 迅速普及
2018年,Serverless架构已经成为了云服务的趋势,Usersnap的2018全球Serverless架构使用报告中显示,近60%的受访者都已经使用或已经在计划中使用Serverless架构方案了,其中AWS Lambda依旧是市场的龙头。
Serverless架构的应用场景
由于Serverless架构的无服务器、自动弹性、低成本的特点,主要适合以下应用场景:
-
数据处理和处理任务:无需设置服务器即可定义并定制数据流程用于数据采集和处理。
-
Web应用程序:Serverless Services允许即时部署全栈Web应用程序,从而缩短和应用程序的部署时间。
-
自动化架构:Serverless架构通过AWS Lambda等服务提供商可以轻松地编写自动化脚本。
-
事件驱动的计算:Serverless架构允许事件触发函数执行,并且只计费在函数执行期间的运行时,更具弹性和成本效益。
Serverless架构的优劣势
优势
-
灵活性:Serverless可以自动缩放,提高弹性,并根据需求进行效率调整。
-
可拓展性:Serverless架构应用可以跨多个函数服务,由于请求的对象是分布式服务,从而提高了应用程序的可拓展性能。
-
成本效益:Serverless架构不用安装或管理基础设施或竞争服务的安全性,从而显著降低了开发成本和面积要求。
劣势
-
限制:Serverless架构对于复杂应用程序和长时间运行的应用程序来说可能不是很适合,因为有着较高的限制。
-
可见性:Serverless架构的应用无法进行部署或主动的API调用,从而降低了可见度并降低了公司的控制权。
-
安全性:Serverless架构需要公司信任供应商,服务器及其所有内容都可以被托管在网络环境中,从而导致更多的安全性问题。
Serverless架构的示例说明
示例1 - 动态图像调整
假设我们正在构建一个电子商务网站,用户可以上传图片并将其应用于其购买的产品。 在应用程序中通过Serverless架构设计,可以使用AWS Lambda将所有上传的图像转换为统一格式和大小,然后将其上传到AWS S3中。 可以使用AWS Lambda来调整图像的大小以适应Web和移动应用程序的具体需求。
示例2 - 动态Web应用程序
假设我们正在构建一个基于Web的内容管理系统(CMS),基于用户的兴趣与行为分析,我们需要在用户登录后自动展示适当的内容来提高用户体验。 在Serverless架构开始之后,我们可以使用AWS API Gateway作为Web应用的前端入口,API Gateway会随后触发AWS Lambda函数,函数会查询并检索基于行为的内容以响应请求。 使用AWS Lambda构建功能功能可以减少开发周期和支持事件驱动的操作。