人们通常认为,“开源软件是完全免费的”,“开源软件比闭源软件更灵活”,“代码所有权对于每家企业而言都非常重要”。但近日,SaaS CMS 解决方案 Coredna 创始人 Sam Saltis 在一篇文章中指出,这些观点并不是绝对正确的,它们要依赖于一定的“环境”,比如,应用场景、应用行业、企业规模,等等。
通常,人们有三种方式获得技术软件,包括“购买”、“构建”和“借用”。Saltis 指出,企业在做出选择之前,必须弄清楚他们要使用软件解决什么问题,要综合考虑战略目标、外部合作伙伴和所需的系统支持等因素。这可以帮助他们了解什么方式最能满足他们的需要。Saltis 比较了上述三种方式:
- “购买”技术是指购买满足需求的软件。这种方式有许多优点,比如,购买的商业软件可以快速部署,可以便捷地集成第三方软件,可以进行一定程度的定制,等等。但缺点是,你可能需要为不需要的功能花钱,需要不断花钱购买运维和升级服务等。
- “构建”技术的好处是:开发人员可以严格根据需求构建软件,缩减开支;开发人员可以更好地控制软件,提供更易用的接口;没有许可证问题。这种方式的缺点是:团队成员可能缺少从头构建所需软件的知识和技能;最终构建出的软件可能存在许多 Bug,为了节省时间,需要外部顾问帮助解决;整个构建过程非常耗时;很难跟上技术发展的步伐。
- “借用”技术是指按需购买,按使用付费。这种方式的优点包括即插即用、零运维、可以获得大部分需求等;缺点则包括可能被供应商锁定、可能会存在集成问题等。
如上所属,在作出选择之前,应该弄清楚技术的应用“环境”。Saltis 建议从可用的 IT 资源、需求复杂度、业务重要性、预算等四个方面来考虑,并提出了如下选择矩阵:
根据 Saltis 的经验,这个矩阵即使不能代表所有的情况,也可以代表 98% 的情况。红色区域代表大多数小型组织。他们的需求复杂度较低,IT 资源较少,网站对于他们而言并不是特别重要,每个部门都需要预算。黄色区域代表大多数中型组织。他们需求复杂度有所增加,有 IT 资源,但不足以开发、维护一个网站及其基础设施,网站已经成为企业营销和定位策略的一个重要部分,数字营销预算增加,但对企业的重要程度还不足以让企业雇佣专门的内部资源。绿色区域代表大多数大型组织。他们的需求复杂度很高,IT 资源丰富。虽然外包和云计算在很大程度上削弱了 IT 资源,但真正了解数字化重要性的组织通常会有专门的团队开发和维护自己的数字资源。数字营销成为关键业务已经有段时间了。他们有合理的预算。Saltis 用下面这张图对上述内容进行了概括:
在此基础上,他得出了如下结论:
他认为,小型企业适合采用开源软件。一个托管在共享环境中,有廉价的非独占性“模板”设计,几乎不需要持续运维的开源软件是与之最相配的。当然,如果存在以下情况,小型企业也可以采用闭源软件:
- 需求有限,像 Squarespace 这样的 SaaS 即可满足需求;
- 企业是电商企业,则可以使用 Magento;
- 网站需要获取用户个人数据,但预算不允许其部署和管理适当的安全措施;
- 有特殊的行业需求,需要定制开发。
对于中型企业而言,闭源解决方案,尤其是 SaaS 更适合他们,因为:
- 在开源环境里,功能需求增加需要安装许多第三方插件或完成大量的自定义代码开发;
- 可用的 IT 资源不足以维护一个可靠的、高性能的网站;
- 网站正常运行时间对于收入和名声至关重要。闭源 SaaS 解决方案提供的基础设施环境可以很好地应对网站流量波动。
不过,在以下情况下,开源技术对于中型企业而言也是不错的选择:
- 企业的 IT 资源 / 技术技能让他们可以自行维护应用程序,运营环境以及 7x24 小时监控网站的性能;
- 企业有预算付给提供商,让他们监控和维护网站;
- 企业以离线业务为主,数字营销需求并没有随企业规模同步增长。
至于大型企业,Saltis 认为,上述方案哪一种都可以,那取决于企业的结构和关注点。另外,他特别指出,每一种规则都有例外。
基于上述分析,Saltis 反驳了开源领域一些广为流传的观点。第一个是“开源是免费的”。Saltis 指出,使用开源软件有许多隐藏成本,包括定制成本、升级成本、托管成本以及平台迁移成本。比如,从OpenCart 迁移到Magento 需要10 到15 个小时。第二个是“有力的支持”。Saltis 认为,虽然会有一个很棒的社区为你提供帮助,但一旦你对平台进行了定制,就增加了社区提供帮助的难度。第三个是“大量的插件”。的确如此, WordPress 插件有超过 4 万个,但问题是,有多少是你需要的呢?
还有一些东西是销售开源平台的公司不愿意告诉你的。
- 开源平台的安全性——根据李纳斯法则,开源软件更安全,但是,开源并不意味着它经过了全面彻底的审查,代码可能因为测试不充分而存在错误;
- 开源平台的持续更新——平台会定期升级和更新,但是,你所使用的插件与平台的最新版本未必兼容;
- 开源平台的技术支持——如果你根据自己的需求对开源平台进行了定制化开发,那么它就成了一个客制化版本,不再是开源的了;
- 开源平台的迁移——遗留开源软件通常会有一个最后期限,当开发社区不再提供支持时,即使旧版本的软件仍然满足你的需求,你也不得不花费时间和精力升级到新技术。
因此,在 Saltis 看来,在选择开源平台和闭源平台之前,要抓住以下几个关键因素:
- 这项技术是企业的一个重要的组成部分吗?它会让企业具备独特的优势吗?
- 我们有技术资源 / 合作伙伴来构建和管理最终的解决方案吗?
- 我们需要重新创建可能已经构建好拿来就可以用的东西吗?
- 我希望将预算花在构建或购买某个东西来满足需求吗?
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论