《前端架构从入门到微前端》 Chapter2. 项目中技术架构实施

174 阅读6分钟

无论短期还是长期项目,它们都包含相似的启动和实施周期:

三个时期工作内容如下:

  1. 技术准备期: 开始与架构实施相关的工作,如搭建脚手架、测试环境、部署等
  2. 业务回补期: 填补第一个时期造成的业务进度落后问题,以技术实践业务来证明技术的价值
  3. 成长优化期:持续对项目的技术和业务进行优化、以实现开发及业务人员诉求

在项目的不同时期,考虑因素不一样,会出现一定程度的偏差,关注这些偏差的,则是技术负责人,为此将分析这三个时期的四个层级架构间的关系

1.技术负责人与架构关系

技术负责人是项目架构实施的的保证,是施工队的队长,队长的日常需要做的事情有:

  1. 适当平衡业进度和技术的方案
  2. 解决重要、复杂的技术问题
  3. 帮助团队的其他成员成长
  4. 从全局考虑整个额项目的技术和业务问题

项目的技术负责人不管是从一开始就负责架构的设计,还是后面接手该项目的架构负责人,都需要对架构进行优化负责,保证项目正常实施。 我们设计软件架构时,考虑的不仅是架构技术方案,还要包括以下内容:

  1. 技术方案的设计
  2. 技术方案的落地
  3. 保证技术方案的实施
  4. 确保技术方案的上线
  5. 关注技术方案的后续维护
2.技术准备期: 探索技术架构

这个阶段是技术第一,业务第二,在这个阶段我们应该关注:

  1. 架构设计:即设计系统的架构
  2. 概念设计:验证先前设计的架构是否可行
  3. 迭代0:搭建系统的基础设施

这三个阶段都是强技术性的,需要花费大量时间

架构设计

详见第一章

架构原型证明

架构设计之后,从设计证明它的可行性,将设计的前端技术和架构思想进行组合,如果不能正常结合,则需要考虑另外方式。

迭代0:搭建完整工具

完成概念验证之后,就开始迭代0,以完成项目配套的技术工作 当我们开始一个项目的时候,进入的迭代版本都为1,那在项目开始之前进行准备工作,使用的概念证明则称为迭代0,我们需要做的基本事项是:

  1. 创建应用脚手架
  2. 创建项目代码库
  3. 搭建持续集成、持续交付
  4. 进行各环境账号准备、开发人员权限等配置
  5. 配置配套的工具,如代码审查、自动化原生应用的上传
  6. 更颗粒度的技术选型
  7. 一些迭代0 的项目规范、技术培训
  8. 一些代码的检测配置。如eslint

这个阶段结束的标识是:项目成员能正常的进行项目开发,并且没有大的区别

体现规范和原则

项目中肯定会有经验不丰富的员工,可以将代码进行整理,形成一个参考,让新成员或经验不丰富的同学进行照猫画虎的编写业务代码

3.业务回补期,应对第一次deadline

当团队能正常的开发业务逻辑的时候,可能存在一定的进度落后问题,于是在优先级上就会变成业务第一,技术第二 在上一个阶段,花费了大量时间在概念上,所以需要再这个阶段进行弥偿还,在项目开发中,也会面临人员技术能力不足,或者开发人员人数规模扩大,管理混乱的问题。当这些问题解决后,关注点就会放在业务上。

3.1追补业务

虽然技术是实现业务的方式,但是业务无法存活不下去,那技术就无法证明其价值 如果因为概念验证导致一定的进度落后,那么在合适的时候,我们还会临时的后置部分技术需求,用于按时完成业务,比如在必要的时候,单元测试、UI测试都可以适当减少

3.2实践测试策略

在编写业务代码过程中,还要不断面临测试上的压力, 一般情况下,测试人员是在项目进行开发一段时间后才开始介入测试,前后端的联调可能还没有完全准备好,无法进行完整的测试,另一方面,可能测试的业务内容比较少,部分功能无法完整的串联起来,只有在项目上线前,进行一个相关的、完整的回归测试

对于一个前后端分离的项目,平时开发中已经做了大量的联调,基本能符合上线,只是我们设计架构时可能会尚未考虑的情况如:

  1. 没有进行集成第三方测试,无法验证业务的完整性
  2. 没有准备好一个稳定的测试环境,提供给测试人员进行测试
  3. 没有较为真实的数据,验证一些极端的条件
  4. .......
3.3 上线准备

购买、申请好一些列相关事宜后,如:服务器,相应资源,审批流程等等 准备好相关的Node线上调试环境,有计划的使用Docker,以及相关的devOps技能

3.4 提升团队能力

初级程序员需要对他进行: 结对,文档,练习,培训等方式,在日常开发中需要对他进行:代码规范,代码原则培训。进行代码重构时需要对他进行: 代码检查以及质量验收,并在开发环境中进行项目测试,没问题后才能上线。

技术分享会一般时间为30~60分钟,需要结合实践示列

一些面向新人的知识传递方式:

  1. navigator-driver(领航员-驾驶员) : navigator关注如何实现功能,driver负责实现,并且由navigator告诉如何实现代码
  2. ping-pong模式:常见的TDD模式,由A编写某个功能,B实现测试,随后调反过来,由B实现某个功能,B负责测试
  3. 键鼠模式:编程时,一方控制编程,一方控制键盘,这种能帮新人快熟知道快捷键

最常见的还是第一种

3.4 偿还技术债务

在项目准备期,我们在构建技术基础的时候花费大量时间,在业务回补期,我们支持业务花费了大量时间,在两个时期我们都采取有了一些妥协的方法,目的是为了按期交付,所以会出现代码质量、测试覆盖率、依赖等问题,这些问题不是一两天造成的,需要制定一个长期的时间进行优化和修复,代码中充满了各种code small ,那么需要对代码进行codeview的方式不断提高团队成员水平