从一开始就花时间选择正确的开源堆栈组件将有助于使将来的策划变得更加容易,并且优势也更加明显,也能给将来节省很多麻烦。
很多社区和工具的日趋成熟推动了开源软件成为主流,这些工具与与组织一起寻求更快,更便宜地部署软件的组织一起工作。
根据Gartner Research的调查,其中超过95%的人正在部署开源软件,尽管它带来了很多好处,但从选择正确的开源堆栈开始,它也带来了一系列全新的挑战。存在多种风险,包括令人失望的软件性能,无法与他人良好连接的工具,令人惊讶的额外成本,缺乏控制和安全性问题。
选择正确的开源堆栈并不容易。许多组织缺乏内部专业知识,无法知道要寻找什么或没有时间充分研究开源软件。不能指望软件工程师会在一夜之间成为开源市场专家。
几年前,我与一个团队合作,该团队认证了可用于生产的开源解决方案。我们创建了42个要考虑的必要资格的列表,这是答案(至少是其中的一部分):首先,在选择开源软件时知道要问什么问题。
选择开源软件时,需要考虑以下五个方面:
1.时间:虽然下载开源程序并使其快速运行的能力可能很吸引人,但最好进行尽职调查或考虑与可以进行研究的外部专家合作。花时间为您的用例构建正确的解决方案。重要的是要注意,开源通常是出于目标驱动并且选择执行特定任务。您可能需要将几个不同的项目结合在一起,以获得完整的解决方案。
2.支持者:尽管志愿者在成功的开源中扮演着重要角色,但事实是,大多数最知名的工具都有赞助。拥有坚定的支持者和良好的业绩记录对于延长使用寿命和软件质量都是一个好兆头。我经常引用的示例是Cloud Native Computing Foundation,它位于Kubernetes,Linux和Prometheus的背后。
3.社区:社区的承诺和响应能力至关重要。要问的基本问题包括:
(1)社区对查询或错误的响应速度有多快?
(2)其成员记录和共享集体知识的程度如何?
(3)社区有多活跃,庞大和稳定?它可能足够长以支持选择该软件所需的用例,或者社区和该软件是否有可能被其他东西推到一边?
4.不同的类型:即使是一些知识渊博的CTO也无法正确理解开放源代码的不同类型,尤其是Copyleft许可和宽松许可之间的区别。每个对组织都有不同的含义。第一个要求贡献者与相关软件社区共享其更改,而第二个则不承担此义务。企业担心必须共享部分专有源代码以及可能的IP,尽管这仅在企业修改代码时适用。
不可预见的成本隐含在以下所有类别中:
(1)时间:如果解决方案最终与用例不匹配,则可能浪费而不是保存时间。
(2)解决方案更新:没有“支持者”的项目可能会死掉而无法再接收任何更新,从而迫使企业花费精力选择新的解决方案。社区也是如此。
(3)法律后果:如果企业修改和分发copyleft源代码而不共享给他们,它们将面临昂贵的法律诉讼。
(4)可用性和支持:组织将得到第三方,社区和其自身团队的支持吗?考虑所有选项的潜在成本。
(5)软件质量和集成:重要的是要查看编码实践(它们是否符合组织自身的标准?),可用性和对分布式资源的支持。最重要的是,仔细检查集成,因为构建开源堆栈时面临的最大风险之一就是最终出现了一堆无法一起使用或未完全符合用例的工具。
5.检查整个堆栈中的集成:平台,数据库,中间件,应用程序运行时和监视工具。寻找具有很多支持并且已知可以与许多其他解决方案(例如Kubernetes)良好互操作的解决方案。专注于诸如OpenJDK之类的公认的语言发行版,它可以在顶部运行大量其他企业级开放源代码。
这可能很困难,但是为开源堆栈选择正确的组件将有助于使将来的策划变得更加容易,并且优势也更加明显。从一开始就花时间进行研究并提出正确的问题可能会在将来节省很多麻烦。