如何更好的项目重构? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gonethen
V2EX    项目管理

如何更好的项目重构?

  •  
  •   gonethen 2019-09-21 20:08:20 +08:00 7861 次点击
    这是一个创建于 2216 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司的 Java 项目。3 个 Springboot 的 jar 包。前后端分离。

    经历了外包、多个菜鸟的代码维护、产品经理或决策者任性添加需求、修改业务流程等一系列问题,导致现在问题很多很大。

    那么我们如果要重新开始设计研发并且不影响业务使用,需要做哪些准备工作,以及注意哪些问题呢?目前的要求或者疑问有:

    1. 不影响业务开展和系统使用
    2. 数据库想重新设计,但旧系统是做数据迁移好还是做兼容比较好?
    3. 新项目一定要模块化,Spring Cloud 是否满足我们模块化的需求呢?
    4. 新项目一定要有一套相对理想的更新部署机制,以达到项目服务程序 7*24 不间断运行
    9 条回复    2019-09-23 19:11:47 +08:00
    gonethen
        1
    gonethen  
    OP
       2019-09-21 20:24:08 +08:00
    点解一个回复都啊
    lhx2008
        2
    lhx2008  
       2019-09-21 20:33:04 +08:00   1
    springcloud 不一定是好的方案,如果总共就 3 个 springboot 包,其实没必要搞。。微服务现在都开始流行 K8S 了,不过鉴于没有运维能力,K8S 也不好。
    数据库,新代码要向后兼容,表重不重新设计都行,否则到时候灰度发布 /回滚的时候,业务可能不可用
    发布机制用 Jenkins 搞一下就行,后面慢慢再加
    所以,还是先把问题梳理出来,再做优化。
    gonethen
        3
    gonethen  
    OP
       2019-09-21 20:41:48 +08:00
    @lhx2008
    1. 现在是 3 个 jar 包,但如果想实现模块化是不是就要拆分多个 jar 包?是不是就需要用 Spring Cloud ?
    2. k8s 这个没了解过,我会去了解一下
    3. jenkins 已经开始研究了,看来这个是自动化部署的普选方案
    lhx2008
        4
    lhx2008  
       2019-09-21 22:22:24 +08:00
    @gonethen #3 模块化之后,除了调用多几次序列化反序列化,带来了什么好处?
    gonethen
        5
    gonethen  
    OP
       2019-09-22 10:30:52 +08:00
    @lhx2008 #4 可以平滑更新使影响降到最低?
    lhx2008
        6
    lhx2008  
       2019-09-22 10:59:26 +08:00
    @gonethen #5 平滑更新用灰度发布就可以。就是最简单手工部署来说,就是起两个,等第二个起好了再切过去,也没问题吧。
    zhazi
        7
    zhai  
       2019-09-22 13:47:27 +08:00 via Android   1
    没看出你为什么要重构,为什么要模块化,我只能从字里行间看出这个项目的实现和你理解的不一致,然后强迫症发作决定要重构。
    下面说说如何重构,讲完之后看你还想不想重构。
    找出当前项目里的一个业务点,写测试用例,集成用例,正反测试,保证当前业务不会有一些 bug,保证全绿的情况下可以重构了。用你的实现替换了老的代码测试全通过,再再优化完代码测试通过就可以废弃老的代码了。
    当你把所有业务点都经过上面的步骤后你就重构了整个项目。
    重构从来不是什么大刀阔斧该架构,重构是抽丝剥茧。
    至于你说的是重写项目,不像是重构项目
    gonethen
        8
    gonethen  
    OP
       2019-09-23 11:09:01 +08:00
    @zhazi #7
    1. 为什么模块化?因为现在每次更新,整个业务系统不能使用,我认为模块化之后可以实现局部更新,使影响降低增强用户体验。
    2. 为什么重构?不论是重构还是重写,我觉得都需要大刀阔斧地去改,因为老代码写的实在是太乱太烂了,我确实有强迫症。
    3.无论怎么重构、怎么测试,我自己的前提也是不影响旧业务系统的正常使用。而且,新旧系统之间除了数据共享其他都要做到互不影响。当然,在重构期间有新的需求过来的话,问题就比较棘手了,我貌似必须要在新旧系统里写两遍
    IMCA1024
        9
    IMCA1024  
       2019-09-23 19:11:47 +08:00
    emm 也要考虑模块化后产生的问题噢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5826 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 02:34 PVG 10:34 LAX 19:34 JFK 22:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86