mcpField
S
senior-backend

senior-backend

github.com/pixel-process-ug开发380 次安装34 周前更新
代码仓库

关于 senior-backend

senior-backend 是用于设计和实现后端服务的技能,面向开发 API 和维护服务的开发者。它按 API 设计、实现和生产加固组织工作,并涵盖可观测性与事件驱动模式。

主要功能

  1. 01REST、GraphQL 与 gRPC API 设计
  2. 02分层服务与数据访问结构
  3. 03缓存与限流策略
  4. 04健康检查与 OpenTelemetry 可观测性
  5. 05消息驱动架构模式

适用场景

  1. 01实现前定义 API 契约
  2. 02规划后端服务与数据访问结构
  3. 03通过健康检查和遥测准备服务上线
  4. 04设计异步消息工作流

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill senior-backend

安装后在 Claude Code 中输入/senior-backend确认已加载。

详细介绍

高级后端工程师

概述

设计并实现健壮、可扩展的后端系统,重点关注 API 设计、服务架构、数据管理和卓越运营。本技能涵盖 RESTful 和 GraphQL API 模式、消息驱动架构、缓存策略、速率限制、健康检查,以及基于 OpenTelemetry 的全面可观测性。

开始时宣布:“我正在使用 senior-backend 技能进行后端系统设计与实现。”


阶段 1:API 设计

目标: 在编写实现代码之前定义契约。

操作
  1. 定义资源模型及其关系
  2. 设计端点结构(REST)或架构(GraphQL)
  3. 确定身份验证和授权策略
  4. 定义速率限制和节流策略
  5. 创建 API 文档(OpenAPI/GraphQL 架构)
API 风格决策表
因素RESTGraphQLgRPC
不同数据需求的多个使用方不太适合非常适合不太适合
简单的 CRUD 操作非常适合功能过剩功能过剩
实时订阅需要额外添加 WebSocket内置内置(流式传输)
服务间通信适合功能过剩非常适合
公共 API非常适合适合不太适合(工具支持)
带宽受限的移动设备有过度获取数据的风险非常适合非常适合
停止 — 未满足以下条件前,不要进入阶段 2:
  • 已定义资源模型
  • 已记录端点结构或架构
  • 已选择身份验证策略
  • API 契约可供审查(OpenAPI/GraphQL 架构)

阶段 2:实现

目标: 构建职责分离清晰的服务层。

操作
  1. 建立层次清晰的项目结构
  2. 实现数据访问层(repositories/DAOs)
  3. 构建包含业务逻辑的服务层
  4. 创建 API 控制器/解析器
  5. 添加中间件(身份验证、日志记录、错误处理、CORS)
  6. 实现缓存策略
RESTful URL 结构
GET    /api/v1/users              # List users (paginated)
GET    /api/v1/users/:id          # Get single user
POST   /api/v1/users              # Create user
PUT    /api/v1/users/:id          # Full update
PATCH  /api/v1/users/:id          # Partial update
DELETE /api/v1/users/:id          # Delete user
GET    /api/v1/users/:id/orders   # Nested resources
POST   /api/v1/users/:id/activate # State transitions
HTTP 状态码决策表
代码含义适用场景
200成功GET、PUT、PATCH 请求成功
201已创建POST 请求成功并创建了资源
204无内容DELETE 请求成功
400错误请求验证错误
401未授权缺少身份验证信息或身份验证无效
403禁止访问身份验证有效,但权限不足
404未找到资源不存在
409冲突存在重复项或状态冲突
422无法处理的实体输入在语义上无效
429请求过多超出速率限制
500内部服务器错误服务器发生意外故障
响应格式
// Success (single)
{ "data": { "id": "123", "name": "Alice" }, "meta": { "requestId": "req_abc123" } }

// Success (collection)
{ "data": [...], "meta": { "page": 1, "pageSize": 20, "totalCount": 150, "totalPages": 8 } }

// Error
{ "error": { "code": "VALIDATION_ERROR", "message": "Invalid input", "details": [...] } }
缓存策略决策表
策略说明适用场景
Cache-Aside应用检查缓存,未命中时回退到数据库通用场景
Write-Through同时写入缓存和数据库强一致性
Write-Behind写入缓存,再异步写入数据库高写入吞吐量
Read-Through缓存未命中时从数据库加载透明缓存
停止 — 未满足以下条件前,不要进入阶段 3:
  • 项目结构遵循分层架构
  • 在入口处执行输入验证(Zod、Joi、class-validator)
  • 错误处理会返回结构化错误响应
  • 已实现缓存策略并制定失效方案

阶段 3:加固

目标: 为服务投入生产运行做好准备。

操作
  1. 添加全面的错误处理
  2. 实现健康检查和就绪探针
  3. 设置可观测性(跟踪、指标、日志)
  4. 对关键路径进行负载测试
  5. 编写运维场景的运行手册
健康检查端点
// GET /health — lightweight liveness check
{ "status": "healthy" }

// GET /health/ready — readiness with dependency checks
{
  "status": "healthy",
  "checks": {
    "database": { "status": "healthy", "latency": "5ms" },
    "redis": { "status": "healthy", "latency": "2ms" },
    "queue": { "status": "healthy", "latency": "8ms" }
  },
  "uptime": "72h15m",
  "version": "1.4.2"
}
可观测性:RED 方法指标
指标描述实现方式
速率每秒请求数每次请求时递增计数器
错误每秒错误率每次发生错误时递增计数器
持续时间延迟分布直方图(p50、p95、p99)
结构化日志格式
{
  "timestamp": "2025-01-15T10:30:00.123Z",
  "level": "info",
  "message": "User created",
  "service": "user-service",
  "traceId": "abc123",
  "spanId": "def456",
  "userId": "usr_123",
  "duration": 45
}
限流算法决策表
算法优点缺点适用场景
固定窗口简单、内存占用低窗口边界处会出现突发内部 API
滑动窗口分布平滑内存占用较高公共 API
令牌桶可控制突发流量略微复杂行业标准
漏桶输出恒定不允许突发严格限流
STOP — 完成加固的条件:
  • 健康检查端点响应正常
  • 已配置结构化日志
  • 已导出指标(RED 方法)
  • 已完成关键路径的负载测试
  • 错误处理会返回适当的状态码

事件驱动架构模式

消息队列模式决策表
模式用例示例
发布/订阅向多个消费者广播用户注册 -> 邮件、分析、CRM
工作队列在多个工作进程间分发任务图像处理、PDF 生成
请求/响应带响应的异步请求价格计算服务
死信处理失败消息超出重试策略限制
事件架构
{
  "eventId": "evt_abc123",
  "eventType": "user.created",
  "timestamp": "2025-01-15T10:30:00Z",
  "version": "1.0",
  "source": "user-service",
  "data": { "userId": "usr_123", "email": "[email protected]" },
  "metadata": { "correlationId": "corr_xyz789", "causationId": "cmd_def456" }
}

GraphQL 反模式

反模式问题修复方法
N+1 查询性能下降使用 DataLoader 批量处理
无界查询DoS 漏洞强制执行深度和复杂度限制
解析器中过度获取浪费数据库查询仅选择请求的字段

反模式 / 常见错误

反模式错误原因正确做法
直接暴露数据库 ID安全风险,与数据库耦合使用 UUID 或带前缀的 ID
在请求路径中同步调用外部服务单点故障、延迟使用队列或熔断器实现异步调用
N+1 查询模式性能随规模线性下降预加载或使用 DataLoader
捕获并吞掉错误静默失败,无法调试记录日志并携带上下文向上抛出
在处理程序之间共享可变状态竞态条件、行为不可预测采用无状态请求处理
跳过输入验证注入、数据损坏始终在边界处验证
所有错误都返回通用 500开发者体验差使用明确的错误代码和消息
没有 API 版本控制破坏性变更会影响所有使用方从第一天起就进行版本控制(/v1/)

文档查询(Context7)

使用 mcp__context7__resolve-library-id,然后使用 mcp__context7__query-docs 获取最新文档。返回的文档优先于记忆中的知识。

  • express — 用于中间件模式、路由或请求/响应 API
  • fastify — 用于插件系统、钩子或架构验证
  • nestjs — 用于装饰器、模块、提供者或守卫
  • prisma — 用于架构语法、客户端 API 或迁移命令

集成点

技能关联
senior-architect架构决策指导后端服务边界的划分
security-review后端安全遵循 OWASP 和身份验证模式
performance-optimization后端性能通过缓存和查询调优提升
testing-strategy后端测试策略定义集成测试方法
code-review评审验证 API 设计和错误处理
acceptance-testingAPI 行为成为验收标准
senior-fullstack后端为全栈 tRPC 层提供服务

核心原则

  • 从第一天起进行 API 版本控制(/v1/)
  • 在边缘进行输入验证(Zod、Joi、class-validator)
  • 为非 GET 端点使用幂等键
  • 平稳关闭(排空连接,完成正在处理的请求)
  • 为外部服务调用使用熔断器
  • 数据库迁移应进行版本控制且可逆
  • 将密钥存储在环境变量中,绝不写入代码

技能类型

灵活——根据项目上下文调整 API 风格和架构。强烈建议采用三阶段流程(设计、实现、加固)。对于生产服务,健康检查、结构化日志记录和错误处理是不可妥协的要求。

评论

支持 Markdown