结合Spring Boot 对云原生 12-factors 最佳实践理解
1. 概述
12-factors是一套构建云原生应用程序的指导原则。对于云原生应用,指的是一个跨环境可移植、易于更新、可伸缩到足以利用云的弹性能力的应用程序。
12-factors包含了管理配置数据、抽象库依赖关系和后台服务、日志流和管理的最佳实践。
目前的大部分开发框架在设计上已经遵循了其中的许多原则,而在容器内运行应用程序则支持其中的一些原则
Spring Boot是构建微服务应用程序的主流框架。在本文中,我们将介绍Spring Boot应用框架如何遵循这12个因素,以及提供哪些服务
2. 12-factors 目标
12-factors主要目标是应用的可移植性。贯穿这12条原则的一个共同目标是使应用程序可移植,以满足云平台上的动态环境需求。12-factors文章中宣列出的12因素的目标如下:
- 一份基准代码(Codebase),多份部署(deploy)
- 显式声明依赖关系( dependency )
- 在环境中存储配置
- 把后端服务(backing services)当作附加资源
- 严格分离构建和运行
- 以一个或多个无状态进程运行应用
- 通过端口绑定(Port binding)来提供服务
- 通过进程模型进行扩展
- 快速启动和优雅终止可最大化健壮性
- 尽可能的保持开发,预发布,线上环境相同
- 把日志当作事件流
- 后台管理任务当作一次性进程运行
我们将通过Spring Boot框架来了解这些原则的实际应用
3. 代码库-在版本控制下的单一代码库,适用于所有环境
使用源代码管理器来跟踪代码版本,允许部署多次
这有助于为单个个体或组建立应用程序的清晰所有权。应用程序有一个单一的代码库,它随着新特性、缺陷修复和对现有特性的升级而发展。应用程序所有者负责在应用程序的生命周期中构建不同的版本并部署到多个环境,如测试、阶段和生产环境。
这个原则提倡使用一个可以构建和部署到多个环境中的代码基础。每个环境都有特定的资源配置,如数据库、配置数据和API url。为了实现这一点,我们需要将所有环境依赖项分离为可以在应用程序的构建和运行阶段指定的形式。
遵循这一原则,使用Git来管理Spring Boot源代码。代码被编译和打包,然后部署到一个或多个环境中。
在运