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

记一次产品重构的思考

作者: 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. 分别通过脚本来实现各自任务下项目自动化的部署;

相关文章

  • 记一次产品重构的思考

    1. 产品重构预知 在贯彻及执行产品重构之前,至少如下三点要做到了然于胸。 1.1 充分理解当前架构 首先做到充分...

  • iOS Command模式的一次实践

    注:本文参考 记一次网络模块的小规模重构 以及 MVVM without ReactiveCocoa看完本文后,如...

  • 记一次代码重构

    单一职责 功能单一 功能单一是SRP最基本要求,也就是你一个类的功能职责要单一,这样内聚性才高。 比如,下面这个参...

  • 记一次业务重构

    前言 在娱乐直播中,用户最为重要的消费方式就是赠送虚拟礼物,这也代表着平台最核心的业务就是送礼,需要很高的安全性和...

  • 重构老业务接口的思考

    最近在重构一些老得业务接口,在重构中有了一些思考;进而通过几个关键点说下重构的心得;1:重构的判定界限2:重构的切...

  • 数据架构重构

    去年,对产品的数据架构进行了一次较大规模的重构。通过这次重构,大幅提升了整体性能和数据质量。在此,把这次数据架构重...

  • 产销一体模式

    让客户参与新产品开发,产销一体模式重构产品开发。(节选自麦肯锡战略思考力) 产销一体模式的三大效果:所谓产销一体模...

  • 关于“重构”的思考

    如今是互联网新一代信息技术——人工智能、5G、大数据、云计算、区块链等加速市场化、规模化、特色化、个性化...

  • 记一次iOS重构之路

    新入职了,前一个月陆陆续续把之前一个App重构了一下下,目前重构了一半,基本架构算是弄完了,先总结下,后面接着完善...

  • 技术重构项目中,产品经理应该做些什么?

    技术重构项目中,虽然是由技术主导的,产品经理无法直接参与其中,但是产品经理可以做一些“正确”的事情,来帮助技术重构...

网友评论

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

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