Serverless 项目快速开发实战

前言

Serverless 架构是近年来出现的一种新型架构,它可以让我们更加聚焦于业务逻辑,而不是服务器和运维。本文将介绍如何在 Serverless 架构下快速开发一个项目。

准备工作

在开始之前,你需要:

  • 具备一定的前端开发基础技能;
  • 熟悉 Node.js 和 serverless 框架。

技术选型

在 Serverless 架构下,我们有多种选择:

  • AWS Lambda:Amazon 的函数即服务服务,支持多种语言,提供丰富的生态环境和工具链,如 SAM 和 Serverless Framework;
  • Google Cloud Functions:Google 的函数即服务服务,类似于 AWS Lambda,也支持多种语言;
  • Azure Functions:Microsoft 的函数即服务服务,类似于 AWS Lambda,也支持多种语言;
  • Alibaba Cloud Function Compute:阿里云的函数计算服务,类似于 AWS Lambda;
  • 腾讯云云函数:腾讯云的函数计算服务,类似于 AWS Lambda。

本文选择 AWS Lambda 作为案例,使用 Node.js 开发。

数据库选择

在传统服务器环境下,我们可以使用各种数据库技术,如 MySQL、MongoDB、Redis 等。在 Serverless 架构下,我们同样也有多种选择:

  • Amazon S3:亚马逊的对象存储服务,可以结合 AWS Lambda 使用;
  • Amazon DynamoDB:亚马逊的 NoSQL 数据库服务,可以结合 AWS Lambda 使用;
  • Azure Cosmos DB:Microsoft 的分布式数据库服务,支持多种数据模型(如 MongoDB,Cassandra 等),可以结合 Azure Functions 使用;
  • Google Cloud Firestore:Google 的文档数据库服务,可以结合 Google Cloud Functions 使用。

本文选择 Amazon DynamoDB 作为案例,作为数据存储服务。

开始开发

步骤一:创建 Serverless 项目

我们可以使用 Serverless Framework 快速创建一个 Node.js 项目:

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

其中,aws-nodejs 模板是用来创建 Node.js 项目结构的,my-project 是项目名称。

步骤二:配置 AWS

在使用 AWS Lambda 和 DynamoDB 之前,你需要配置你的 AWS 账户,并获得相关的 Access Key 和 Secret Key。你可以在这里注册一个 Amazon Web Services 帐户,然后在 AWS 控制台中创建一个 IAM 用户并获取相应的 Key。

接下来,使用以下命令将配置信息保存到本地:

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

其中 <YOUR_ACCESS_KEY><YOUR_SECRET_KEY> 是你在 AWS 控制台中获取到的 Access Key 和 Secret Key。

步骤三:创建 DynamoDB 表

使用以下代码创建一个 DynamoDB 表:

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

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

其中,my-table 是表名,id 是主键名。

步骤四:编写 Lambda 函数

现在,我们可以开始编写 Lambda 函数了。在 handler.js 文件中添加以下代码:

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

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

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

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

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

其中,postNote() 函数用于创建笔记,getNote() 函数用于获取笔记。这些函数将使用上一步中创建的 DynamoDB 表。我们使用 AWS SDK 的 DocumentClient() 来操作 DynamoDB 表,这使得代码更加简单。

步骤五:测试函数

使用以下命令运行 postNote() 函数:

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

使用以下命令运行 getNote() 函数:

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

my-path.json 文件的内容如下:

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

其中,id 是一个时间戳,可以从 postNote() 函数的返回值中获取。

步骤六:部署函数

使用以下命令部署 Lambda 函数和 DynamoDB 表:

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

步骤七:测试函数

使用以下命令测试函数:

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

其中,xxxx 是你的服务名,yy-xx 是你的区域。你可以在控制台中获取到这些信息。

步骤八:移除函数

使用以下命令移除 Lambda 函数和 DynamoDB 表:

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

以上就是一个简单的 Serverless 项目的开发流程。当然,实际项目会更加复杂,但是这个案例可以为你提供一个基本的思路。

结论

Serverless 架构是一种非常有前景的架构,可以大大提高开发效率和灵活性。在深入学习 Serverless 架构之前,你应该具备一定的前端开发能力,并且熟悉 Node.js 和服务器端开发。您可以选择使用 AWS Lambda、Google Cloud Functions、Azure Functions、Alibaba Cloud Function Compute 或腾讯云云函数等服务,推荐使用 Serverless Framework 管理您的项目。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/672c37faddd3a70eb6d67dc3