12 Factor App in Action 12要素应用实战
12 Factor App in Action 12要素应用实战
12 Factor App 是一组用于构建现代、可扩展和可维护的软件应用的最佳实践原则。这些原则由 Heroku 的创始人 Adam Wiggins 提出,并广泛应用于云原生应用和微服务架构中。12 Factor App 的目标是提供一个明确的“代码到部署”的路径,以便开发人员可以更容易地构建在不同环境中都能稳定运行的应用。
原文:https://12factor.net/zh_cn/
12个要素
- 代码库(Codebase): 一个应用应该有一个代码库,并通过多个部署进行跟踪。
- 依赖(Dependencies): 明确声明和隔离依赖,不要依赖于隐含存在的系统工具。
- 配置(Config): 将配置存储在环境变量中,而不是硬编码到应用中。
- 后端服务(Backing Services): 把后端服务如数据库、消息队列等当作附加资源。
- 构建、发布、运行(Build, Release, Run): 严格分离构建和运行阶段。
- 进程(Processes): 以无状态进程的方式执行应用。
- 端口绑定(Port Binding): 应用应该自行绑定到需要监听的端口。
- 并发(Concurrency): 通过进程模型进行扩展。
- 可处置性(Disposability): 应用应该可以快速启动和优雅地关闭。
- 开发环境与生产环境的一致性(Dev/Prod Parity): 保持开发、预发布和生产环境尽可能相同。
- 日志(Logs): 把日志当作事件流来处理。
- 管理进程(Admin Processes): 管理任务应作为一次性进程运行。
12 Factor App in Action
在实践中,12 Factor App 的原则通常与 DevOps 文化、持续集成/持续部署(CI/CD)以及容器化技术(如 Docker 和 Kubernetes)一起使用。这样做的好处包括:
- 可移植性: 由于所有依赖都是明确声明的,应用更容易在不同环境中运行。
- 可扩展性: 应用可以更容易地水平或垂直扩展。
- 可维护性: 遵循这些原则可以使代码库更加整洁,更容易进行故障排查。