The Twelve Factors App 应用程序十二要点评注

应用程序十二要点是Heroku 所提出的一种用于构建软件即服务应用程序的方法学,参见 https://12factor.net, 试着翻译并解读

  • 使用标准化流程自动配置,从而使新加入项目的开发者的时间和学习成本最小化;
  • 与底层操作系统之间保持简洁的界限和契约, 在执行环境之间提供最大的可移植性;
  • 适合在现代云平台上部署,避免对服务器和系统管理的额外需求;
  • 最小化开发和生产环境之间的分歧,实现持续部署以实现最大灵活性;
  • 无需对工具,架构或开发实践进行重大更改就可以实现纵身和横向扩展。

1. Codebase 代码库

One codebase tracked in revision control, many deploys

用一个代码库进行版本控制和应用程序的多次部署, 代码, 配置, 初始化数据都应该纳入版本管理,在统一的代码库中为代码,配置,数据, 测试和部署脚本都建立独立的项目和模块。

不管是测试环境还是生产环境,都可以使用同一份代码进行发布。

2. Dependencies 依赖

Explicitly declare and isolate dependencies

显式声明和隔离依赖关系, 通过maven , gradle, scons 等构建工具明确声明所需要的够用的依赖项和版本号, 避免版本冲突和循环依赖, 象Java中臭名昭著的依赖黑洞就曾浪费了程序员大量的时间, SpringBoot 的 starter 依赖包就可以大大简化依赖配置

3. Config 配置

Store config in the environment

配置和代码都是应用程序不可或缺的组成部分, 一般存储配置在环境变量中或者与环境相关的配置文件,配置服务中, 比如 application-dev.yml, application-lab.yml, application-bts.yml, application-prod.yml, 这些配置文件不要和代码放在一起, 建议放在不同的代码仓库中, 这里建议把应用的配置存储于环境变量中。

4. Backing services 后端服务

Treat backing services as attached resources

将后端服务作为附加的资源, 不管你的后端数据库是 Oracle, MySQL 还是 PostgreSQL, 消息队列是ActiveMQ, RabbitMQ 或是Kafaka , 你的上层应用程序无需做特殊处理, 底层适配也很容易地切换不同的支持服务资源

5. Build, release, run 构建,发布和运行

Strictly separate build and run stages

严格区分构建, 发布和运行阶段, 开发人员的每次改动都会触发构建, 但是发布是要经过严格的验收测试的, 运行时的代码不允许任何随意修改,遵循构建发布和运行的流程

6. Processes 进程

Execute the app as one or more stateless processes

以一个或多个无状态进程来运行应用程序, 状态应该保存在共享的缓存或数据库中,这样微服务可以任意启停,轻松升级和替换, 也利于水平扩展

7. Port binding 端口绑定

Export services via port binding

通过端口绑定导出服务, 也就是通过暴露独立的端口来提供服务, 比如HTTP的80, HTTS的443, SIP的5060, 不需要依赖于容器

8. Concurrency 并发

Scale out via the process model
通过进程模型横向扩展

9. Disposability 一次性

Maximize robustness with fast startup and graceful shutdown
通过快速启动和优雅退出来最大限度地提高健壮性

10. Dev/prod parity 相似的开发和产品环境

Keep development, staging, and production as similar as possible
保持开发,测试和产品环境尽可能相似

11. Logs 日志

Treat logs as event streams
将日志视为事件流

12. Admin processes 管理过程

Run admin/management tasks as one-off processes
将管理/管理任务作为一次性进程运行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容