随着云原生和微服务架构的普及,开发者需要工具链支持从代码编写到基础设施部署的完整流程。SST通过抽象底层细节,提供标准化接口和开箱即用的组件,让开发者专注于业务逻辑实现。其核心优势在于:
- 全栈集成:统一管理前端、API、数据库和微服务
- 基础设施即代码:通过TypeScript定义部署配置
- 开箱即用的微服务架构:支持模块化扩展
核心功能与架构
SST的架构设计围绕三个核心模块展开:
1. 开发环境
- 热更新:前端、API和数据库实时同步更新
- TypeScript支持:全栈类型安全
- React集成:内置React组件库和路由系统
2. 服务层
- API路由:基于Express的RESTful API开发
- 数据库集成:支持PostgreSQL、MongoDB等
- 微服务编排:通过模块化设计实现服务拆分
3. 部署系统
- 基础设施即代码:通过
.sst
配置文件定义AWS、Docker等部署方案 - CI/CD集成:支持GitHub Actions、GitLab CI等
- 环境管理:开发、测试、生产环境一键切换
核心特性
- 零配置启动:5分钟内搭建完整项目
- 云原生支持:无缝部署到AWS、阿里云等
- 模块化扩展:通过插件系统扩展功能
安装与环境配置
1. 系统要求
- Node.js 16+ 或 Deno
- Docker(可选,用于本地开发环境)
- AWS/DigitalOcean等云服务账号(可选)
2. 安装步骤
# 全局安装SST CLI
npm install -g @server-side-template/cli
# 创建新项目
sst new my-app --template=typescript-react
# 进入项目目录
cd my-app
3. 开发环境启动
# 启动开发服务器
sst start
# 访问应用
http://localhost:3000
基础开发流程
1. 创建API端点
// packages/api/src/routes.ts
import { Router } from "@sst/core/router";
export function main() {
return Router({
"GET /api/users": async () => {
return { users: ["Alice", "Bob"] };
}
});
}
2. 集成数据库
// packages/api/src/db.ts
import { Database } from "@sst/core/database";
export const db = new Database({
name: "my-db",
engine: "postgres",
env: ["development", "production"]
});
3. 部署配置示例
// sst.config.ts
import { SSTConfig } from "@sst/core";
export default {
config: {
name: "my-app",
region: "us-east-1",
stage: "dev"
},
services: {
api: {
type: "api",
path: "packages/api",
environment: {
DATABASE_URL: db.getUrl()
}
}
}
} as SSTConfig;
高级功能与最佳实践
1. 微服务拆分
// packages/service-a/sst.config.ts
import { SSTConfig } from "@sst/core";
export default {
services: {
serviceA: {
type: "api",
path: "packages/service-a",
environment: {
CACHE_TTL: 3600
}
}
}
} as SSTConfig;
2. 云资源定义
// sst.config.ts
import { Bucket } from "@sst/core/bucket";
export const mediaBucket = new Bucket({
name: "media-storage",
region: "ap-southeast-1",
public: true
});
3. 自定义插件开发
// plugins/my-plugin.ts
import { Plugin } from "@sst/core/plugin";
export class MyPlugin implements Plugin {
apply() {
// 扩展SST CLI命令
cli.command("my:command", {
description: "自定义命令示例",
action: () => {
console.log("执行自定义逻辑");
}
});
}
}
4. 环境变量管理
// sst.config.ts
export default {
config: {
env: {
API_KEY: process.env.API_KEY ?? "default_key",
STAGE: process.env.STAGE ?? "dev"
}
}
};
部署与运维
1. 云部署流程
# 部署到AWS
sst deploy --stage prod
# 查看部署资源
sst ls
2. 监控与日志
# 查看API日志
sst logs --service api --tail
# 生成基础设施拓扑图
sst graph > infrastructure.dot
3. 滚动更新
# 无感知部署更新
sst deploy --stage prod --rollback-on-failure
性能优化与注意事项
1. 冷启动优化
// packages/api/src/lambda.ts
import { Lambda } from "@sst/core/lambda";
export const warmup = new Lambda({
path: "src/handlers/warmup",
timeout: 30,
memorySize: 1024,
environment: {
KEEP_ALIVE: "true"
}
});
2. 数据库连接池
// packages/api/src/db.ts
import { Pool } from "pg";
const pool = new Pool({
connectionString: db.getUrl(),
max: 20,
idleTimeoutMillis: 30000
});
3. 安全配置
// sst.config.ts
export default {
config: {
security: {
enableCORS: false,
enforceHTTPS: true,
securityHeaders: {
"X-Content-Type-Options": "nosniff",
"Content-Security-Policy": "default-src 'self'"
}
}
}
};
总结
SST通过统一的开发体验和基础设施管理能力,重新定义了全栈开发的流程。从快速启动项目到部署复杂微服务架构,开发者能够通过标准化的接口高效实现需求。其核心价值不仅在于技术整合,更在于对开发效率和运维成本的显著优化。