前言
软件组织需要考虑技术架构、组织架构(研发流程)和组织文化三个方面。
软件研发流程
SaaS的十二因子
- 基准代码。一份基准代码,多份部署。
- 依赖。显式声明依赖关系。隐式依赖可能会导致运行态的失败。
- 配置。代码和配置分离,在环境中存储配置。即不论在任何环境中运行,代码是一致的。
- 后端服务。除了代码之外,其余依赖服务都是后端服务;即:本地服务、第三方服务不作区别对待,强调服务而不是中间件,要有独立的团队去负责后端服务的整个生命周期;后端服务会自己维护、自己进化,使用者只关注调用接口和服务的可用性,无需关注细节。
- 构建、发布、运行。严格分离构建和运行。代码只允许在构建环境修改,禁止在运行时环境修改代码。
- 进程。以一个或多个无状态的进程运行应用。强调无状态进程,如果存在状态,则需要将状态外置到后端服务中(如数据库或缓存)。
- 端口绑定。
- 并发。通过进程模型进行扩展。进程方式扩展比线程方式扩展性更好,架构更简单,隔离性更好。
- 易处理。快速启动和优雅终止可最大化健壮性。出现故障时,能够快速回退是很重要的。
- 开发环境与线上环境等价。尽可能保持开发、预发布、线上环境相同。
- 日志。把日志当做事件流。统一日志存储、提供调用链分析能力,以便快速定位和排除错误。
- 管理进程。把后台管理任务当做一次性进程运行。
DevOps模型的四要素
文化、技术、流程和人。
自动化测试
- 提交即意味着可测试。在代码提交前,应更新所有服务端的代码进行合并,运行测试,没有问题再提交代码。