构建 Node.js 应用只是软件开发生命周期的第一步;而应用交付的关键在于确保应用在实际环境中可访问、高性能且具有弹性。部署现代 Web 应用时,需要选择一种与您的流量特征、生命周期阶段及资源预算相匹配的架构。
无论您是要发布 AI 辅助的全栈原型,还是要部署生产级后端服务,现代云环境都能提供自动化和容器化的路径。本指南涵盖 Node.js Web 架构的核心概念,探讨关键部署注意事项,并逐步介绍如何使用免费层级配额在托管式基础设施上创建和部署 Node.js 应用。
Node.js 是一个基于 Chrome V8 JavaScript 引擎构建的开源跨平台 JavaScript 运行时环境。它使 JavaScript 能够在网络浏览器之外的服务器端运行,从而让工程师能够使用单一编程语言编写统一的全栈代码库。
与传统多线程 Web 服务器(为每个并发连接生成一个独立的操作系统线程)不同,Node.js 采用的是事件驱动、单线程、非阻塞 I/O 的模型。此架构使 Node.js 能够轻量、高效地处理数千个并发连接,例如 RESTful API、实时消息传递、在线媒体服务和 AI 智能体编排器。
在准备部署 Node.js 后端时,选择合适的计算环境会直接影响维护开销、扩缩速度和成本效益。
特性 | 虚拟机 (IaaS/VPS) | PaaS/buildpack 托管 | 现代无服务器容器 |
基础架构管理 | 手动操作系统修补、防火墙管理和运行时更新 | 具有供应商运行时锁定的全托管式平台层 | 全托管式基础设施;无需管理操作系统 |
扩缩机制 | 基于指标的虚拟机自动扩缩(启动实例需要几分钟时间) | 按实例数量或工作器限制进行自动扩缩 | 请求驱动型即时自动扩缩,包括缩减至零 |
打包格式 | 原始源文件、systemd 服务或 PM2 进程管理器 | Git 推送代码库与自动化 buildpack 的集成。 | 标准 OCI/Docker 容器映像 |
空闲成本概况 | 全天候计费,无论是否有传入 HTTP 流量 | 通常需要支付最低基础实例价格。 | 在活跃请求处理期间严格按秒计费 |
可移植性 | 可移植性高,但环境漂移风险高 | 可移植性差;受限于平台惯例 | 可移植性高;可在任何环境中运行相同的容器 |
特性
虚拟机 (IaaS/VPS)
PaaS/buildpack 托管
现代无服务器容器
基础架构管理
手动操作系统修补、防火墙管理和运行时更新
具有供应商运行时锁定的全托管式平台层
全托管式基础设施;无需管理操作系统
扩缩机制
基于指标的虚拟机自动扩缩(启动实例需要几分钟时间)
按实例数量或工作器限制进行自动扩缩
请求驱动型即时自动扩缩,包括缩减至零
打包格式
原始源文件、systemd 服务或 PM2 进程管理器
Git 推送代码库与自动化 buildpack 的集成。
标准 OCI/Docker 容器映像
空闲成本概况
全天候计费,无论是否有传入 HTTP 流量
通常需要支付最低基础实例价格。
在活跃请求处理期间严格按秒计费
可移植性
可移植性高,但环境漂移风险高
可移植性差;受限于平台惯例
可移植性高;可在任何环境中运行相同的容器
开发可用于生产用途的 Node.js 应用需要解决架构模式,以防止瓶颈并确保正常运行时间:
您可以通过两种主要工作流创建和部署 Node.js 应用:快速 AI 辅助原型设计(无需本地设置)或基于容器的标准部署(适用于现有代码库)。
对于快速原型设计和 AI 应用,Google AI Studio 构建模式允许开发者使用自然语言描述全栈 Node.js 架构,并将其部署到 Cloud Run,而无需使用本地命令行工具或强制性结算设置。
第 1 步:在构建模式下初始化应用
第 2 步:配置内置数据和身份验证
第 3 步:发布到托管式 Cloud Run
对于预先存在的代码库和自定义微服务,您可以将 Node.js 应用打包到符合 OCI 标准的容器中,并直接部署到 Cloud Run。
第 1 步:构建 Node.js 服务器代码
使用 Express、Fastify 或标准 Node.js 库 (index.js) 创建一个最小的 HTTP 服务器:
注意:Cloud Run 会在运行时自动注入 PORT 环境变量。上述代码中的后备 || 8080 主要是为了方便您在部署前在本地机器上轻松进行测试。
第 2 步:创建安全的多阶段 Dockerfile
使用多阶段构建打包应用,确保生成最小、安全的生产映像。
最佳实践:在根目录中创建一个 .dockerignore 文件,并将 node_modules 和 .env 添加到其中。这样可以确保本地开发文件不会意外打包到容器映像中,从而保持其整洁和安全。
在根目录中创建名为 Dockerfile 的文件:
第 3 步:部署到 Cloud Run
从本地根文件夹使用 Google Cloud CLI 执行部署。您还可以选择为应用创建格式为 <user-defined>.cloud.run 的自定义网址:
了解免费配额的运作方式,可确保您能够以可预测的方式对 Node.js 应用进行原型设计和扩缩:
层级类型 | 计算和资源限额 | 要求/限制 |
Google Cloud 新手体验层级(原型设计) | • Cloud Run:最多 2 个活跃 Web 应用 • Cloud Firestore:1 GiB 存储空间、5 万次读取/天、4 万次写入/天 • Cloud SQL:PostgreSQL 开发者版(缩减至零) • Firebase Auth:包含 Google 登录功能 | • 有效的 Google 账号 • 无需提供信用卡或结算账号 • 单一部署区域锁定 |
标准 Google Cloud 免费层级 (标准账号) | • Cloud Run:200 万次请求/月、18 万 vCPU 秒/月、36 万 GiB 秒/月、1 GB 北美网络出站流量/月 • 获享 300 美元迎新赠金,可在前 90 天内使用 | • 关联的 Cloud Billing 账号 • 跨所有区域的完整平台 API 访问权限 |
层级类型
计算和资源限额
要求/限制
Google Cloud 新手体验层级(原型设计)
• Cloud Run:最多 2 个活跃 Web 应用
• Cloud Firestore:1 GiB 存储空间、5 万次读取/天、4 万次写入/天
• Cloud SQL:PostgreSQL 开发者版(缩减至零)
• Firebase Auth:包含 Google 登录功能
• 有效的 Google 账号
• 无需提供信用卡或结算账号
• 单一部署区域锁定
标准 Google Cloud 免费层级 (标准账号)
• Cloud Run:200 万次请求/月、18 万 vCPU 秒/月、36 万 GiB 秒/月、1 GB 北美网络出站流量/月
• 获享 300 美元迎新赠金,可在前 90 天内使用
• 关联的 Cloud Billing 账号
• 跨所有区域的完整平台 API 访问权限