赞
踩
通过Serverless的发展历程及带给我们的挑战,引出我们改如何改变思路,化繁为简,趋利避害,更好的利用其优势,来释放企业效能,为创造带来无限可能。
无服务器计算近年来与云原生计算都是在互联网背景下产生,其顾名思义是指开发者在构建和运行应用时无需管理服务器等基础资源设施,应用被解耦为细粒度的函数,函数是部署和运行的基本单位。用户只为实际使用的资源付费。这些代码完全由事件触发(event-trigger),平台根据请求自动平行调整服务资源,拥有近乎无限的扩容能力,空闲时则没有任何资源在运行。代码运行无状态,可以轻易实现快速迭代、极速部署。
在快速发展的互联网时代,从最初的物理服务器,到使用XEN、KVM等虚拟化技术的虚拟机,再到云计算自动管理这些虚拟化资源,再到容器技术的出现,隔离了应用关于操作系统,现在,我们又有了Serverless,让用户无需关心程序运行环境、资源及数量,只要将精力 Focus 到业务逻辑上的技术。
云计算的发展从IaaS,PaaS,SaaS,到最新的BaaS,FasS,在这个趋势中Serverless(去服务器化)。
对于一个完整的应用,想要上Serverless,需要我们考虑前端,API网格即后端的服务以及对象存储数据库等,从技术角度来说,Serverless 就是 FaaS 和 BaaS 的结合。
FaaS(Function as a Service) 就是一些运行函数的平台,比如阿里云的函数计算、AWS 的 Lambda 等。
BaaS(Backend as a Service)则是一些后端云服务,比如云数据库、对象存储、消息队列等。利用 BaaS,可以极大简化我们的应用开发难度。
Serverless 则可以理解为运行在 FaaS 中的,使用了 BaaS 的函数。
针对上述Serverless面对的挑战,我们需要清楚的认知知道的业务是否适用于Serverless的场景,拆分业务,对于某些接口,某一类模块功能是否可以迁移上Serverless来优化架构。
对于基础设施带来的挑战,在目前公有云快速发展的阶段,其为我们提供了统一的一站式上云体验,与最佳实践,在我们考虑范围内或未来可能遇到的问题,都已经替我们考虑到并解决,真正的实现了让我们在云计算的时代,用户将所有的精力关注在自身的业务创新,释放更大业务价值上,在此我们就AWS 的Lamdb进行展开实践。
AWS Lambda 是一项计算服务,可使您无需预配置或管理服务器即可运行代码。AWS Lambda 只在需要时执行您的代码并自动缩放,从每天几个请求到每秒数千个请求。您只需按消耗的计算时间付费 – 代码未运行时不产生费用。借助 AWS Lambda,您几乎可以为任何类型的应用程序或后端服务运行代码,并且不必进行任何管理。AWS Lambda 在可用性高的计算基础设施上运行您的代码,执行计算资源的所有管理工作,其中包括服务器和操作系统维护、容量预置和自动扩展、代码监控和记录。您只需要以 AWS Lambda 支持的一种语言提供您的代码。
AWS Lambda是属于FaaS,Serverless还需要Baas的相关服务,公有云为我们提供了完整的一套解决方案,例如事件响应,更改Amazon S3 存储桶或 Amazon DynamoDB 表中的数据;以及使用 Amazon API Gateway 运行代码以响应 HTTP 请求;或者使用通过 AWS SDK 完成的 API 调用来调用您的代码。借助这些功能,您可以使用 Lambda 轻松地为 Amazon S3 和 Amazon DynamoDB 等 AWS 服务构建数据处理触发程序,处理 Kinesis 中存储的流数据,或创建您自己的按 AWS 规模、性能和安全性运行的后端。
对于DevOPS,您可以使用 CodePipeline 和 AWS CodeBuild 自动部署这些应用程序。
Serverless 有一定的应用场景,分析自身业务的架构即场景,结合Serverless的特点,来拆解或将适应场景的业务迁移上Serverless。
您将使用 AWS Lambda 控制台创建一个 Lambda 函数。接下来,您将使用示例事件数据手动调用 Lambda 函数。AWS Lambda 将执行 Lambda 函数并返回结果。然后,您将验证执行结果,包括您的 Lambda 函数已创建的日志和各种 CloudWatch 指标,由于篇幅有限,在此我实践Lambda最基本的使用,后期高阶部分可以仓库官网,来享受一站式服务体验。
打开 AWS Lambda 控制台,选择 Create a function。在函数名称中,输入函数名称,选择 Create function。
设计器显示您的函数及其上游和下游资源的概述。您可以使用它来配置触发器、层和目标。
在此我们创建一个python 3.6 解释器运行时的函数。
创建完成后,我们可以看到函数模版代码为:
- import json
-
- def lambda_handler(event, context):
- # TODO implement
- return {
- 'statusCode': 200,
- 'body': json.dumps('Hello from Lambda!')
- }
完成后,可以看到我们编写的函数。
点击测试,创建测试事件,在此选择一个简单的hello world世界测试模版,自定义命名后,进行测试。
创建完成测试事件后,运行测试,可以看到运行的结构。
注意:每个用户每个函数可以创建最多 10 个测试事件。这些测试事件不适用于其他用户。
我们可以先来看看运行测试后的结果输出。
通过打印结果,我们可以得出以下配置结论:
对于函数测试运行后,我们可以通过监控日志来查看函数运行的相关信息,
对于函数运行监控,我们可以通过CloudWatch来进行查看,后期可以进行统计分析,函数的瓶颈及并发数,进行调优。
再使用完成函数后,进行相关资源清理,再清理资源的时候有用有日志和IAM角色,也需要一并清理。
至此就完成了整个函数、角色和日志组的清理工作。
在使用 AWS Lambda 时,您只需负责自己的代码。AWS Lambda 管理提供内存、CPU、网络和其他资源均衡的计算机群。函数计算虽然适用于很多场景,但也不是覆盖全部应用场景的万金油,无服务器云函数想要后期更快的发展,需要进行业务逻辑的精细梳理和各函数调用,其次需要云厂商多个性化定制服务,已经自己需要完善生态,最少无服务器云函数支持自家云上各产品。虽然目前来说Serverless还是有不少的局限性,Serverless一直在发展完善中,广大开发者和服务提供者都在寻找Serverless的无限可能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。