12 Factor 方法论合并知识图谱 / 分组目录 / 12 Factor App 体系

12 Factor App 体系

来源组基础 进阶12 节点
组目录:12 Factor App 体系12 Factor Agent 体系无状态性生命周期与可处置性配置与可变性外置可观测性与错误可见性依赖与工具显式化控制流与阶段治理自含入口与触达规模化与单元粒度人为交互边界环境一致性基础与运行时配置与交付交互与运维辅助工具集

组简介

本组 12 个节点,属于 传统软件工程 域,类型为 来源组,覆盖阶段 基础 / 进阶。

组节点:代码库、依赖、配置、后端服务、构建·发布·运行、进程、端口绑定、并发、可处置性、开发/线上等价、日志、管理进程

节点目录 (12 个)

节点 ID名称来源阶段简介
app-codebase代码库App基础十二要素应用总是被版本控制系统(VCS)跟踪,例如 Git、Mercurial 或 Subversion;修订跟踪数据库的一份副本称为代码仓库,常简写为 code repo 或 repo。
app-deps依赖App基础多数编程语言提供打包系统分发支持库,如 Perl 的 CPAN、Ruby 的 Rubygems;经打包系统安装的库可装到系统全局(site packages)或限定到应用目录(vendoring/bundling)。
app-config配置App基础应用的 config 是随 deploy 变化的一切(staging、生产、开发者环境等),包括数据库、Memcached 等 backing service 的资源句柄。
app-backing后端服务App基础backing service 是应用在正常运行过程中经网络消费的任何服务,示例包括数据存储(MySQL、CouchDB)、消息/队列系统(RabbitMQ、Beanstalkd)。
app-build-run构建·发布·运行App进阶codebase 经三阶段转变为非开发 deploy:build 阶段把代码仓库转换为可执行 bundle,按部署进程指定的提交版本拉取 vendored 依赖并编译二进制与资源。
app-processes进程App基础应用在运行环境中作为一个或多个进程执行;最简情形是独立脚本 + 本地笔记本运行时 + 命令行启动,如 python my_script.py。
app-port端口绑定App基础web 应用有时在 webserver 容器内执行:PHP 应用作为 Apache HTTPD 内的模块运行,Java 应用跑在 Tomcat 内。
app-concurrency并发App进阶任何计算机程序一经运行即由一个或多个进程表示;web 应用进程执行形态多样:PHP 进程作为 Apache 子进程按需启动。
app-disposability可处置性App进阶十二要素应用的进程是可处置(disposable)的:可随时启动或停止,这促成快速弹性扩展、代码/config 变更的快速部署以及生产 deploy 的健壮性。
app-dev-prod开发/线上等价App进阶历史上开发(开发者对本地 deploy 实时编辑)与生产(最终用户访问的运行 deploy)之间存在三大差距:时间、人员、工具。
app-logs日志App进阶日志提供运行中应用行为的可见性;服务器环境通常写入磁盘文件(logfile),但 logfile 只是众多输出格式之一。
app-admin管理进程App进阶process formation 是应用运行时做常规业务(如处理 web 请求)的进程数组;开发者还常想对应用做一次性管理/维护任务。

学习路径提示

本组内存在 8 条前置依赖边(prerequisite),推荐先掌握前置知识点,再进入依赖它的节点。

推荐阅读顺序(拓扑序)

出组依赖(本组成员 → 组外节点)