12-Factor 读书笔记
方法论:
1. 标准化流程自动配置;
2. 和OS划清界限,最大可移植性;
3. 适合部署云计算平台;
4. 开发环境和生产环境,差异最少化,并持续交付,敏捷开发。
5. 可在工具,架构,开发流程 不发生明显变化时,实现扩展。
==》 适用于 任意语言和后端服务开发的程序
哪12因子?
1.基准代码
共享一份基准代码,部署不同版本而已。即基准代码和应用之间是一一对应。
2.依赖(没有隐式依赖)
一定通过依赖清单,确切地声明所有依赖项。
同时,通过依赖隔离工具来确保做到这点。
例如:python用 pip 作依赖声明,virtualenv作隔离 C 语言,autoconf和静态链接库。
3.配置(在环境中存储配置)
指不同部署环境的差异,包括:DB, memcached, 证书,域名等,
12-Factor推荐 将配置存储于环境变量中,隔离了代码 。
识别方法:若基准代码开源,是否暴露敏感信息。
4.后端服务(把后端服务当附加资源)
如: DB,消息队列 ,邮件发送服务,缓存系统。
12-Factor应用不区别对待本地或第三方服务,都加附加资源。任意部署都应该可以在不进行任何代码改动的情况下,将本地MySQL数据库换成
第三方服务,仅需修改配置中资源地址。这些资源和他们附属的部署保持松耦合。
5.严格分离构建和运行
6.进程(以一个或我个无状态进程运行应用)
无状态且无共享,用户session中的数据应该保存在诸如 memcached, Redis 这样带过期时间的缓存中。 -----> 易于添加并发,扩展方便。
7.端口绑定(来提供服务)
8.并发
进程不需要守护进程或写入PID文件。不同的工作由不同的进程类型 负责。
9. 易处理(快速启动和优雅终止)
优雅终止:拒绝新请求,处理完当前请求,然后退出。
10. 开发环境与线上环境等价
缩小时间差异(几小时,甚至几分钟可部署);
缩小人员差异(开发者密切参与部署,关注线上表现);
缩小工具差异(尽量保证两环境的一致性);
11. 日志(当作事件流)
发送到 splunk这样的日志索引及分析系统,或Hodoop数据存储系统。
12. 管理进程(如运行数据移植,数据库检查)
应基于某个发行版本运行,一起发布,若带REPL Shell 更方便,如 PHP.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!