基于 Serverless 的全栈项目实践心得

Serverless 架构在近几年迅速崛起,并且普遍应用于云计算、物联网等领域。在前端技术中,Serverless 也有着广泛的应用,例如实现由 JavaScript 驱动的前端全栈项目。在本文中,我们将通过一个 Serverless 全栈项目示例,分享相关的心得与经验。

为什么要使用 Serverless

传统意义上的 Web 应用需要自己购置服务器、维护与升级系统,同时还需要处理多用户的并发请求以及云环境下的高可用性等问题。这些问题不可避免地增加了开发的难度和复杂度。

而 Serverless 架构则可以解决这些繁琐的问题。它通过将计算资源与存储资源实现抽象化,并把架构的细节都交由第三方服务提供商去处理,大大降低了开发、运维、成本等方面的工作量。

另外,Serverless 服务计量精确且按需付费,没有闲置时间的额外花费,而且无论是规模大还是小,都可以自适应调整所需的硬件资源,提高了 IT 系统的利用率。

Serverless 全栈项目示例

接下来我们将以一个简易的全栈项目示例来探讨如何使用 Serverless 架构。

功能介绍

这个全栈项目是一个“精简版”的 Todo List 应用,具有以下功能:

  1. 用户可以进行注册和登录。
  2. 可以添加、编辑、删除待办事项。
  3. 可以标记和取消标记已完成的待办事项。
  4. 用户退出登录。

技术栈

以下是本项目用到的主要技术栈:

  • 前端:React、Material UI、Axios、Redux、React-Redux、Redux-Thunk。
  • 后端:Node.js、Express、Serverless Framework、Tencent Serverless。
  • 数据库:Tencent COS(对象存储)。
  • 登录认证:JWT(JSON Web Token)。

实现思路

  • 前端部分

在前端部分中,我们使用了 React 作为开发框架,同时搭配 Material UI 的组件库,提高了 UI 的可读性以及页面交互的的友好度。

为了方便管理状态,我们使用了 Redux 进行数据管理,并通过 Redux-Thunk 进行异步数据处理,使用 Axios 作为数据请求方式。

  • 后端部分

我们使用 Node.js Express 框架开发后端,Serverless Framework 管理和部署 Cloud Function。在本项目中,我们使用了 Tencent Serverless,作为 Serverless 提供商,使用腾讯云存储服务 COS 存储数据。

对于登录认证部分,在客户端使用 JWT 进行登录认证,服务端解析之后做相应的处理。

代码示例

  • 前端代码
-- ---------
------ ----- ---------- - ------ ------ -- ----- -------- -- -
  ----- ------ - - -------- - -------------- ------- --------- - --
  --- -
    ----- -------- - ----- ----------------------------------- ----- --------
    ----------
      ----- ------------
      -------- -------------
    ---
  - ----- ------- -
    ----------
      ----- -----------
      -------- - ---- -------------------------- ------- --------------------- -
    ---
  -
--
  • 后端代码
------------------ ----- ----- ----- ---- -- -
  --- -
    ----- ---- - ----- -----------------------------
    -- ------- -
      ------ ---------------------- ---- ----- --- ------ ---
    -
    -- --------------------- --- ------------ -
      ------ ---------------------- ---- ----- --- ----------- ---
    -
    ----- - ----- ----------- - - ---------
    --------- - -----
    ---------------- - ------------
    ----- ------------
    ---------------
  - ----- ----- -
    ---------------------------
    ---------------------------- --------
  -
---

实践经验

  1. Serverless 部署时尽量使用脚本自动化完成。这可以让开发者将更多的精力放在代码编写上,减轻部署流程带来的压力。
  2. 将 cloud function 进行拆分,实现函数逻辑的单一性,同时数据进行分类管理,可以提高代码可读性与可维护性。
  3. 多使用触发器可以降低响应时间,提高服务稳定性,同时减少无效的计算费用。
  4. Serverless 可以有效地减少资源浪费,通过开启天然弹性云计算,维护成本变得更加经济实用。

结论

本文简单介绍了基于 Serverless 架构的全栈项目开发,分享了在应用该架构过程中的经验以及代码示例。通过使用 Serverless 架构,我们可以在开发效率、成本、资源管理等方面获得很大的优势,同时也更加适应未来的云计算技术发展趋势。

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