核心思想
1、使用注解声明实现自动化环境, 最大程度减少新加入项目成员的学习成本。
2、与底层操作系统之间建立清晰的约定,在执行环境之间提供最大的可移植性。
3、适合部署在现代云平台上,无需提供服务器和系统管理工具。
4、最大程度减少开发环境和生产环境之间的区别,通过持续部署获得最大的灵活性。
5、可以在不对工具、架构或开发实践带来重大变动的前提下,进行水平扩展。
十二要素
1、代码库, 一份版本控制下的基准代码库,多分部署。
2、依赖, 显示声明和隔离依赖关系。
3、配置,在环境中存储配置。
4、后端服务,把后端服务当做附加资源。
5、构建、发布、运行 严格分立构建和运行阶段。
6、进程 将应用程序作为一个或多个无状态进行执行。
7、端口绑定 通过端口绑定暴露服务
8、并发 通过进程模型进行扩展
9、 易处理 通过快速启动和正常关机来最大程度地提供健壮性。
10、开发、生产环境一致, 尽可能保持开发、预发布和生成环境的配置一致。
11、日志 将日志视为事件流
12、管理进程 将管理任务作为一次性进程运行