Back to Software Engineering

See Also Dev_Process_Practice_2014CMDB

应用生命周期管理(ALM)

Application lifecycle management (ALM) is the product lifecycle management (governance, development, and maintenance) of computer programs. It encompasses requirements management, software architecture, computer programming, software testing, software maintenance, change management, continuous integration, project management, and release management.

统计数据表明,研发阶段在整个ALM的占比一般在20%~30%,线上运行阶段是大头儿。因此开发团队要有运维意识,借助ALM过程模型,更好的保证线上服务质量。

1. ALM 过程介绍

1.1. 创建阶段

在此阶段确定应用的基础信息和与基础服务的关系。在应用创建之初,就要将应用与各类基础服务的生命周期进行挂钩。

1.2. 研发阶段

在此阶段实现和验证应用的业务逻辑。

针对业务逻辑层面的场景就是开发代码和质量保证,但是这个过程中就会涉及到代码的提交合并、编译打包以及在不同环境下的发布部署过程。同时,开发和测试在不同的环境下进行各种类型的测试,比如单元测试、集成测试以及系统测试等等,这整个过程就是我们常说的持续集成。

1.3. 上线阶段

属于过度阶段,把应用软件包发布到申请的线上服务器上。这个动作在下面的运行阶段也会持续迭代。

1.4. 运行阶段

这是 ALM 中最重要、最核心的阶段。

除了基本的运维监控和应用升级外,还需要考虑线上稳定性保障场景,例如流量激增时的限流降级、推广前的容量规划、异常时的容灾、服务层面的熔断等。

1.5. 销毁阶段

应用下线。

2. 结合ALM的应用开发过程管理

应用的开发过程与 ALM 是基本一致的,只是在应用创建阶段前又增加了需求和设计两个阶段

2.1. 需求阶段

根据给定的 UI 及交互逻辑,与需求方就网站最终形态达成一致。

2.2. 设计阶段

2.3. 服务创建

在此阶段确定应用的基础信息和与基础服务的关系。在应用创建之初,就要将应用与各类基础服务的生命周期进行挂钩。

具体工作参考 ALM 1. 创建阶段

2.3.1. 应用的配置信息

应用信息表请参考附录:相关模板之 **1. 应用配置信息**

2.3.2. 与应用相关的基础服务

根据业务场景和技术方案,确定需要使用的基础服务并进行申请

- DNS - ELB - Server - DB

2.3.3. 应用配置与资源配置的统一管理

资源可以用IP地址做为统一标识,维护应用+使用资源的一份完整信息表,比如 alm-web-xxx.md

App-Web1
├── 资源列表
│   ├── DNS xxx.xxx.xxx - 11.22.33.44
│   ├── ELB 11.22.33.44
│   ├── Nginx 11.22.33.45/46
│   ├── VPS 11.22.33.45/46
│   └── DB 11.22.30.1/2
└── 应用配置信息(Based Web V3: acm-web-v3.md)
    ├── 元数据
    ├── 代码属性
    ├── 部署模式
    ├── 目录信息
    ├── 运行脚本
    └── 运行时配置

...

2.4. 研发阶段

2.4.1. 单元测试

单元测试编写,覆盖主要业务逻辑

2.4.2. 集成测试

本地集成验收

- 前后端集成效果验收

2.4.3. 系统测试

测试环境验收

2.5. 上线阶段

部署生产环境验收

2.6. 运行阶段

3. 附录:相关模板

3.1. 应用配置信息

写好基本的应用配置信息后,这类应用指明自己引用这个配置信息就可以了。比如 v3版的网站架构,写好 acm-web-v3.md, 破千军的配置信息完全基于v3,就可以直接写成到这个的引用就可以了

3.1.1. 应用元数据

3.1.2. 应用代码属性

3.1.3. 应用部署模式

3.1.4. 应用目录信息

3.1.5. 应用运行脚本

3.1.6. 运行时参数配置

3.2. 资源配置信息

应用使用的服务的资源配置信息,资源用IP地址进行标识

4. Reference


CategoryProcess

MainWiki: Application_Lifecycle_Management (last edited 2018-06-26 08:09:28 by twotwo)