从需求到上线的全流程 | 青训营笔记

189 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记。

开发一个产品的流程,有瀑布模型、敏捷开发、SAFe管理框架等几种。

传统的瀑布模型严格遵守“需求 -> 开发 -> 测试 -> 发布 -> 运维”的流程,以流程为本,是比较理想化的模型,对可靠性要求比较严格,目前一般应用于银行的支付领域等要求可靠性高的场景。敏捷开发适合小团队快速迭代,方便开发团队及时与用户沟通,SAFe管理框架是互联网大厂普遍应用的开发流程,要求精益产品开发、敏捷软件开发、系统思考,一个团队就相当于一个特种部队;软件上线迅速,开发的流程被形象地称为“敏捷发布火车”。

开发流程一般包括需求、开发、测试、发布、运维等。

需求阶段需要合理地砍掉不合理的需求,可以应用MVP(最小化可行产品)概念。就像不要一开始只给客户轮胎,最后才交付汽车;而是一开始可以给客户滑板、自行车,最后交付汽车,过程中尽量以较小的花费保障客户的正常使用,然后逐渐完善系统。

开发阶段则需要关注业界前沿进展,以多快好省地完成开发流程,比如采用容器开发比传统虚拟机服务器,环境更稳定,配置更方便;采用微服务开发比传统单体开发,方便了不同模块独立扩容缩容。开发时,团队需要采用合理的分支策略和版本控制系统,保证团队之间高效率合作开发,同时遇到出问题的代码可以及时回退。最后,开发时还要注意代码规范,做好自测,写好代码文档。有时候,遵守代码规范比实现功能更重要。

虽说测试阶段负责测试,最好在开发阶段就做好单元测试,对自己的代码负责,而不是把bug留到测试。越早发现bug,修复的成本就越低。实际测试至少有功能环境、集成环境、回归环境三个环境,充分测试代码上线的表现、代码与其他人开发的功能之间协作可能出现的问题、新功能对老功能的潜在影响等。

发布阶段有蛮力发布、金丝雀发布、滚动发布、蓝绿发布、红黑发布等多种发布模式。其中滚动发布可以做到让用户平滑切换,是常用的发布方式。

最后,开发工程师们会在微服务中添加埋点,采集Metrics、Loggin、分布式Trace等多种数据,以在发布后的运维阶段实现对超大规模微服务体系的监控。