端口绑定(Port binding)
Export services via port binding
app通过绑定在特定端口上来提供服务,app是完全自包含的,这要求app不需要靠注入任何环境中的特定的web容器来提供服务。并发(Concurrency)
Scale out via the process model
12 factor app通过进程模型来扩展,且支持跨物理机的进程扩展。而对进程的管理使用操作系统自身的管理工具,而不需要自己有守护进程。易处理(Disposability)
Maximize robustness with fast startup and graceful shutdown
最大化健壮性的方法是要能快速启动并优雅终止。优雅终止需要能停止接受新的请求并把当前请求处理完闭。对于消息处理队列,还要能把当前任务退回队列。开发环境和线上环境等价(Dev/prod parity)
Keep development, staging, and production as similar as possible
要尽可能保持开发,预发布和产品的环境相似性。传统上这些差异包括时间差异,人员差异,工具差异。12 factor apps要求这些差异尽量小。具体说来,就是开发到上产品的时间间隔尽量小,开发和运维人员尽量相同,开发环境和产品环境所使用的软件尽量要一致。
11.日志(log)
Treat logs as event streams
日志是事件流。12 factor app本身并不关心如何存储记录日志,而是把日志输出到标准输出,由程序的运行环境来管理这些输出。
12.进程管理(admin processes)
Run admin/management tasks as one-off processes
后台管理任务当作一次性的进程来运行。