Serverless 框架项目分层架构设计

阅读时长 8 分钟读完

Serverless 是一种新型的架构风格,它可以使你以更少的工作量和成本构建出高效可靠的应用程序。Serverless 框架就是一种用于部署 Serverless 应用程序的“取巧”方式,让你零配置就可以快速构建和部署应用程序。本文将介绍如何使用 Serverless 框架来设计分层架构。

什么是 Serverless 架构

Serverless 架构(无服务器架构)是一种计算模型,该计算模型基于事件驱动的无状态函数,函数将通过云提供商在运行时被调用,以处理事务和服务请求。这种设计方式用于极简化应用程序、减少运维复杂度和成本、增加快速响应性。

但是,在使用 Serverless 架构时,我们要注意以下几点:

  • 无状态:每次函数调用都是一次新的请求,函数间不共享任何数据或状态。
  • 冷启动(针对 AWS Lambda):由于函数是每次运行时动态调用的,第一次调用的挂载时间可能会比较长(这称之为“冷启动”)。
  • 运行时间限制:通常,函数运行时间有计时器限制,通常为 5 - 15 分钟。

Serverless 架构的分层架构

对于 Serverless 架构,我们可以将它分成三层架构:数据层、业务层和界面层。

数据层

在 Serverless 中,数据应该存储在云服务提供商的数据库或存储桶中。例如,AWS S3(或 Azure Blob 存储)可以存储静态数据;AWS DynamoDB(或 Azure 表存储)可以存储半结构化数据;AWS RDS(或 Azure SQL 数据库)可以存储高度结构化数据。我们可以使用 AWS CloudFormation 或 AWS Cloud Development Kit(CDK)创建这些云服务。

在代码中,我们可以使用 AWS SDK 或 Azure SDK 来调用这些数据库或存储桶。

以下是使用 Serverless Framework 创建 DynamoDB 表的示例框架代码。

-- -------------------- ---- -------
-------- -------------------------

--------
  - -------------------------
  - ------------------

-------
  ---------- ----

---------
  ----- ---
  -------- ----------
  ------- ---------

----------
  ----------
    ------------------------------
      ----- --------------------
      -----------
        ---------- ------------------------
        ---------------------
          - -------------- ------
            -------------- -
        ----------
          - -------------- ------
            -------- ----
        ----------------------
          ------------------ ---
          ------------------- ---

业务层

业务层包含一组逻辑程序功能,例如处理业务数据和逻辑检查、调用其他服务(例如 AWS SNS)进行消息推送、验证 OAuth 标记等。对于 Serverless 中的每个业务功能,我们可以创建单独的 Lambda 函数。

以下是使用 Serverless Framework 创建 Lambda 函数的框架代码。

-- -------------------- ---- -------
-------- --------------------------

--------
  - ------------------

---------
  ----- ---
  -------- ----------
  ------- ---------

----------
  ---------
    -------- -------------

以下是一个处理 POST 请求的 Lambda 函数示例,该请求处理用户名和密码。

-- -------------------- ---- -------
---- --------
----- --- - -------------------  
----- --------- - --- ------------------------------
----- ------ - ------------------

----- ----------- - ---

---------------------- - ----- ------- -------- -- -
  ----- -------- - --------------------
  ----- -------- - --------------------
  ----- -------------- - ----- --------------------- -------------

  ----- --- - -
    ---------- ---------------------------
    ----- -
      --- ---------------------
      --------- ---------
      --------- --------------
    -
  --
  ------ ------------------------------------ -- -
    ----- -------- - -
      ----------- ----
      ----- ------------------------
    --
    ------ ---------
  ---
-

界面层

界面层通常是通过 Web API(例如 REST API)或移动应用程序(例如 Android 或 iOS 应用程序)与终端用户进行交互和通信的视觉组件。对于服务器端渲染的应用程序,我们可以使用 Node.js Express 框架提供界面层。对于静态网站,则可以使用 AWS S3 和 CDN。

以下是使用 Serverless Framework 部署静态网站的框架代码。

-- -------------------- ---- -------
-------- -------------------------

--------
  - --------------------
  - --------------------------------

---------
  ----- ---
  -------- ----------
  ------- ---------

-------
  ---
    ----------- ---------
    --------- ------

----------
  ----------
    ---------
      ----- ---------------
      -----------
        ----------- ----------------------------

    -------------
      ----- ----------------------------
      -----------
        ---------
          -------------- -------------------------------------------------------------------------------
          ---------------- -----
        -----------
          ----------- ----------------------------
          -------------- --------------------------

    ----------------
      ----- -----------------------------
      -----------
        -------------------
          -------- ---- ------------ --- ----------
          --------
            - ----------- ---------------------------------------------
              --- --------
              ---------------
                --------------------- --

          -------- ----
          ---------------------
            --------------- --------
            ----------------
              ------------ -------
            --------------------- -------------------
            ---------------
              - ---
              - ----
            ----------- -----
            ------- ----
          --------
            - -----------
          ----------- --------------
      ----------
        - ------------

结论

由于 Serverless 是一种新的架构风格,它可以减少工作量和成本,从而构建出高效、可靠且快速响应的应用程序。在 Serverless 中,我们可以通过分层架构设计将业务逻辑和数据模型分离,从而更好地扩展和维护代码。Serverless 框架提供了一种“取巧”的方式来构建和部署 Serverless 应用程序,它提供了自己适当的代码拆分和代码测试工具,同时也具有无缝部署和易于调试的功能。相信本文可以为你提供有深度、有学习和指导意义的 Serverless 开发技巧。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674c84cda336082f254203c9

纠错
反馈