156 lines
2.6 KiB
Markdown
156 lines
2.6 KiB
Markdown
# 13 国内环境部署与运维
|
||||
|
|
|
|||
|
|
## 1. 目标
|
|||
|
|
|
|||
|
|
- 中国大陆访问稳定;
|
|||
|
|
- 微信小程序合法域名可配置;
|
|||
|
|
- TLS;
|
|||
|
|
- 低维护成本;
|
|||
|
|
- 可迁移;
|
|||
|
|
- 可备份;
|
|||
|
|
- 可回滚。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. 推荐生产拓扑(初期)
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
微信小程序
|
|||
|
|
│ HTTPS
|
|||
|
|
▼
|
|||
|
|
Nginx / API Domain
|
|||
|
|
│
|
|||
|
|
▼
|
|||
|
|
NestJS API (Docker)
|
|||
|
|
├── MySQL
|
|||
|
|
├── Redis
|
|||
|
|
└── Tencent COS
|
|||
|
|
|
|||
|
|
管理后台
|
|||
|
|
│ HTTPS
|
|||
|
|
└────────► Nginx / API
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
管理后台静态资源可由 Nginx 或对象存储/CDN 托管。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. 云厂商
|
|||
|
|
|
|||
|
|
优先腾讯云并非代码强绑定要求,而是微信生态和国内运维便利性考虑。
|
|||
|
|
|
|||
|
|
代码必须通过 Adapter 保持:
|
|||
|
|
|
|||
|
|
- COS 可替换 S3 兼容存储;
|
|||
|
|
- Redis 可替换其他标准 Redis;
|
|||
|
|
- MySQL 可迁移标准 MySQL;
|
|||
|
|
- Nginx/Docker 不绑定专有 PaaS。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. 国内依赖获取
|
|||
|
|
|
|||
|
|
开发机可根据实际环境配置:
|
|||
|
|
|
|||
|
|
- npm 国内镜像;
|
|||
|
|
- Docker 镜像加速;
|
|||
|
|
- 操作系统软件源镜像。
|
|||
|
|
|
|||
|
|
但:
|
|||
|
|
|
|||
|
|
- lockfile 必须提交;
|
|||
|
|
- CI 至少验证标准 registry 可构建;
|
|||
|
|
- 不依赖个人私服;
|
|||
|
|
- 不在代码写死镜像地址。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. 环境
|
|||
|
|
|
|||
|
|
### dev
|
|||
|
|
|
|||
|
|
开发者本机 Docker Compose。
|
|||
|
|
|
|||
|
|
### test
|
|||
|
|
|
|||
|
|
CI 自动化测试。
|
|||
|
|
|
|||
|
|
### staging
|
|||
|
|
|
|||
|
|
与生产拓扑尽量一致,使用测试小程序/测试账号。
|
|||
|
|
|
|||
|
|
### prod
|
|||
|
|
|
|||
|
|
真实用户。
|
|||
|
|
|
|||
|
|
严禁 dev 直连 prod 数据库。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 6. 发布
|
|||
|
|
|
|||
|
|
建议:
|
|||
|
|
|
|||
|
|
1. CI build;
|
|||
|
|
2. 生成 immutable image tag;
|
|||
|
|
3. staging deploy;
|
|||
|
|
4. migration precheck;
|
|||
|
|
5. smoke test;
|
|||
|
|
6. production backup;
|
|||
|
|
7. production deploy;
|
|||
|
|
8. health check;
|
|||
|
|
9. E2E smoke;
|
|||
|
|
10. 观察;
|
|||
|
|
11. 出现严重问题回滚应用版本。
|
|||
|
|
|
|||
|
|
数据库 migration 必须设计可前后兼容,避免应用回滚后数据库不兼容。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 7. 监控
|
|||
|
|
|
|||
|
|
至少:
|
|||
|
|
|
|||
|
|
- API availability
|
|||
|
|
- 5xx rate
|
|||
|
|
- P95 latency
|
|||
|
|
- CPU/memory
|
|||
|
|
- disk
|
|||
|
|
- MySQL connection
|
|||
|
|
- Redis connectivity
|
|||
|
|
- job failures
|
|||
|
|
- backup failures
|
|||
|
|
|
|||
|
|
告警进入实际有人查看的渠道。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 8. 容灾
|
|||
|
|
|
|||
|
|
初期无需昂贵双活,但必须:
|
|||
|
|
|
|||
|
|
- 自动数据库备份;
|
|||
|
|
- 异地/云端备份;
|
|||
|
|
- IaC/部署脚本;
|
|||
|
|
- Docker 镜像可重建;
|
|||
|
|
- 文档化恢复;
|
|||
|
|
- 定期演练。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 9. 微信小程序上线准备
|
|||
|
|
|
|||
|
|
实际申请和上线阶段需要根据微信公众平台最新规则核对:
|
|||
|
|
|
|||
|
|
- 小程序主体
|
|||
|
|
- 服务类目
|
|||
|
|
- 隐私保护指引
|
|||
|
|
- 用户信息/手机号等接口使用说明
|
|||
|
|
- request/download/upload 合法域名
|
|||
|
|
- HTTPS 证书
|
|||
|
|
- 备案/域名要求
|
|||
|
|
- 订阅消息模板
|
|||
|
|
- 审核材料
|
|||
|
|
|
|||
|
|
微信平台规则可能变化,因此上线前必须重新查官方文档,不得只依赖本文件。
|