遗留系统现代化实战
姚琪琳
Thoughtworks 资深咨询师
5615 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 30 讲
用户故事 (1讲)
遗留系统现代化实战
15
15
1.0x
00:00/00:00
登录|注册

24|微服务拆分(四):其他话题

你好,我是姚琪琳。
在前面三节课,我们分别讲解了如何拆分代码、数据库表和存储过程。可以说,掌握了这三个方向的拆分技巧,微服务拆分就不在话下了。不过除此之外,还有一些非常重要的点,如果不注意,会造成巨大的认知负载,影响拆分的进度。这些点包括:
微服务拆分和新业务需求如何兼顾?
如何避免其他团队的改动影响我们的改造?
一个 API 如果几个月还改不完怎么办?
数据所有权拆分完成后,如何做数据迁移?
……
这一讲,我们就来看看这些问题如何解决,权且看做是对前面三讲的查缺补漏吧。

需求管理

我们知道,系统都是在不断向前发展的,即使遗留系统也不例外。那么当团队正在如火如荼地推进微服务拆分的时候,又有源源不断的新需求要上线,这时候应该怎么办呢?
我们在拆分初期最重要的一件事,就是要和业务方协商好,尽量不要给拆分的模块添加新的需求。比如我们要拆分核保服务,那么就尽量在拆分期间不要添加核保相关的新需求。否则,拆分工作就会变得相当麻烦。
如果新的需求交给拆分团队之外的特性团队去开发,由于他们并不熟悉拆分团队的工作内容和进展情况,会造成严重的代码冲突,团队之间沟通协作的成本也相当高。而如果新的需求交给拆分团队来做,又会减缓拆分团队的开发进度。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了微服务拆分过程中的实际问题,并提出了解决方案。主要讨论了需求管理、双改新需求和代码所有权等重要话题。作者强调在拆分初期尽量避免给拆分的模块添加新的需求,以降低拆分工作的复杂度。对于高优先级的业务需求,可以采用“双改”策略,通过战术分叉和细粒度开关来实现需求和改造的协同开发。此外,文章还介绍了代码所有权的管理方法,包括使用Code Owner功能和安全重构技巧来确保代码修改的可控性和高效性。在拆分大的改造任务方面,建议灵活安排多人攻坚小组,将大的改造任务拆解成小任务,以降低认知负载。另外,文章还探讨了数据迁移的方法,指出在数据拆分和迁移过程中,可以采用基于战术分叉的代码拆分和基于数据所有权的数据拆分,最终完成微服务拆分。最后,文章提出了短期内的后续工作,包括验证项目初期假设、评估问题并进行重构、常态化开发和维护等。整体而言,本文为正在进行微服务拆分的技术人员提供了实用的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《遗留系统现代化实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • aoe
    老师专栏上架前不久,我就开始了改造送礼物的接口。直到今天还在写功能测试,在这期间植物绞杀、分离关注点帮了很大的忙,感谢老师!

    作者回复: 加油!💪

    2022-06-07
    4
  • 子夜枯灯
    认真学习了每一节课,收获满满。感谢作者和编辑的分享。

    作者回复: 也感谢你的支持,再见~

    2022-06-03
    2
  • chon
    其中代码拆分和数据迁移是可以在一个迭代中做完的,而数据拆分则是逐个 API 在多个迭代中增量交付的。 而后面一段又说:这时我们的数据在物理上仍然位于单体数据库中,当所有 API 改造完成后,就要在最后一个迭代中做数据迁移了。 这两句话是不是有矛盾?按照第一句的说法,代码拆分也是要在最后一个迭代才做了?难道代码拆分不应该是一开始就要做了吗?

    作者回复: 这里的意思是,迭代0做代码拆分(战术分叉),迭代1~N做API改造(数据拆分),迭代N做数据迁移。代码拆分和数据迁移的工作量都是在一个迭代内就能完成的。

    2022-06-03
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部