美文网首页
工作的一点点总结

工作的一点点总结

作者: 若琳丶 | 来源:发表于2021-03-24 23:37 被阅读0次

    回顾一年半之前,我还在作为一个项目的推进者,为整个项目的进度和完善而头疼。当时遇到的问题非常棘手。如今我又面临和完成了一个完整大功能的开发,完成度和问题解决上都有了一些进步。

    一、一个完整的功能开发都有哪些阶段

    1.1 需求评审

    需求评审是整个流程的源头,是由产品同学将需求以文档的形式产出,然后拉着RD同学一起进行对需求进行评审。
    在评审过程中,可以了解到需求的背景和作用,换句话说就是要做这个功能的意义。
    当然还有很多问题需要搞明白:
    1、这个功能在整个大的业务链路中有什么样的作用
    2、它涉及到的交互上下游都有哪些,交互方式是同步还是异步
    3、产品方案或交互方案是否合理
    4、上游要求调用的耗时大约是多少,并发可能会是多少
    5、文档中的规则或者描述是否清晰
    6、异常的兜底方案是什么

    我的一个习惯是:

    要用大脑尽可能的在数据流的维度上,串一遍完整的业务流程。看看需求文档中是否缺失了哪些必要字段,可能会遇到哪些大卡点和小卡点。

    1.2 技术评审

    在进行完需求评审之后,就需要对功能进行技术方案的拟定。
    其中就包含:
    1、交互方式决定了通信方式
    2、接口文档的产出,包括参数和返回值的数据结构等
    3、数据库表的设计
    4、类图设计
    5、是否需要缓存
    6、是否使用多线程的方式提高处理效率
    7、是否使用分布式锁
    8、特殊情况是否考虑清楚
    9、是否需要兜底定时任务
    10、是否需要分布式配置
    11、是否需要限流和熔断
    12、是否要加一个最外层开关

    拉着qa进行技术评审,评审需要考虑的问题:
    1、数据库设计是否合理,索引是否合理
    2、类的设计是否合理
    3、是否会发生死锁
    不同公司的QA具备的能力不同,有的是会开发,能读代码;有的是只会黑盒测试,不关心内部实现,更侧重业务流程的验证和交互是否通顺。

    1.3 开发

    开发过程就是按照技术方案进行代码实现,当然,我们有单测覆盖率的要求,所以单测也可以算到开发过程中。
    开发过程中也会遇到一些方案的考量:
    1、是否需要用事务
    2、分布式锁超时时间
    3、是否存在主从库延迟,延迟的话是否加事务,或者强制走主库

    1.4 自测

    1、交互自测
    2、各种逻辑分支测试,包括正向流程,异常流程,边界情况等
    3、并发逻辑测试,主要是测试是否能安全上锁,上了锁以后是否能安全读写库等
    4、压测

    我的习惯:

    尽量在每一个读写操作节点出摸你程序中断的情况,然后观察表中数据是否符合预期,比如:事务是否能正常回滚,兜底的定时任务是否能捞起异常流程等。

    1.5 CR

    一般在提交分支合并申请时,如果需求内容不多的话,tl 会自己 code review。如果是个比较大的功能,一般都是单独拉会,组内全员进行 CR。
    1、类的设计是否合理
    2、代码是否整洁,注释是否适中,是否存在潜在的NPE
    3、其他可能未考虑到的问题等

    1.6 联调

    为了可以并行开发,服务提供方是需要给调用方提供mock调用的,无论是实时接口还是异步消息,都提供一个mock响应。先把两方的通信打通,这样联调就只剩下逻辑联调了。
    当然,除了要在测试环境正常跑起来之外,最好还是记录一下在测试环境需要配置的内容和步骤,比如:
    1、域名的配置
    2、服务鉴权的添加
    3、分布式配置的添加
    4、数据库表的创建
    5、公司内部的中间件平台上资源的申请,如:redis、topic和消费者的创建、分布式锁资源的申请等
    讲这些一步步的都记录之后,上线前在准备上线单就不会漏掉了,因为在 tes 环境要完成的这些步骤,在 prod 同样也是要做的。

    1.7 提测

    一般能自测出来的问题都解决了,之后让QA完整的测一下。

    1.8 预生产环境上线

    等test 环境测试通过后,QA 会通过合并到 master 分支的申请,代码将会合并到 master 上。
    在预生产环境上,公司之间会存在差别,我们公司是预生产环境与生产环境共用一套资源,如:数据库,topic和消费者,redis等。
    在预生产进行构建和部署,一是要确保项目能在生产环境上正常启动;而是在生产环境上正常执行。

    1.9 生产环境上线

    完善上线单,一步一步在检查一下是否有漏掉的地方。
    确认之后,进行上线操作。同时观察日志和监控。

    二、可能遇到的问题

    在整个功能开发过程中,会在不同的阶段遇到不同的问题。有可能代码写着写着,就会发现一个漏想的点,这个点可小可大,往小了说是少一两个字段,往大了说可能会成为整个需求的卡点。无论是大问题还是小问题,肯定越早暴露出来越好。

    相关文章

      网友评论

          本文标题:工作的一点点总结

          本文链接:https://www.haomeiwen.com/subject/obdkhltx.html