美文网首页Serverl...
Serverless架构-上

Serverless架构-上

作者: quanCN | 来源:发表于2019-11-15 20:51 被阅读0次

    简介

    一般称呼Serverless为“无服务器架构”。Serverless不是具体的一个编程框架、类库或者工具。简单来说,Serverless是一种软件系统架构思想和方法。它的核心思想是让作为计算资源的服务器不再成为用户所关注的一种资源。其目的是提高应用交付的效率,降低应用运营的工作量和成本。

    传统架构与Serverless架构
    • 在传统的场景里,当用户完成了应用开发后,软件应用将被部署到指定的运行环境,这个运行环境一般以服务器的方式体现,可能是物理主机,也可能是虚拟机。根据业务场景的需要,用户会申请一定数量、一定规格(包含一定数量的CPU、内存及存储空间)的服务器以满足该应用的正常运行。当应用上线后,根据实际的运营情况,用户可能会申请更多的服务器资源进行扩容,以应对更高的访问量。在这个场景里面,用户需要关心服务器总体的数量,以运行足够的应用实例;需要关心每台服务器的资源是否充足,是否有足够的CPU和内存;;需要关心服务器的状态,因为每台服务器上应用的部署都要花费不少时间和精力。因为用户需要花费大量的时间、精力在服务器这一计算资源的计划、管理和维护上。
    • 在Serverless架构下,情况则截然不同。当用户完成应用开发后,软件应用将被部署到指定的运行环境,这个运行环境不再是具体的一台或多台服务器,而是支持Serverless的云计算平台。Serverless云计算平台保证该主机提供应用正常运行所需的计算资源。在访问量升高时,云计算平台动态地增加应用的部署实例。当应用空闲一段时间后,云计算平台自动将应用从主机中卸载,并回收资源。在
    Serverless带来的价值
    • 降低运营复杂度
      Serverless架构使软件应用和服务器实现了解耦,服务器不再是用户开发和运营应用的焦点。
    • 降低运营成本
      Serverless的应用是按需执行的。应用只在有请求需要处理或者事件触发时才会被加载运行,在空闲状态下Serverless架构的应用本身并不占用计算资源。
    • 缩短产品上市时间
      在Serverless架构下,应用的功能被解构成若干个细颗粒度的无状态函数,功能与功能之间的边界变得更加清晰,功能模块之间的耦合度大大减小。这使得软件应用的开发效率更高,应用开发的迭代周期更短。
    • 增强创新能力
      应用的开发和部署效率的提升,使得用户可以用更短的时间、更少的投入尝试新的想法和创意。

    流行的Serverless框架和平台

    • AWSLambda,最早被大众所认可的Serverless实现
    • AzureFunctions,来自微软公有云的Serverless实现
    • OpenWhisk,Apache社区的开源Serverless框架
    • Kubeless,基于Kubernetes架构实现的开源Serverless框架
    • Fission,Platform9推出的开源Serverless框架
    • OpenFaaS,以容器技术为核心的开源Serverless框架
    • Fn,来自Oracle的开源Serverless框架,由原IronFunctions团队开发。

    FaaS与BaaS

    目前业界的各类Serverless实现按功能而言,主要为应用服务提供了两个方面的支持:函数即服务(FunctionasaService,FaaS)以及后台即服务(BackendasaService,BaaS)


    FaaS

    FaaS提供了一个计算平台,在这个平台上,应用以一个或多个函数的形式开发、运行和管理。FaaS平台提供了函数式应用的运行环境,一般支持多种主流的编程语言,如Java、PHP及Python等。FaaS可以根据实际的访问量进行应用的自动化动态加载和资源的自动化动态分配。

    注:一个完整的应用用户还需要管理db,redis,mq等,并没有完全实现Serverless。在实现应用框架Serverless时,也应该实现应用所依赖的服务serverless化

    BaaS

    为了实现应用后台服务的Serverless化,BaaS(后台即服务)也应该被纳入一个完整的Serverless实现的范畴内。通过BaaS平台将应用所依赖的第三方服务,如数据库、消息队列及存储等服务化并发布出来,用户通过向BaaS平台申请所需要的服务进行消费,而不需要关心这些服务的具体运维。

    FaaS BaaS

    Serverless平台的FaaS及BaaS的功能提供了实现Serverless架构理念的技术基础。FaaS是Serverless应用的标准运行环境,BaaS是Serverless应用访问第三方依赖的标准途径。

    Serverless应用架构

    要实现Serverless的理念,除了要有相关的工具、框架和平台提供Serverless实现的支持外,对于应用程序本身也有架构上的要求,让应用从架构层面上适应Serverless化的运行和管理环境,以获得Serverless架构的价值最大化。

    传统架构

    一个常见的传统应用设计和部署架构,应用程序部署在数据中心的主机上。在一个应用中包含了多个功能,如订单创建、订单查询和订单修改等。应用数据存储在外部数据库中。数据库和应用一样,也部署在数据中心的主机上,由用户负责运维。

    Serverlsee应用架构

    应用被部署在Serverless平台之上。应用的功能点变成若干个函数定义,部署于FaaS之中。数据仍然存放在后端数据库中。应用函数通过访问后端的数据库服务(BaaS)获取订单数据。


    两种架构比较
    • 相同点
      • 两个应用都存在一个逻辑层,负责处理用户请求;
      • 两个应用的数据都存储在应用外部的数据库中。
    • 不同点
      • Serverless架构的应用部署于Serverless平台之上,由Serverless平台提供运行所需的计算资源。
      • 在Serverless架构下,由于应用的逻辑分散成了若干个函数,推荐通过API网关对这些函数逻辑进行统一的管控(如流量控制、安全管控、版本管理等)

    Serverless应用架构的演化其实就是应用为了适应Serverless平台的FaaS和BaaS的一个过程,使得应用的架构可以最大化FaaS和BaaS所带来的价值。

    Serverless架构-下

    相关文章

      网友评论

        本文标题:Serverless架构-上

        本文链接:https://www.haomeiwen.com/subject/ycxeictx.html