Appearance
2.2.相关技术
云计算
当前云计算模式可以分为基础架构即服务(IaaS)、平台即服务(PaaS)以及软件即服务(SaaS)。
IaaS减轻了用户管理基础架构的负担;PaaS则是在这个基础上让用户只关注应用服务;PaaS平台提供了应用的运行环境(如应用运行时)、应用依赖的服务(如数据库、中间件、负载均衡、构建服务、发布服务等)以及底层所需的计算资源。
Serverless架构实现的一个重要基础是函数即服务(FaaS)。相对于PaaS而言,FaaS有更高的抽象程度和更低的管理成本。相对于SaaS来说,FaaS用户有更高的控制力和灵活度。
微服务
传统的应用倾向于在一个应用中囊括多个不同的功能模块,SOA时代提倡的是应用系统对外暴露功能并提供服务,通过服务的组合形成新的应用。
微服务架构提倡将应用化整为零,减小颗粒度。
微服务的出现,突破了传统单体应用架构的制约,增加了应用架构的灵活度,为应用的开发和交付带来了价值:更清晰的权责、更快速的开发和交付节奏、更灵活的资源扩展。
落地实践微服务架构时,用户必须思考的挑战:团队组织变化、运维复杂度、微服务治理。
Serverless和微服务两种架构都强调功能的解构,都强调最小的成员单位专注于做一件事情,做好一件事情。
微服务架构中的最小成员单位是微服务,而Serverless架构中的最小成员单位是函数。
两者侧重点不同,微服务强调化整为零,提高应用架构灵活度,Serverless强调的是减负,即将服务器移除用户的管理职责范围。
容器
容器技术以一种称为容器镜像的打包方式为基础,扩大了应用交付件的边界。
容器镜像中不仅包含编译构建后的应用,还包含应用所依赖的中间件、类库和操作系统设置等配置,可以为应用的运行提供一个完整的环境。
传统的操作系统只管理一台主机上的CPU、内存、磁盘和网络资源,而Kubernetes则掌握着数据中心中成百上千台主机的资源。
PaaS
PaaS平台和Serverless平台之间的主要差异在于:管理的颗粒度不同;应用部署模式不同;作业类型不同,对于实例的态度不同。
OpenShift是基于Kubernetes的一个开源容器PaaS平台。
FaaS
FaaS是当前Serverless实现的技术基础。但Serverless并没有要求一定要基于FaaS实现。
FaaS的特点同时是Serverless平台的特点:1、抽象了底层计算资源;2、按使用量付费;3、自动弹性扩展;4、事件驱动。
一个FaaS平台的架构中包含如下主要组件:函数定义、函数实例、控制器、事件、事件源、触发规则、平台服务。
BaaS
BaaS所覆盖的范围比较广泛,覆盖了应用 可能依赖的一切第三方服务,如对象存储服务、数据库服务、身份验证服务及数据分析服务等。
广义的Serverless包含FaaS和BaaS两个方面,FaaS解决了应用本身的“无服务器”化,BaaS解决了应用的第三方服务的“无服务器”化。
NoOps
越来越多的企业基于多年来积累的运维经验构建运维知识库,通过AI、机器学习等技术尝试智能化运维。
“无服务器”与“无人运维”:用户不需要对底层的基础架构进行运维,但还是需要有人对应用的整体运营状态进行维护。
DevOps
DevOps是一种IT的治理理念,强调和谐的开发和运维的协作,以便为IT提供更可靠和更高质量的交付。
DevOps所倡导的协作、分享和精益的文化对Serverless的推行而言有着很大益处。
云原生
所谓的云原生应用是指充分利用云平台的各种功能和服务所设计的应用程序。强调未来的应用要充分利用云上的各种设施和功能更,最大限度的加速应用的开发、部署和运营,使云的价值最大化。
Serverless应用满足了云原生应用的定义,充分利用了云平台的各种能力,极大的提高了应用开发、交付和运维的效率。