企业中开源的挑战

作者:Avi Deitcher

有句古老的中国诅咒,“愿你生于有趣的时代。” 当然,我们都希望生活在有趣的时代,但有时有趣的部分可能有点过分。企业是一个有趣的地方。一方面,真正的企业拥有非常庞大的技术预算,有时甚至高达数十亿美元。其中大部分预算用于劳动力,这意味着成功的企业技术人员可以赚到非常可观的收入,同时在此过程中学到很多东西。尽管您典型的技术商店可能只有几台服务器,并使用 Ruby、HTML 前端和 MySQL 后端进行编程,但在企业中,您可能会遇到并学习到所有技术。如果您喜欢 Ruby,那里有;Java,肯定有;.NET,也有。如果您的偏好倾向于基础设施,您可能会发现从 Windows 服务器到 Linux 再到 UNIX 变体,再到大型机,再到意想不到的东西。早在 2001 年,我曾在一家公司担任企业管理主管,该公司拥有大量的 DOS 3.1 PC;那真是“有趣的时代”。

另一方面,企业的开始和结束都不是酷炫的技术,它们的存在是为了服务于商业目的。对此最著名的例证是传奇人物 Evi Nemeth 提出的九层 OSI 模型。

The Challenges of Open Source in the Enterprise

图 1. 九层 OSI 模型,由 Evi Nemeth 提供并经许可转载

当然,您可能拥有解决问题的最佳方案,但在企业中,您需要获得预算批准——当然是在多年周期内——然后您可能需要通过某种资本支出 (CapEx) 或重大支出审查 (MER) 委员会的审核。那里的每个人都认为您的请求与他们的优先事项竞争:1) 预算分配,因为即使是 10 亿美元的 IT 预算仍然是有限的,以及 2) 认可和晋升,因为毕竟,他们希望您成功,但他们更希望自己的项目成功。最后,企业有合法的业务支持需求,这些需求可能可以通过您的开源解决方案解决,也可能无法解决。

从技术层面开始

从根本上说,每个对开源感兴趣的人都对技术感兴趣,所以让我们首先解决技术挑战。正如您可能已经注意到的,企业花费了大量的资金。毫不奇怪,正如威利·萨顿所说,他过去抢银行是因为“钱在那里”,许多商业技术企业构建产品主要关注企业并解决其独特的问题,并且他们拥有非常庞大的销售和营销预算来销售这些产品。另一方面,开源产品通常至少在最初是为解决非常具体的问题而构建的。

因此,在倡导开源之前,我们需要了解,考虑到整个需求集,开源解决方案是否能像商业解决方案一样好地解决问题。这不仅包括直接的技术问题,例如“提供网页”,还包括企业特有的管理挑战,例如“在全球十个国家的 15 个数据库中实时复制,同时立即警报任何降级并提供服务级别协议 (SLA) 报告”。在许多情况下,开源确实已经发展到可以在技术需求层面与商业产品真正竞争的程度。在其他情况下,它尚未充分发展,但可能有一天会发展到。在某些情况下,使用开源从字面上看是不可能解决问题的。让我们来看两个极端的例子。

  1. Web 服务器:多年来,当然,主要的 Web 服务器一直是 Apache。尽管各种竞争对手都在蚕食它的市场,例如 Windows 的 IIS 或纯粹为了性能的 nginx,但 Apache 仍然在内联网和互联网 Web 服务方面占据主导地位。在 2010 年,为企业中的 Web 服务器解决方案采用 Apache 并不难论证。它成熟、已建立,许多知名公司都将业务押在其上,并且它具有企业要求的各种控制、挂钩、日志记录和安全性。但重要的是要记住,就在几年前,Apache 不够充分,其他商业变体应运而生以填补空白,例如 Apache Stronghold。成熟的产品、完整的企业就绪功能集和广泛的企业采用相结合,使开源 Apache 成为与任何商业解决方案一样有效的选择。

  2. 网络基础设施:在过去,当我们不得不决定是通过 UUCP 还是 SMTP 路由邮件时,我们构建了自己的防火墙。路由器只是具有多个网络接口卡 (NIC) 的专用服务器,我们在其上运行软件来路由流量。然而,随着时间的推移,网络的激增以及对流量路由能力和智能控制的需求超出了这些自制解决方案的能力。专门的公司成立来创建专门的网络硬件。当然,最著名的是思科。虽然小型组织可以使用简单的路由器,甚至可以使用运行 m0n0wall 的带有几个 NIC 卡的专用盒子来应付,但这种解决方案极不可能在大型企业中发挥作用。在那里,复杂性、流量需求和管理要求,以及三层架构(核心层、分布层和接入层)可以更经济高效地完成,并且在某些情况下,只能通过硬件解决方案完成。显然,开源不会运行企业网络。话虽如此,但并非不可能发生分裂。目前,企业网络设备制造商提供用于管理路由的硬件和软件,其中一些可能基于开源,例如 Cisco ASA 8.x。在不久的将来,可能会成立一家纯硬件网络设备制造商,该公司仅销售硬件,而软件通过开源解决方案提供,方式类似于当前的服务器。

从评估任何技术中获得的重要启示是,它必须解决直接问题,例如提供网页,而且还必须具有企业所需的功能,例如管理、日志记录和安全性。开源产品可能更好,或者您想支持为我们带来 Linux/Apache/whatever 的社区,这些都很少重要。对于企业中的采用,规则仍然是,并且在任何地方都应该是这样,首先解决实际问题以及与之相关的一切问题。

转向业务层面

除了解决技术问题(其中一些是企业特有的)之外,还存在独特的企业业务需求。在小型 IT 环境或 Web 初创公司中,没有人比企业更希望出现问题或中断。但是,小型环境中的技术容忍度可能更高,并且通常可以接受这样的权衡:需要唯一的内部专家(那就是您)在紧急情况下“处理问题”;这通常是实际的危机计划。在企业中,有事后分析、角色和责任,有时还会“推卸责任”,而“我会处理它并在出现问题时与在线论坛合作”的支持计划不会很受欢迎。错误或失败的成本至少与 IT 预算的大小成正比,甚至呈指数级增长。

这些挑战产生了一个称为服务级别协议 (SLA) 的次要要求。IT 向其客户(无论是内部客户还是外部客户)承诺某些服务级别。为了达到这些级别,技术的每个要素都需要有一个可预测且可靠的服务点。对于 HP 服务器,有服务合同和备件;对于路由器,是思科支持或合作伙伴;对于开源,是...?在许多情况下,产品足够稳定或足够分散,以至于无关紧要。在其他情况下,这非常重要。“如果它坏了,谁来修理?” 可能是 CIO 会问的首要问题。他们并不是在为难;他们只是在做他们的工作,确定他们是否可以满足 SLA 以及您的开源冒险的真正完全加载成本是多少。

在这方面,过去十年中最有趣的商业理念之一是红帽。它的产品几乎完全是可以从其他地方免费下载的开源产品。但是,它销售带有完整支持的版本。本质上,红帽已将产品开发与产品支持脱钩。Sun 并没有什么特别之处使其能够并且只有它才能支持 Solaris(至少自从 Solaris 开源以来)。任何具有足够专业知识的人都可以做到这一点。认识到这一真理是为开源产品提供支持的关键,正如红帽为 Linux 所做的那样。它在 2009 年销售了超过 5 亿美元的支持订阅,用于它基本上没有开发的产品。

不要忽视政治

政治是每个技术人员存在的祸根。政治是关于权力博弈、个性和妥协的微妙艺术。另一方面,技术是关于科学、真理和正确的方法。对于技术人员来说,通过测试和科学答案来证明你的观点是正确的方法,但这条道路只会激怒局外人。因为政治不在乎正确的答案,而是在乎满足人们理性和情感需求的答案。解决方案很可能不是最好的解决方案。它甚至可能没有真正解决技术问题,但它仍然是被采用的解决方案。

大约六年前,我正在一家非常大的企业(约 100,000 名员工)探索特定问题的解决方案。有几种解决方案,但我倡导的一种是开源。另一个主要的候选方案是专有方案。我与公司的律师关系很好,我与他讨论了这个问题。“假设产品惨败”,她说,“并且我们因此损失了 1000 万美元的业务,我们去找谁?我们责怪谁?” 从她的角度来看,作为一名专注于公司法律需求的律师,这是选择闭源方案的完全合理的理由,因为它有大公司的支持。从我的角度来看,我更倾向于选择不仅成本低得多,而且性能更好的解决方案,从而降低故障(更不用说灾难性故障)的概率和预期成本。

顺便说一句,同样重要的是要注意,我的观点可能在政治上对她不利。如果我们只关注降低故障的概率和预期成本,并将因故障造成的损失视为不幸的商业运营成本,那么法律部门的价值就会相应降低。如果她对最终决定有任何影响,而她确实有,那么这些对于大多数技术人员来说似乎无关紧要的问题,也必须考虑在内。在这种情况下,我实际上是通过指出最终用户许可协议 (EULA) 来说服她的。像大多数此类 EULA 一样,其中对责任有非常严格的限制。例如,如果您阅读 Microsoft Windows XP 专业版的 EULA,它清楚地表明您的唯一补救措施仅限于更换有缺陷的软件,或者可能退还软件本身的成本。如果价值 10,000 美元的软件造成 1000 万美元的损失,您最多可以获得 10,000 美元(可能)。我指出,法律部门的地位已经变得无关紧要,而且不是我造成的。因此,解决方案的选择既不会降低他们的地位,也不会加强已经降低这种地位的人(我)。

政治是认识到谁在每个决定中获胜和失败的艺术。了解人际关系、权力博弈、谁得到了您明确拒绝的供应商的支持、谁控制着预算,您将能够更好地选择您的战斗并赢得它们。

整合所有内容

开源在企业中已获得大量成功应用:Linux、Apache、Xen、Perl、PHP、Java 等等。开源也有失败的案例,要么是未能启动(未被采用),要么是在发射台上爆炸(被采用但失败)。在考虑在企业中采用开源解决方案时,重要的是要记住整个九层模型并回答三个问题

  1. 它是否满足所有技术要求,包括在企业中运行任何技术特有的技术要求?

  2. 它是否具有足够的支持和成熟度来满足企业的业务需求?

  3. 在考虑任何企业固有的政治因素的同时,我能否推动它通过流程?

如果所有三个问题的答案都是肯定的,那么您就处于推广采用开源解决方案的良好境地。

资源

Evi Nemeth: www.cs.colorado.edu/~evi

九层模型 T 恤:https://www.isc.org/node/232

Microsoft Windows XP Pro EULA: www.microsoft.com/windowsxp/eula/pro.mspx

思科: www.cisco.com

m0n0wall: m0n0.ch

红帽: www.redhat.com

Avi Deitcher 是一位常驻纽约和以色列的运营和技术顾问,自 Z80 和 Apple II 时代以来一直从事技术工作,并曾与全球企业和小型 Web 初创公司合作。他拥有哥伦比亚大学电气工程学士学位和杜克大学 MBA 学位。可以通过 avi@atomicinc.com 与他联系。

加载 Disqus 评论