Profile 概述
Profile 有几种意思:
- 人物简介
- 档案、个人资料
- 形象 / 公众形象
- 剖面图 / 侧视角图
在软件开发中,profile 一般指代不同的配置文件组(有档案、资料的含义),或者个人资料。
在 Spring Boot 中,profile 指的是一种根据不同环境或场景加载不同配置文件的机制,用于划分和管理应用程序的配置。
通过 Profile,可以实现环境隔离和灵活配置。
Profile 划分的必要性
Spring Boot 的一大优势,就是基于大量生产经验设计了丰富的管理机制,如服务自启动、Profile、外置配置、状态探针、日志分割等。Profile 就是其中一个重要机制。
如果没有 profile 机制,就必然需要其他工具或方法来管理不同环境的配置,比如服务监听端口、数据库连接、日志轮转等。如果处理不好,这些参数很可能会脱离技术状态管理。
有了这个机制,再结合配置文件外部化加载,就能很好地管理配置文件,避免冲突。
设计案例
有如下不同的划分角度,从每种角度中组合可以形成不同的 profile:
- 环境或阶段:开发(dev)、集成测试或系统测试(stg、test)、生产或发布(production、release)
- 开发阶段细分:
- base:最基础的 profile,用于极简启动和最小依赖加载;
- 个人:放在 test 目录下,用于与本机环境直接相关的测试环境;
- 测试 x:为特定测试(自动化)目的而组织的 profile,同样放在 test 目录下,或直接写到测试代码中。
- 集成测试阶段:
- ci:为持续集成构建或测试自动化环境设计的 profile;
- uat:为系统测试或验收测试组织的 profile;
- 性能:为性能测试设计的 profile;
- 公共:常规公共测试、演示环境使用。
- 生产阶段:
- 灰度、AB 测试;
- 云服务部署或私有环境部署;
- 不同云环境或不同地理位置;
- 单机或容器化;
- 主节点或备用节点。