「北京环球度假区」项目沉淀 - 软件生命周期管理
Contents
「北京环球度假区」项目是我第一次接触到非常正规的开发交付流程的项目,本次完成的软件开发虽然是整个园区开发的IT系统中比较基础的模块,但是整个项目开发、交付的流程还是值得去沉淀一下。
0. 项目背景
在园区项目开发的过程中,发现有些公共的功能可以抽离出来,做成单独的模块来对各个服务进行支持。所以本次做的项目中主要包含以下功能:
- QR生命周期管理
- 加解密服务
- 短链生命周期管理
因为整个项目有明确的DL,明确的需求,所以要对整个功能开发和进行测试需要完成排期工作。每一个阶段要交付哪些东西,这一块没有具体的经验可以参考。
1. 个人职责
在这个项目中,承担了开发负责人的角色,主要的工作如下:
- 需求、设计、测试、上线等各项工作的评审
- 和甲方沟通系统架构设计,重点问题的解决方案
- 系统的编码,文档产出
- CR工作,上线工作
2. 项目收获
与其说是收获,应该是教训更加的确切。我本质上对整个项目进行把控,无论是研发进度还是产出质量。有几次因为工作上的不到位造成风险。
2.1.设计要做到极致,所有问题都要形成闭环
整个项目花费最长的时间就是在设计上,因为项目是作为整个大系统中基础功能的SaaS系统,很多系统对我的项目有依赖,所以前期定好接口这些是迫切的,也因为是供给其他系统调用,所以在api文档发出去之后,基本上就没有修改的可能,大项目就是这样,不然改来改去最后出问题是大概率事件,这也是现在很多项目越做越烂的原因。
举几个项目中的列子:
- 1.关于二维码容量的承载
因为二维码识别的本质上就是解析图片,如果二维码中包含的信息过去,生成的二维码太密,最后设备识别不了或者说识别时间太长那么就严重影响了体验。所以我们前期生成不同密度的二维码图片供业务方去试验,最终得到一个合适的容量承载值。其实在前期没有对码内容的大小做限制,导致码发出去了,但是不能用的情况发生。最终为了对我项目进行兜底,我去查阅了大量关于QR的实现原理之内的文章,这在往常的项目中是不常见的。
- 2.高并发访问导致服务瘫痪
因为是TO C的项目,所以要保证不能出生产事故。我们做的一个短链服务,没有
- 按照流程和规范办事
1. 环境划分
对于To C的项目而言,环境的划分尤为重要。我们项目划分了以下四套环境:
环境名称 | 作用 |
---|---|
DEV | 用户开发内部自测,联调 |
QA | 用于交付给测试做功能做功能测试的环境 |
SIT | 集成测试完成,用于给第三方联调测试的环境 |
UAT | 用户验收测试,和生产环境只是一些性能和访问能力上区别 |
PROD | 生产环境,真正面客的项目 |
每个环境的作用和影响范围不通,每一次项目的功能迭代都要从DEV
环境走到PROD
环境,在每一个环境完成自己既有的任务。
1.1. DEV环境
在DEV环境下,项目的内部开发开发调试都在这个环境上,这个环境有以下特点:
- 可以连接开发机,迅速将请求打到开发的开发机上,方便本地DEBUG
- 不要对外界进行网络暴露,只需要在内网能够完成服务调用即可
- 发布不受外界控制,完全由开发自己控制
1.2. QA环境
QA环境是开发在本地自测完成后,进行内部的小分支迭代到QA环境交付测试人员进行功能性的测试。QA环境的发布有以下的特点:
- 分支管理好,每一个提测的分支和对应的修改项要完整的写到提测的记录中
- 出现bug,不可以快速去迭代修复,而是应该记录下bug在下一个版本中去迭代修复
- 开发人员对于数据存储类中间件(数据库,缓存…)只有只读权限,没有修改权限,防止因为对于数据的修正导致bug没有暴露出来
- 发布只受内部控制,只要内部团队约定好,就可以对该环境进行发布
- 不需要对外部进行网络暴露,只要能够在内网完成服务调用即可
- 服务单节点即可满足需求
1.3. SIT环境
SIT
涉及到和第三方系统的功能联调,是对通过QA
环境测试的代码提供给第三方使用。SIT环境的发布有以下特点:
- 出现bug,记录下来,按照bug级别来决定是hotfix还是下一次版本迭代中修复
- 开发人员对于数据存储类中间件(数据库,缓存…)只有只读权限,没有修改权限,防止因为对于数据的修正导致bug没有暴露出来
- 发布受内外部控制,每一次发布需要告知对接方,服务宕机时间应该控制在1小时之内
- 需要对外部进行网络暴露,所有的网络请求都通过网关完成
- 服务单节点即可满足需求
1.4. UAT环境
经过SIT
测试之后,代码发布到UAT
环境中,UAT
环境用来体验类似生产环境的操作,他和生产环境之间的差别就是性能上的差别。UAT环境有如下的特点:
- 出现bug,记录下来,按照bug级别来决定是hotfix还是下一次版本迭代中修复
- 开发人员对于数据存储类中间件(数据库,缓存…)只有只读权限,没有修改权限,防止因为对于数据的修正导致bug没有暴露出来
- 发布严格收到控制,每一次发布需要写上线计划(包含上线步骤,回滚方案)
- 需要对外部进行网络暴露,所有的网络请求都通过网关完成
- 服务至少2个节点,验证架构的合理性
1.5. PROD环境
PROD
环境是直接面客的环境,整个环境要保证高可用,高性能,可伸缩。所以对于这生产环境的原则是能不动就不动,动之前要做好相应的备份工作。
2. 发版计划
每个项目的需求不同,所以对于软件的发版计划要求不同。软件从正式开始到正式定版应该主要有以下几个阶段:
- pre-alpha
- alpha
- beta
- Release Candidate
- GA
- Stable
参考
Author
LastMod 2021-08-30