美文网首页
记一次产品重构的思考

记一次产品重构的思考

作者: VienFu | 来源:发表于2019-08-22 10:02 被阅读0次

    1. 产品重构预知

    在贯彻及执行产品重构之前,至少如下三点要做到了然于胸。

    1.1 充分理解当前架构

    首先做到充分理解当前架构和各种业务场景及需求。

    1.2 明确重构的原因

    分析架构重构的理由和其他备选方案,明确重构的目的是为了满足业务需求,并且是不得不做的最佳方案,然后再考虑其他问题。有时候,经过分析就会发现,也许还有其他解决方案,比如增加计算资源,或者重构的目的不是为了业务需求,那就没有必要做了。

    1.3 明确重构的目标及边界

    如果确定要重构,那么要把目标明确下来,也就是重构的边界条件,怎么才算是“完成”了重构,目标要有数据量化,或者有能够测试的办法。这也是一个需求分析的过程,如果需求不明确,那么规格说明书没法写清楚,负责重构的团队也没有明确的目标,不能以重构的时间或者主观的判断为结束的依据。

    2. 技术评审

    决定产品重构后,要做技术评审,至少要做到产品经理、项目经理和产品开发技术人员参与。

    2.1 功能需求评审

    在重构每个模块时都要进行技术评审包括基础框架类的和功能模块,最好把需求及目标都一条一条的列出来。

    2.2 技术选型

    进行架构重构时不是时下最热的技术就好,而是要注重实效,要考虑人力及时间成本,看能不能完成此次架构重构的目标。

    3. 任务分工

    基础设施比如Web框架、数据库选型、中间件、缓存设计等;

    各个服务模块业务接口的实现;

    通用方法库;

    4. 产品重构过程管控

    建议把重构过程分成一个个小的迭代,每个迭代的目标和时间都要量化,并且期间要有项目或者产品管理人员来对每个迭代的状态进行把控,比如每天开5-10 minutes的站会或者每周开周会来对每天每周的项目状态进行追踪。

    5. 开发规范

    因为做后端且偏python,所以从python及相关框架的角度来思考编码规范的问题。

    5.1 代码规范自检

    代码的风格最好都保持一致,方便后期维护及管理。

    比如采用flake8及其插件,插件比如:flake8-commas、flake8-import-order、flake8-quotes、line-profiler等。

    5.2 单元测试及覆盖率

    方法论

    对于开发的Restful API必须都要单元测试,且对接口的覆盖率要达到80%以上。

    实践举例说明

    基于django框架的API接口的单元测试: form rest_framework.test import APITestCase 从而进一步封装APITestCase。

    数据那一块可考虑使用factory-boy

    覆盖率:coverage

    5.3 代码提交规范流程

    git flow

    5.4 代码审查及合并

    每个方法或接口实现最多不能超过100行,在代码合并之前要assign若干名同事review,待都同意merge后方能执行合并操作。

    6. 测试

    常规功能测试、压测、回归测试、灰度测试等

    7. 线上部署方案

    线上肯定得出一套安装部署方案,或半自动化或全自动化,或是将代码打包成二进制文件通过yum、apt-get之类的工具安装、启动服务;或是走容器化;

    8. CI/CD

    8.1 CI

    CI: 可以考虑用gitlab CI来做代码的检查、单元测试甚至代码的构建,这一块涉及到的知识点:.gitlab-ci.yml、docker、gitlab-runner安装注册及使用等;

    这一步可能也会涉及到docker私有registry的搭建;

    8.2 CD

    能够实现快速产品交付和自动将产品部署到开发测试甚至生产环境。

    比如考虑用gitlab+jenkins+fabric/shell/ansible脚本的形式来实现。

    实现一个CD小demo应该遵循的流程:

      1. docker安装jenkins;
      1. 创建触发任务、参数构建任务、周期性任务;
      1. 分别通过脚本来实现各自任务下项目自动化的部署;

    相关文章

      网友评论

          本文标题:记一次产品重构的思考

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