《云计算与虚拟化技术丛书 深入浅出Serverless:技术原理与应用实践》—3Serverless的实现
第3章
Serverless的实现
在了解Serverless所能带来的巨大价值后,许多企业和组织都在其IT转型的蓝图中对Serverless进行布局。希望通过Serverless提升应用交付的效率,降低应用运营的成本。所谓“工欲善其事,必先利其器”。Serverless的落地与实践需要实实在在的平台、工具以及框架作为技术支撑。这些平台、工具和框架是Serverless理念的具体实现。通过这些Serverless的实现,用户才能进行Serverless应用的架构设计、部署及运维。
3.1 Serverless技术的发展
虽然Serverless的发展所经历的时间并不长,但是因为有着很高的关注度,因此这几年陆续涌现了各种类型的Serverless平台和工具。有社区的贡献者对现存的Serverless各类平台和工具进行了梳理,形成了一个列表,列表中所收录的项目达100余项。
Serverless相关资源列表:https://github.com/anaibol/awesome-serverless。
第2章中介绍过,Serverless也是云原生(Cloud Native)应用的一种形态。因此,云原生计算的标准化组织云原生计算基金会(CNCF)也将Serverless纳入其工作关注的范畴,并成立了专门的工作小组,Serverless WG。CNCF的Serverless工作小组也对目前业界存在的Serverless资源做了一次梳理。基于其中比较成熟的平台和方案,CNCF发布了一份Serverless资源的导览图(Serverless Cloud Native Landscape),如图3-1所示。
图3-1 Serverless实现导览图
Serverless导览图的参考地址:https://github.com/cncf/wg-serverless。值得一提的是,CNCF基金会还维护了一些关于构建、设计和运行云原生应用的资源导览图,可以在如下GitHub仓库中查阅:https://github.com/cncf/landscape。
在CNCF的Serverless导览图(图3-1)中,Serverless相关的资源分为如下几大类。
Serverless平台。提供Serverless应用开发和运维的公有云和私有云平台,如AWS Lambda、Azure Functions、Google Cloud Functions等公有云平台;OpenWhisk、Fission、Kubeless、Fn、OpenFaaS等都可以被部署在私有数据中心的开源Serverless平台。
Serverless框架。Serverless平台为用户提供了开发和运行Serverless的基础,但是许多Serverless平台应用开发的用户体验还不是很完善。而且,不同Serverless平台的规范和开发、部署方式都不尽相同。为了方便用户同时在多个不同平台上开发和部署应用,业界出现了一批Serverless框架,以帮助用户降低Serverless应用开发、部署和管理的复杂度,提高效率。比如,一款名为Serverless Framework的框架同时支持AWS、Azure、Google及OpenWhisk等众多平台。通过Serverless Framework,用户可以屏蔽底层不同平台的差异,通过一个统一的接口部署、测试和管理在不同平台上的Serverless应用。除了降低复杂度、提高工作效率外,有的Serverless框架还增强了Serverless平台的能力,比如Apex。Apex是一款针对AWS Lambda的Serverless增强框架,可以让用户使用非AWS Lambda官方原生支持的编程语言开发应用函数,并将其发布至AWS Lambda平台上。
Serverless工具。各类Serverless应用的辅助工具,简化Serverless应用设计和部署的.architect。如,帮助用户监控管理Serverless应用的日志和性能的Dashbird和IO Pipe,帮助用户对Serverless应用进行持续集成的LambCI。
编程语言库。针对某种编程语言的Serverless类库。python-λ是一款基于Python语言的Serverless工具,可以简化基于Python的AWS Lambda应用的开发和部署。
后台服务。完整的Serverless应用往往还依赖于第三方的后台服务,以解决安全、数据持久化、消息传递等需求。如安全服务Puresec,为Serverless应用提供安全运行环境(Serverless Security Runtime Environment,SSRE);Snyk提供Serverless应用的安全漏洞扫描服务。传统的云服务如AWS云存储服务S3、AWS云数据库DynamoDB、AWS的负载均衡ELB等其实也属于设计和构建Serverless应用时可以利用的后台服务。
关于Serverless的平台和工具有很多。由于篇幅所限,本书不可能对每一种平台和工具都进行详尽介绍。下面我们将针对一些关注程度较高、用户基数比较大的Serverless资源进行介绍。对于其中比较典型的平台和工具,本书将会以专门的章节展开讨论。希望读者在对这些Serverless平台和工具了解的基础上进一步理解Serverless应用构建、部署和运行的生命周期,了解Serverless的生态,以便日后能更高效地深入探索Serverless世界。
- 点赞
- 收藏
- 关注作者
评论(0)