从法律风险到运维成熟度:开源软件对企业的五大挑战与应对之道

科技   2024-11-19 07:35   海南  
【摘要】传统的非开源生态产品,会在技术发展中一步步被孤立和淘汰,只有开放的开源生态才能一直延续下去。开源软件和生态的引入为企业带来非常大的积极性影响,但同样也带来了更多挑战。本文分析了开源软件对企业 IT 建设的五大挑战与应对之策,来自在银行从事多年IT工作的资深架构师。

【作者】孔再华 银行数据库架构师

一、开源软件在企业中的应用现状

近年来企业在实现数据化转型的历程中,不仅经历了大数据、云计算、人工智能等技术大爆炸,也经历着国际形势变化科技制裁的自主可控压力。开源软件在新兴技术大爆炸的过程中扮演了举足轻重的作用,目前已经深入应用在企业IT架构中的各个领域。

1. 传统基础软件(数据库、中间件、操作系统)

在传统基础软件设施中,开源软件也在企业关键应用中占有一席之地。例如NoSQL数据库,属于近年来发展较快的新兴技术,有key value的缓存数据库Redis、文档数据库MongoDB、图数据库neo4j等为代表。关系型数据库有MySQL、Postgres为典型。尤其是MySQL数据库,在金融领域关键应用的占比很高。国内开源的openGauss数据库也是生态比较全面的关系型数据库产品。分布式数据库也有几个典型的产品:OceanBase、Tidb、pgxc等。当前国内大部分商业关系数据库产品都是基于MySQL和Postgres内核开发,只有极少的是纯自研的闭源产品。而新兴的NoSQL数据库和分布式数据库也基本是以开源生态为主要发展路线。从生态发展来看,闭源产品的生态远远不及开源产品的生态。

在中间件领域,Nginx、Tomcat等应用非常广泛。操作系统领域随着Unix小型机的退场,现在Linux系列一家独大,仅有少量的Windows份额。Linux商业产品还是占主流,不过已经可以在企业中看到使用开源Linux的应用。国内也有开源的openEuler系统,并且有国内商业操作系统也是基于其上定制。看起来开放的Linux生态淘汰了封闭的unix小型机生态。

2. 大数据技术

现在的大数据技术几乎是由开源软件主导整个技术生态的发展:Hadoop、Spark、Storm、Flink、Kafka、Flume、ES、Zookeeper等等开源软件是当前最主流的大数据技术。大部分的商业产品也是基于这些主流技术封装定制出来的。

3. 云计算技术

近几年也是云计算技术发展最快的时段,从一开始的虚拟化到现在的云平台。开源的OpenStack引领着虚拟化技术,而Kubernetes是最主流的容器云平台。可以说现在的云计算技术主流就是开源软件生态。

4. 人工智能

现在AIGC的概念非常火,人人都在讨论大模型。近几年人工智能技术爆炸式发展,从一开始的标签分类到现在的生成式AI,我认为开源理念才是这一切的主因。平台、算法都是开源的,全世界都在探索各种算法的实现和效果。就连数据现在都是开源的。我认为开源的理念是创新和共享。正是这种开源的理念,人工智能才能聚集全人类的智慧向前大步迈进。

从传统IT架构到云计算,从大数据到人工智能,现在主流的技术已经是围绕着开源生态演进。当前阿里、腾讯、华为等诸多大厂普遍基于开源技术研发了很多商业产品,并且很多金融企业为了保证安全稳定运行,也在使用基于开源技术的商业产品。

笔者认为不仅是当前开源生态已经深入企业的关键应用,而且未来也将是开源生态引领IT技术发展方向。传统的非开源生态产品,会在技术发展中一步步被孤立和淘汰,只有开放的开源生态才能一直延续下去。所以拥抱开源,持续贡献和跟进开源技术的用户和企业能走的更远。

二、开源软件对企业 IT 建设的影响

开源软件和生态对企业IT建设的影响是巨大的。企业接入开源生态不仅是为了成本优势,也是技术路线发展趋势下不得不跟随的结果。下面就几个方面展开开源生态对于企业IT建设的影响。

1. 降低成本

降低运营成本。开源软件通常是免费的,企业无需投入大量资金购买正版软件。此外,开源软件的免费更新和社区支持也能节省企业的维护成本。活跃的开源产品聚集了众多的开发者和IT厂商,企业寻求技术支持的成本也相对更低和更容易。

降低开发成本。Devops相关的技术依托于开源软件,极大提高了开发效率,降低开发测试的成本。同时好的开源软件生态丰富,便于开发者较容易找到合适的开源解决方案,并实现快速开发部署迭代。

2. 提高敏捷性

敏捷开发模式要求业务和数据必须具备灵活性、扩展性以及快速迭代特性。这也是开源产品的内驱力,同样也是开源生态的优势。开源软件涵盖了各种技术领域,为企业提供了丰富的技术选择。这意味着企业在开发过程中可以更加灵活地根据项目需求选择最适合的技术栈,从而提高开发敏捷性。

开源软件的源代码公开,企业可以根据自身需求对软件进行修改和定制,提高软件的适应性。这有助于企业解决特定业务问题,提升工作效率。

开源软件通常具有较高的可扩展性,使得企业能够根据业务需求快速调整技术架构,实现弹性的横向和纵向扩展。这有助于企业在业务高峰期应对流量暴增等场景,提高整体系统的稳定性和可靠性。

开源软件的社区活跃,开发者可以获取到最新的技术成果。这使得企业能够快速采用新技术,缩短开发周期,提高项目的迭代速度。

3. 增强安全性

在一些关键领域如金融、医疗等行业中,安全问题尤为重要。开源软件的源代码公开,便于发现和修复漏洞。开源软件通常拥有活跃的社区和庞大的开发者群体,可以快速解决软件使用过程中遇到的问题,保证金融业务的稳定性。开源软件中的漏洞修复速度更快,更容易发现并及时修补,从而提高了系统的安全性能。

相比之下,闭源软件的安全性可能受到限制,因为企业无法了解其内部机制。此外,开源软件的透明性也使得企业可以更好地理解软件的工作原理,从而更有效地管理和控制风险。

4. 促进创新力

开源软件的开放性鼓励企业参与到开源社区和项目中。这有助于企业了解行业最新动态,利用开源软件快速地实现新的功能和技术,根据自己的需求和市场变化快速调整IT策略,提升了企业的创新能力。

企业接纳开源软件也有助于培养企业的创新氛围,激发开发团队的创造力。通过参与开源项目,开发团队可以学习到先进的技术和管理经验,从而提高自身的技术水平和创新能力。

通过开源社区贡献,企业之间共享知识和资源,促进技术创新。企业可以通过参与开源项目,与业界同行合作,共同推动技术发展。

因此企业通过学习创新方案,培养创新团队,推动创新方向等方式促进企业创新力。

5. 有利于可持续发展

开源软件能够减少对特定供应商的依赖,企业可以自主选择技术和解决方案。这有助于降低企业在技术转型和升级过程中的风险,实现可持续发展。

企业深度参与开源社区贡献,促进技术创新,共同推动技术的发展方向,有助于夯实企业it技术方案,提高所选技术路线的可持续性。

三、开源软件对企业 IT 建设的挑战

开源软件和生态的引入为企业带来非常大的积极性影响,同样也带来了更多挑战。只有正视这些挑战,积极建立应对措施,才能控制风险,放心创造价值。

1. 法律风险

挑战:

使用开源软件最需要注意的一定是法律风险。开源软件虽然源代码是公开的,但是并不能随便拿来商用。不同的开源协议对于开源产品是否能够被商用或被定制有明确的条款。企业需要根据自身需求选择合适的许可证,并确保遵守相关条款。某些开源软件的许可证可能限制商业行为,如禁止闭源修改和再分发。

例如当前最流行的关系型数据库MySQL的开源许可是GPL,一种公共许可。GPL要求凡是基于GPL软件开发的软件也必须开源。如果不能做到开源,那么就不能使用GPL软件。当前很多国内数据库是基于MySQL定制,都存在这样的问题。而另外一种开源许可BSD,是一个给予使用者很大自由的协议,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

应对:

企业应充分了解不同开源软件的许可证要求,选择符合企业需求的许可证,并确保在内部使用和二次开发过程中遵守相关规定。当企业选择基于开源产品的商业产品时,也需要确认该商业产品是否存在以上风险,避免未来面临法律风险或者是产品下线的风险。

如果企业有专业的法务部门,相关IT建设也应当咨询法务部门相关建议,选择合适的开源生态产品。

2. 安全风险

挑战:

开源软件的质量和安全性需要企业自行评估。开源软件可能存在更多的安全隐患和漏洞。开源软件的安全性通常与生态的成熟度有关系。活跃成熟的开源产品因为开发者和使用者众多,比较容易发现和解决存在的安全漏洞,因此安全性可能比商业软件更高。但是小众的开源产品安全性会更低。开源软件由于其源代码的公开性,也可能被恶意攻击者利用。

应对:

企业应加强对开源软件的安全审查,建立全面的开源软件准入机制。定期对开源产品开展安全评估、代码审查、漏洞扫描等技术手段,提高开源软件的安全性。

企业应优先选择生态活跃、用户量多的开源软件,此类产品通常安全性较高。

积极参与开源社区贡献,将自身发现的安全漏洞发布到社区。即便是采用的开源生态下的商业产品,也应尽力推动厂商贡献社区。尽量优先提高社区的开源软件成熟度来推动整体生态的成熟。

3. 产品支持

挑战:

虽然开源社区的代码是公开的,同时也有全球的开发者参与社区支持。然而这种模式下的时效性对于企业的关键应用是远远不够的。企业自身的人员技术力量通常不足以立刻修复使用过程中遇到的问题。社区的开发支持通常也比较缓慢。

应对:

首先企业需要强大的外部技术支持。建议购买开源软件的商业版本,获取厂商产品支持。或者聘请专家顾问或者服务提供商。活跃的开源社区不缺技术实力高的专家和厂商。充分利用第三方的技术能力对于保障稳定运行也是必要的解决方案。

其次要建立内部技术团队,培养自身技术实力。从闭源到开源,企业内部技术团队的技能要求变化较大。技术团队不仅需要增加源代码分析诊断甚至修复的能力,还需要学会与开源社区合作解决问题的工作方式。

不要忘了加强社区合作。加入开源社区的邮件列表、论坛或社交媒体群组,利用好开源生态获取实时技术支持。

4. 可持续性风险

挑战:

开源软件和生态自身存在很大的不确定性。随着开源技术的发展,越来越多的用户和开发者都看到开源理念的巨大能量,并且纷纷加入到开源社区。开源社区的活跃发展和开源技术的日新月异对于科技发展是很好的事情。但是这种创新力和灵活性也给企业带来很大可持续性的挑战。

开源产品良莠不齐。开源理念的生命力很强大,但是不代表每个开源软件的生命力就强大。恰恰相反,现实中更多的是开源软件无人问津,代码质量堪忧。

开源技术日新月异。开源技术发展过程中,新的技术方案更容易替代老的技术方案。企业需要跟随目标技术发展的节奏。

优秀产品存在闭源风险。很多优秀的开源软件最终会选择闭源。这种决定是基于软件厂商自身的利益考虑的,算是一种不可抗力。

政策因素。国内企业自主可控的需求很可能影响到企业对于开源软件的选择。国外的开源平台可能会拒绝国内用户访问。开源生态下的国内闭源厂商也可能面临制裁风险。

应对:

建立企业内部开源产品评价体系,选择用户量大、社区活跃、功能稳定、性能优异、易于扩展和集成的开源软件产品。

建立闭源备案。建立该开源生态下的国内优秀商业产品的备选方案。即便是当前产品闭源,或者社区变得不活跃的情况下,优秀的合作伙伴依然可以提供高质量的服务支持。可以购买厂商对开源产品的支持服务,或者直接使用商业产品。

密切关注开源技术发展方向。积极参与社区讨论、产品测试等前期工作,把握甚至主导技术发展方向。

5. 运维成熟度

挑战:

开源技术的敏捷性体现在快速实现用户应用需求的能力上。但是这种对应用需求的偏心也会导致这个产品的其他方面的能力落后。例如生产运维相关能力的完善。这也给企业生产运维带来很大的挑战。

例如开源生态的产品需要满足金融行业永不过时的两地三中心高可用容灾需求,需要接入企业的运维管理平台,需要适配企业的云管架构等等。

比较成熟的开源产品如MySQL,因为企业应用比较广泛和长久,在开源生态中有比较多的解决方案和衍生产品满足企业运维需求。而新开源的一些技术产品就比较欠缺。

应对:

首先明确开源产品的运维需求,对标企业内部的运维管理要求。然后积极寻找满足需求的解决方案。

优先选择开源生态内成熟的解决方案。借助社区、厂商的成熟方案,通过采购或者自研等方式方法建立健全本地化方案。

如果开源生态中没有合适的成熟方案,可以借鉴同类商业产品的解决方案。尤其是企业内部已经久经验证的方案。通过定制化适配新的开源成品,建立稳定可靠的原生方案。

最后建议开源自建的解决方案来反哺生态。通过开源生态运作来催熟方案,快速提高方案能力。

四、结论

开源软件在企业关键应用中的地位日益凸显, 开源生态强大的生命力也不容忽视。企业应积极应对开源软件带来的机遇和挑战。开源软件在未来也将继续发挥其独特价值,助力企业的转型与创新。

本文来自议题:开源软件及生态已经深入到关键应用,对企业 IT 建设带来哪些影响和挑战?

觉得本文有用,请转发、点赞或点击“在看”,让更多同行看到


 资料/文章推荐:


欢迎关注社区 “开源”技术主题 ,将会不断更新优质资料、文章。地址:https://www.talkwithtrend.com/Topic/1309

下载 twt 社区客户端 APP


长按识别二维码即可下载

或到应用商店搜索“twt”


长按二维码关注公众号

*本公众号所发布内容仅代表作者观点,不代表社区立场;封面图片由版权图库授权使用

twt企业IT社区
talkwithtrend.com社区(即twt社区)官方公众号,持续发布优秀社区原创内容。内容深度服务企业内各方向的架构师、运维主管、开发和运维工程师等IT专业岗位人群,让您时刻和国内企业IT同行保持信息同步。
 最新文章