美文网首页响应式系统和架构
关于Serverless架构及其应用场景 - 草稿

关于Serverless架构及其应用场景 - 草稿

作者: 叶JEFFREY | 来源:发表于2019-11-02 11:39 被阅读0次

    由于最近的一个内部项目涉及到无服务架构的服务组件。觉得有些内容值得分享。目前国内外都有厂商提供了无服务架构的服务平台。公司可根据自身的情况搭建基于无服务架构的应用。本文是对无服务架构的一些主要的内容做些简单介绍。所述内容将使用亚马逊的平台。

    什以是Serverless架构

    根据亚马逊的定义(如下文)Serverless架构是指用户在亚马逊的云服务器中创建和运行软件应用与服务。用户无需关心所涉及的IT设施相关的内容(如: 管理、升级等)。这些工作都将由亚马逊云服务(AWS)承担。

    “Serverless architectures allow you to build and run applications and services without having to manage infrastructure. Your application still runs on servers, but all the server management is done by AWS. You no longer have to provision, scale, and maintain servers to run your applications, databases, and storage systems”

    IT架构演进示意图

    随着IT架构的进一步的演进(从物理机托管→云主机→Docker容器→Serverless架构。见上图如示),其在架构上的特点主要表现为:

    硬件资源使用颗粒度变小、利用率增大、运维工作与业务工作逐步分离、更关注上层业务运行情况、商业用户逐渐聚焦在业务流程设计和业务操做及代码层面业务服务生成与改进、IT运营操作逐浙转由云运营商代管。

    Serverless架构是IT架构进一步演化的产物。其主要有以下特点:

    实现了细粒度的计算资源分配;

    不需要预先分配资源。无需配置和管理操作系统;

    具备真正意义上的高度扩容和弹性。支持按需伸缩;

    按需使用,按需计费。

    Serverless架构图

    如上图所示,Serverless架构包含两块:

    函数即服务:

    函数即服务提供的是计算能力。原有的计算能力,无论是容器也好,虚拟机也好都承载在一定的操作系统之上,函数即服务把计算能力进行了进一步抽象

    后端即服务:

    后端即服务,比如对象存储,数据库应用,缓存服务,我们也可以称之为Serverless,因为这些服务也能够在云上提供开通即使用的能力。在使用这些产品时同样不需要关注它的服务器是什么样的,它的服务器部署在哪里,而是服务开通就可以使用了,后面的运维工作都交给了云,所以不用感知它的最底层服务器,即谓之Serverless。这种服务被称为Serverless后端即服务。这两个合起来可以称为Serverless架构。

    应用场景

    还是那句话。谈技术不谈应用场景就是耍流氓。每一个架构都不是万能的,都有其适用范围。总的来说,Serverless架构方案适合于那些想寻找一个能进一步提高IT运营资金和资源利用率的轻量级解决方案的企业。进一步细分可以是当企业存在以下需求时可使用无服务器架构:

    服务器不存在时、低成本、更少的代码、可扩展性和灵活性。

    (估计土豪不会感兴趣。)

    这里需要指出的是: 这个提高是有一个范围。这一点将在本文下面关于优势与限制的内容中指出。

    Serverless架构所具有的IT资源可根据需求弹性伸缩及可按需计费收费的特点决定了其相对于传统的IT架构更适合那些对IT能力和资源(如: 计算资源、存贮资源)需求量不确定或不稳定的企业应用场景。

    企业对IT资源需求不稳定:

    往往基于事件的业务场景:如: 双十一那天、秒杀活动期间、节日、突发事件等都会在短期产主大量IT资源需求量。而商业公司或采用传统的IT架构则会产生额外工作IT维护费用。又如: 物联网应用场景(如: 共享单车等)或其它基于定制事件或固定触发事件的业务场景对IT资源在时间上的不连续性和无规律性也会给使用传统架构的用户带来额外费用。

    企业对IT资源需求不确定:

    在一些场景下(如: 业务发展初期、市场及用户不明朗、应用冷起动阶段), 企业做IT Capacity Planning会有较大误差。

    Serverless架构的函数计算或函数即服务(FaaS)及后台即服务(BaaS)的服务相对于自建环境的传统方案在系统维护及成本上有一定的优势。比较可参见下图(以阿里产品为例)。

    注: 此比对表源于网络

    总的来说,架构师可以借助以下原则构建一个理想的无服务器(Serverless)系统:

    1. 根据需要使用计算服务执行代码(无服务器):

    无服务器架构是SOA概念的自然延伸。在无

    设计模式及最佳实践

    架构设计模式的作用是为系统设计师在设计系统过程中选用应对某类业务问题的架构设计方案时提供基于最佳实践的参考架构和模板。以下将介绍几个重要的Serverless架构设计模式。

    1. 大数据业务领域的Serverless系统架构设计模式:

    2. 自动化和布署业务领域的Serverless设计模式:

    3. ETL业务领域的Serverless设计模式:

    4.基于三层架构(3-tier)的互联网应用领域的Serverless设计模式:

    此外,无服务器架构也很适合物联网应用领域。比如: Amazon Web Service(AWS)有一个物联网(Internet of Things, IoT)平台。其可提供与各种物联网应用相关服务内容如: 身份验证与授权、通信网关、基于给每个设备分配唯一标识方式生成的注册表、对设备状态进行持久化及跟踪、能将设备消息转换和路由到AWS服务的服务

    采用Serverless架构的利与弊

    可以涚设计过程往往是一个填坑与挖坑的过程。无服务器架构并不适用所有情况。比如以下几种情况下它并不一定适用:

    1. 服务级别

    尽管相应的供应商(如AWS)会有一个SLA, 但仅针对某些服务)。所以,对于延迟敏感的应用程序或具有特定的服务级别协议(SLA)的软件来说,它可能不适用。

    2. 供应商锁定

    (未完。持续更新中……)

    相关文章

      网友评论

        本文标题:关于Serverless架构及其应用场景 - 草稿

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