庄表伟:我们需要建立“开放式架构”的思维模式

65d6bc9a070d3de4cad3a7324b3d6bcb.gif

7600660935df2f19d03a15ec3a8da57e.png

| 转载自:华为开源

| 编辑:胡佳

| 设计:周颖

| 责编:钱英宇

今天在听 CHAOSS China 的一档播客节目《Episode#01-聊一聊有机的开源运营》,突然连贯着想通了一个架构方面的问题。

 01 

自建模型

早期的架构,早期的代码,我们几乎都是从头开始的。所以,所有的问题都由我们自己解决,当然所有的风险也都是我们自己造成的。

设计模式

那20多个设计模式,每一行代码我们都看在眼里。要在自己的项目里使用,当然也是一个字母,一个字母的敲进电脑里。

即使后来的 IDE 工具非常先进,能够帮忙自动生成代码,或者帮忙重构代码。那些代码,依然是我们自己掌控的。

架构模式

在自建一切的概念下,架构当然也是我们自己搞定。ER 图是我们自己画的,数据库表结构是我们从头定义的。每一个模块,我们分工以后,也是一个一个的写出来的。

我们会阅读一些技术文章,了解一些最新技术。然后:还是会自己去写代码。在开源繁荣之前

 02 

黑洞模式

当开源越来越多之后,我们的架构思维并没有发生变化,只是在开源社区里,发现了很多“好东西”,我们可以拿来就用

当我们下载了开源代码以后

所谓黑洞,就是一种心态的“切割性”。外面的开源项目,外面的代码,那是外面的。当我们下载代码回来以后,这就变成了我们自己的代码,我们想怎么用,就怎么用,想怎么改,就怎么改。

为何会变成黑洞

为了保持可控性,我们沿用了自建模式的传统思路,尽可能吃透所有外面的代码,把他变得像自己的代码一样熟悉。当然,接下里我们会持续使用这些代码,但是“回馈”?不存在!

  • 没有必要:我自己用得好好的,为啥要回馈?

  • 没有可能:我自己的修改,社区也不一定接纳呀?

  • 没有收益:甚至可能会损失我的利益

 03 

生长模式

事实上,我们后来才发现,软件不是写完一次就完成了的。他们会不断的出新的版本。

自建下的生长

我们自己的代码,也会不断生长。我们会维护一个越来越庞大,臃肿,甚至无法理解的代码库,然后小心翼翼地修改代码,“定期”发布新的版本。

开源软件也在生长

我们以前觉得,那些可以拿来就用的开源组件,其实也在不断的推出新版本。那些新版本的功能,我们也很喜欢。但是:我们的上一个版本,用了“上一个版本的”开源组件。

当我们想要同步升级的时候,真正的痛苦出现了:“我们没有为升级,做过准备”。当初就是拿来就用,甚至随便乱改,随便乱用。

我们并没有一种“生长型的架构模式”

 04 

开放式架构模式

我们的软件,处于开放式生态之中

  • 我们的软件,使用了很多种,通常是开源的新兴技术

  • 我们的软件,使用了很多开源的框架、开源的组件、开源的工具

  • 我们的软件,运行在由很多开源系统、开放服务组成的开放式环境之中

  • 而且,这些我们依赖的技术、组件与服务,都不是保证可靠的,都不是安全无风险的

所有这一切,都在不断变化/生长之中。

我们的架构,不能再以自建的、封闭的方式来设计。

  • 要更加重视开源选型

    • 用哪个开源框架作为项目的底座?还是用自己的框架作为底座?

    • 哪些组件应该自己开发,哪些可以选用开源的组件

  • 在使用开源软件、组件的阶段,也需要更多的思考

    • 区分主动依赖的开源软件,以及由开源软件的依赖,引入的“被动依赖”

    • 在架构设计时,应该考虑如何预防与隔离,由开源软件引入的各种风险

    • 要关注开源软件的生命周期,及时替换掉已经过于老旧的开源软件版本

  • 我们要关注开源软件的修改问题

    • 我们是否在做通用性的修改——对别人也有用

    • 我们是否隔离技术需要的修改与业务需要的修改?

    • 我们的这些修改,如果回馈到上游,是否会损害我们的竞争力?

    • 如何定义正确呢?我的建议是以社区是否会接纳为准

    • 最好不要修改(以便更好的升级新版本)

    • 能不能只在外围修改,或者做一个适配层?

    • 如果一定要修改,如何才能正确的修改?

    • 我们的修改,是否能够尽快回馈到上游社区?


当我们在谈竞争力时,我们究竟在谈什么?

也许,我们应该放弃将静态的,一段一段的代码,视作竞争力的思路。在一个不断生长的,开放式的架构模式下:生长能力、适应性、松耦合、架构可靠性这样的能力,才是一款软件的核心竞争力。

只有在架构观念转变的基础上,我们才能够真正理解:为何 Upstream First 并不是在做慈善,而是一种对于企业来说,更加富有竞争力的架构策略。

 05 

心态转变

  • 在开源的时代,我们的软件不是孤立于开源生态之外的存在,而是整个开放系统中的一份子

  • 一个能够与整个生态,健康交流的软件系统,才是一个健康的系统

  • Upstream First 作为一种架构策略,需要被认真的思考与实践

  • 不要用静态的眼光,而是用发展的眼光,来看待软件开发与架构设计

愿与大家共同探讨!

相关阅读 | Related Reading

9927a91c9e6ab74fd57602532462f884.png

在开放社区中的六年,我做着喜欢且擅长的事情,利他而自利

ba6c84fe0f79b2a2dddecf7fbf898d36.png

毕业之后,开源给了我第一份工作

31318123b62a247e13c6b0a606d66f2e.png

Chatopera 王海良:做好开源客服系统

开源社简介

开源社成立于 2014 年,是由志愿贡献于开源事业的个人成员,依 “贡献、共识、共治” 原则所组成,始终维持厂商中立、公益、非营利的特点,是最早以 “开源治理、国际接轨、社区发展、开源项目” 为使命的开源社区联合体。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,以 “立足中国、贡献全球” 为愿景,旨在共创健康可持续发展的开源生态,推动中国开源社区成为全球开源体系的积极参与及贡献者。

2017 年,开源社转型为完全由个人成员组成,参照 ASF 等国际顶级开源基金会的治理模式运作。近七年来,链接了数万名开源人,集聚了上千名社区成员及志愿者、海内外数百位讲师,合作了近百家赞助、媒体、社区伙伴。

3ce0b7031569d1d5feb5caca8b247f59.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值