随着云计算的发展,无论是互联网企业、制造企业、政府、医院等等,越来越多的应用、服务架设在云计算上。云计算彻底改变了计算资源的供给方式,以一种更灵活、更低成本、更可靠的方式提供计算资源。不过随着云计算的快速发展,一种无服务器的架构方式被提出。在业界,有人认为无服务器架构将成为下一代云计算的方式。这篇文章想具体介绍什么是无服务器架构,其优势以及劣势,设计原则,未来发展等。
什么是无服务器架构?
首先,要说明的是无服务器架构并不是真的没有服务器,只是将服务器相关的细节交给他人处理,架构人员、开发人员无需关注服务器层面的细节,包括:负载均衡,自动伸缩,多区容错等。
无服务架构主要由以下两个部分构成:
- Function as a Service: 通过AWS Lambda、Google Cloud Function、Aliyun Function Compute等技术,运行自定义的函数,为最终服务提供支持。
- Backend as a Service: 集成Firebase、Parse等所提供的功能服务(如:用户管理、支付),减少重复的代码工作。
无服务架构的主要目标是基于FaaS,将BaaS、以及其它的XaaS模块进行集成,将服务器、负载均衡、自动伸缩、多区容灾等的实现、运维工作分离出去,专注于创造业务价值的服务设计、开发、运维等工作。
举一个具体的例子,AWS S3或者Aliyun OSS所提供的对象存储服务就是一个比较典型的无服务器的例子,对比传统的磁盘存储,用户无需关心磁盘空间、数据备份、带宽等问题,用户只需要上传对象,云服务提供商把后面的所有内容都做了。基于这个例子,当我们把储存的对象延伸到系统、服务上,无服务器架构让用户无需考虑计算资源(例如:AWS EC2、Aliyun ECS),无需配置负载均衡、自动伸缩。只要将系统、服务架设在无服务架构上,则该系统、服务可以有效的运行,满足业务的需求。
无服务器架构设计原则
由于无服务器架构的特殊性,在设计无服务器架构的系统时,需要考虑以下原则:
使用类似AWS Lambda无需配置或管理服务器即可运行代码的服务来进行编码。
每一个功能只完成一个目标,并且该功能是基于无状态的方式。
通过事件驱动将功能进行有效的编排以满足业务的需求。
考虑将更多的处理逻辑放在客户端。
多使用第三方所提供的服务。
优势 vs 劣势
目前来看无服务器架构不能替代传统的系统架构,以下是无服务器架构的优、缺点:
- 优势
产品可以更快的进入市场
轻松的完成系统的伸缩
灵活的成本,基于用量的扣费方式
- 劣势
并不适用于每一个系统
业务的健壮性依赖于服务提供方的健壮性
锁定了服务供应商
业务由零散的服务、功能所组成,管理相对复杂
未来的系统架构
基于无服务器架构,我们可以设想一个这样的架构体系。
在这个体系中,该系统没有直接使用一个服务器,系统的服务是基于FaaS,并集成第三方服务,通过有效的编排各服务、行数的关系支撑起了业务需求。
参考文献
- GOTO 2017 • Serverless: the Future of Software Architecture • Peter Sbarski - https://www.youtube.com/watch?v=LAWjdZYrUgI
- AWS Lambda - https://aws.amazon.com/cn/lambda/
- Serverless Architectures - https://martinfowler.com/articles/serverless.html
pstrike 2018.06.09 于广州天河
【尊重版权:转载之前请先联系我】