Serverless 实践方案之快递网站构建

阅读时长 6 分钟读完

什么是 Serverless

Serverless 是一种架构风格,它不需要实际的服务器来运行应用程序代码。Serverless 的应用程序是由云提供商管理的虚拟环境中运行的,这些环境采用 "Function as a Service(FaaS)" 的模式。

Serverless 带来的好处是显而易见的。首先,它使应用程序开发和部署更容易。其次,Serverless 架构在处理高流量的 Web 应用程序时能够显着降低资源成本。

Serverless 应用场景

Serverless 提供了一个基于事件驱动的环境,可以实现自动扩展和无需显式地管理基础架构。这样一来,Serverless 在以下方面应用得很广泛:

  • 网站后端应用

  • 数据处理和自动化

  • API 开发

  • 应用程序流程和任务自动化

  • 机器学习模型部署

  • 定时任务

Serverless 后端开发应用 实践

在这里,我们将考虑一个 Serverless 实践方案,其中我们将使用它来构建一个快递网站。我们选择 Serverless 方式的原因是:

  • 减少资源成本

  • 可以根据业务变化,动态调整资源需求

  • 可以快速构建

架构设计

构建一个快递网站的 Serverless 架构,其中大部分请求将会跑在静态资源上,但与之相对应的后端服务是一个 Node.js 服务。为了实现这个服务器,我们需要通过以下步骤来完成:

  1. 创建 S3 存储桶并将静态文件添加到其中。

  2. 创建一个 Lambda 函数,该函数可以为应用程序提供后端功能。

  3. 安装 API Gateway,以便能够向应用程序中添加 API 路由。

  4. 通过执行基于 Node.js 的 Express 服务器上的 Lambda 函数,将请求路由到后端。

  5. 然后将用于身份验证和管理的 Cognito 添加到架构中。

  6. 最后加载所有这些资源以启用 Web 应用程序。

静态文件和资源

静态资源由 HTML、CSS、JavaScript、图像和其他文件组成,这些文件在 Web 应用程序中不会改变。在我们的例子中,静态资源由 HTML 页面和 JavaScript 文件构成。

我们需要创建一个 S3 存储桶,并将所有静态文件部署到 S3 上。可以使用 AWS CLI 或 AWS 管理控制台来执行此项任务。

Lambda 函数

为了提供我们的 Web 应用程序的后端功能,我们需要编写代码来创建一个 Lambda 函数。我们使用 Node.js 作为我们的后端、运行语言。

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

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

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

-------------- - ----
展开代码

此 Lambda 函数要求 Express 框架的使用,并提供了一个路由。在这种情况下,路由处理从 URL 中获得请求参数并返回其跟踪信息。

使用以下命令将 Lambda 函数部署到 Lambda。

API Gateway

API Gateway 允许 Web 应用程序向 Lambda 函数发送请求。我们可以通过以下方式来添加 API 路由:

  1. 打开 API Gateway 控制台。

  2. 点击 "创建 API",然后选择 "REST API"。

  3. 选择我们的 Lambda function,轻松配置路由。

一旦您的 API 完成,我们可以通过测试 url 调用该 API。

Cognito

最后,Cognito 允许您添加身份验证和访问控制。我们可以使用 Cognito 在 Web 应用程序中添加注册、登录、密码重置等功能。

  1. 打开 Amazon Cognito 控制台并创建一个新的 Cognito 用户池。

  2. 点击 "用户池",然后选择默认设置。

  3. 自定义用户密钥和密码政策。

  4. 最后,为我们的应用程序创建一个新的 App Client。

加载所有资源

最终步骤是将所有这些资源加载到 Web 应用程序中,以启用应用程序。可以使用 React、Vue 或纯 JS 等技术来实现此目标。

这里是一个简单的 HTML 和 JavaScript 代码示例:

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

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

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

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

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

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

  -------
-------
展开代码

这个 Web 应用程序的前端代码可以是任何想象得到的技术。重要的是,它结合了 Lambda 和 API Gateway,实现了 Serverless 架构,从而降低了 Web 应用程序的部署和运营成本,同时也可以根据实际业务情况实现动态升级。

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

纠错
反馈

纠错反馈