云原生架构指南

12 因素应用原则

#因素关键点
1基准代码每个应用一个代码库,用 Git 跟踪;多次部署
2依赖显式声明并隔离(package.json、go.mod)
3配置将配置存储在环境变量中,而非代码
4后端服务作为附加资源对待(数据库、缓存、队列)
5构建/发布/运行严格分离构建、发布和运行阶段
6进程作为无状态进程执行;数据持久化到后端服务
7端口绑定通过端口绑定对外提供服务
8并发通过进程模型横向扩展
9可丢弃性快速启动,优雅关机
10开发/生产对等尽量保持开发、预发布、生产环境一致
11日志将日志视为事件流,写入标准输出
12管理进程以一次性进程运行管理任务

架构模式

模式描述权衡
微服务小型、可独立部署的服务+ 可扩展性,- 复杂度,分布式系统挑战
容器(Docker)将应用+依赖打包为可移植镜像+ 一致性,- 镜像大小,仓库管理
无服务器(FaaS)事件触发的函数,无需管理服务器+ 低运维,- 冷启动,供应商锁定
事件驱动服务通过事件/消息通信+ 松耦合,- 最终一致性,调试复杂
服务网格服务间通信的基础设施层+ 可观测性、mTLS,- 开销、复杂度