写点什么

软件架构 & 研发效率

作者:agnostic
  • 2022-10-29
    上海
  • 本文字数:1105 字

    阅读完需:约 4 分钟

对于大型互联网公司而言,研发效率应该也是一个永恒的话题。4000 人的飞书,动辄几千人的国际支付团队。其实业务也就那点,人不少,看着还要天天加班,目测上效率就有很大的问题。那如何提升软件研发的效率呢?


总结下来,五个关键词:解耦、微型化、自动化、稳定、治理。


首先我们先聊职责问题。要提升效率,首先需要职责清晰。职责清晰落实到软件架构上,就是解耦。如果我们的开发模式是一种责任链的模式,A 开发依赖 B、B 开发依赖 C、……显然这个是快不起来的。光集成测试可能就需要数周的时间,因为要等着别人的服务 ready,要等别人把 bug 修好。解耦的第一步是服务化或者微服务。根据职能划分服务,服务和服务之间通过契约继承。大家只需要把契约定义清楚,并根据契约自动生成 mock 和 stub,所有的开发就可以解耦了。关于服务契约和契约测试自动化,大家可以参考我前面写的文章(https://xie.infoq.cn/article/a1896759d7f4175a9ecb30125)。


其次,小即是美。无论代码仓库、契约定义、代码结构,都应该尽量精简。

一个应用可以根据其中定义的服务类别不同,或者代码层次不同,再拆分成多个代码仓库。这样,无论 CI 和 CR 都会更快,同时也减少了不同服务和代码之间的相互影响。

服务的接口契约要做到“增一分则太肥,减一分则太瘦”。按照服务的能力和产品的设计,恰到好处的定义契约中的字段和属性,不要打着扩展性的幌子加一大堆没想清楚的字段或者定义一些无业务含义的扩展字段。服务是可以升级的,想清楚的就落实,没想清楚的就先放一放。

代码结构一个函数不要超过一个手掌的高度,这个大家都有听说。只有代码越袖珍,写单元测试才会越愉快。


第三,需要自动化。不论是单元测试、集成测试还是功能测试,都需要考虑自动化。单元测试的自动化这个基本上大部分团队都能保障的。集成测试的自动化就是通过契约测试来进行,这个前面已经说过。剩下功能测试的自动化,需要测试团队建设基于 API 或者基于页面(selenium)的自动化测试能力。


第四,稳定。这个包括代码的稳定、测试用例的稳定、环境的稳定。代码的稳定需要通过分层设计、代码 CR 来保证。测试用例的稳定通过 CI 来保证,不停的跑,不停的修。环境的稳定,这个首先通过前面的契约测试,将集成测试从环境依赖中摘出去。其次,环境可以用容器化的方式,将存储、应用、中间件都聚合到一起,减少网络对环境稳定性的影响。最后,通过对环境的定期跑验收用例,来保证环境随时是可以用的。


最后,管控和治理。我们必须认识到软件研发是一个 infinite game,不是一锤子买卖。只有不停的管控架构、代码、用例和环境,不停的在治理中保鲜,才能保证我们系统一直是处于一个高质量。具体参见:https://xie.infoq.cn/article/84f7139324c13fb1cae73aba8

发布于: 刚刚阅读数: 3
用户头像

agnostic

关注

还未添加个人签名 2019-02-14 加入

还未添加个人简介

评论

发布
暂无评论
软件架构 & 研发效率_研发效能_agnostic_InfoQ写作社区