## 项目生命周期

---

项目生命周期大致可以分为：初创阶段（协调）->普通成长阶段（质量）->实时监控阶段（预警）->高速发展阶段（高速扩张）->成熟运行阶段（稳定）

下面会分别来分析这几个阶段可能遇到的问题，希望帮助到正在创业的或者中小项目团队提前避免，因为团队初期一定会遇到这些问题，成熟的团队都已经历过了这个阵痛期。


- 初创阶段：项目初创阶段，人员刚刚组成，团队属于磨合期，初期沟通低效，时间成本高。这个阶段作为技术团队首先要提高对外和对内的协作效率，对外主要沟通对象是产品和测试，对内就是技术团队内部合作问题。因为每个人考虑问题的角度不一样，这个阶段很有可能花费大量时间沟通，这个阶段各个团队的leader一定要精选，这样统一的入口和出口对接人会解决很多问题。

- 普通成长阶段：项目/系统开始迭代开发，业务正常发展，线上有商户/用户使用，但是偶发发现有商户或用户投诉系统产品功能不完善，开发人员开发的功能有bug，其实这个时候进入了质量问题暴漏阶段，问题主要体现在产品设计有漏掉、开发代码质量不高、测试场景不充分等，所以这个时候建议有一定项目管理流程和机制，并不是一味地提倡快速迭代，因为步子迈得太大一定会容易摔跤。同时，另外一个问题发生了，如果每次都是用户先发现问题，这个场景很尴尬，并且会导致用户流失，所以系统迫切地需要一个实时监控系统，所有的问题早于用户发现，早发现早解决。

- 实时监控阶段：如果系统没有监控和裸奔没有什么区别，就好比你驾驶着一辆没有仪表盘的车辆，每天都提心吊胆，担心系统出问题后用户投诉。实时监控系统是所有项目人员的眼睛，有了实时监控相当于给系统撒了一张网，让系统所有的点都是可控的、预期的，给人安全感。实时监控主要监控分为业务监控和非业务监控


- 高速发展阶段：随着业务的前期的发展和积累，监控系统也能帮助我们看住系统，这时候业务发展稳定，可能就悄悄来到了高速发展阶段。业务量骤增导致系统并发响应慢、数据库数据量增长过快、单点故障等现象，这个时候其实遇到的问题是性能问题。对于一个初创团队一开始一定是业务核心，不可能过度设计性能问题，好的架构也不是一次设计出来的，一定是演变过来的。这个阶段最需要解决的就是高可用问题，如何建设高可用系统有很多这方面的书籍。


- 成熟运行阶段：经历了以上阶段之后，就是成熟运行阶段了。从系统来说，成熟运行阶段只关心一个问题就是线上偶发事故的响应机制。任务系统都一定会发生事故，像最近的发生的GitLab和AWS事件，事故发生了不可怕，如何快速恢复是最重要。生产事故响应机制是如果事故发生了第一时间不是去解决问题、定位问题，而是如何快速恢复交易、减少影响范围、通知商户/用户。为什么这样说？因为技术人员的特点是发生事故后不自然地就去想分析问题和定位问题，这个思路是不对的，增加了事故影响时间。成熟运行阶段，从项目来说，这个时候可能开发任务不那么紧急了，这个时候还需要注重如何提高团队的积极性、如何做好技术分享、如何归纳总结历史问题和知识等。



