[关闭]
@Chiang 2020-04-12T12:20:33.000000Z 字数 973 阅读 519

The Twelve-Factor App

K8S 2020-04


简介

如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor 为构建如下的 SaaS 应用提供了方法论:

  • 使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目。
  • 和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性。
  • 适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源。
  • 将开发环境和生产环境的差异降至最低,并使用持续交付实施敏捷开发。
  • 可以在工具、架构和开发流程不发生明显变化的前提下实现扩展。

这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。

背景

本文的贡献者参与过数以百计的应用程序的开发和部署,并通过 Heroku 平台间接见证了数十万应用程序的开发,运作以及扩展的过程。

本文综合了我们关于 SaaS 应用几乎所有的经验和智慧,是开发此类应用的理想实践标准,并特别关注于应用程序如何保持良性成长,开发者之间如何进行有效的代码协作,以及如何 避免软件污染

我们的初衷是分享在现代软件开发过程中发现的一些系统性问题,并加深对这些问题的认识。我们提供了讨论这些问题时所需的共享词汇,同时使用相关术语给出一套针对这些问题的广义解决方案。本文格式的灵感来自于 Martin Fowler 的书籍: Patterns of Enterprise Application ArchitectureRefactoring

读者应该是哪些人?

任何 SaaS 应用的开发人员。部署和管理此类应用的运维工程师。

12-factors

基准代码

一份基准代码,多份部署

依赖

显式声明依赖关系

配置

在环境中存储配置

后端服务

把后端服务当作附加资源

构建,发布,运行

严格分离构建和运行

进程

以一个或多个无状态进程运行应用

端口绑定

通过端口绑定提供服务

并发

通过进程模型进行扩展

易处理

快速启动和优雅终止可最大化健壮性

开发环境与线上环境等价

尽可能的保持开发,预发布,线上环境相同

日志

把日志当作事件流

管理进程

后台管理任务当作一次性进程运行


参考资料:
The Twelve-Factor App

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注