通过开源重塑软件开发和可用性:Microsoft Azure 首席架构师访谈
微软成立于 1975 年——那是 43 年前,历史悠久。在过去十年之前,该公司发起了一场反对开源和自由软件运动的活动,尽管这可能减缓了反对的势头,但并没有使其结束。事实上,它反而鼓励了支持者更加努力地推动开源议程。快进到今天,开源技术几乎运行着一切——移动设备、云服务、电视等等。
直到萨蒂亚·纳德拉 (Satya Nadella) 掌舵(2014 年),这艘巨轮才得以转向。几乎在一夜之间,微软拥抱了 Linux 和开源的一切。它最终加入了 Linux 基金会,以及最近的开放发明网络 (Open Invention Network)。起初,这似乎好得令人难以置信,但几年后的今天,我们看到微软继续支持开源社区并采纳其许多理念。但这是为什么呢?
我想找出答案,最终联系了微软。Azure 的首席架构师 John Gossman 花了一些时间与我分享了他关于开源的想法和经验。
Petros Koutoupis: 您能向我们的读者简单介绍一下您自己吗?
John Gossman: 我是一位经验丰富的开发人员,拥有 30 年的行业经验。我在微软工作了 18 年。在微软,我有机会接触到各种领域——从 Windows 到其他图形应用程序,以及最近的 6 年,我一直在 Azure 工作。我的主要重点是开发人员体验。我非常了解这个领域,其中很多都来自开源世界。我花大量时间研究 Linux 工作负载,同时也与 Linux 供应商密切合作。最近(至少两年了),我担任了一个非常有趣的角色,成为 Linux 基金会董事会成员。
PK: 在萨蒂亚·纳德拉 (Satya Nadella) 担任首席执行官之前,微软与任何开源软件 (OSS) 的关系一直不佳。为什么会发生这种转变?微软为何改变立场?
JG: 我花了很多时间思考这个问题。现在,我不能代表整个公司发言,但我相信这一切都归结于微软过去和现在仍然是一家专注于软件开发人员的公司。请记住,微软最初成立时,它构建并销售 BASIC 解释器。后来,公司交付了 Visual Studio 和更多产品。微软文化的核心使命一直是赋能软件开发人员。
有一段时间,Windows 和 Office 掩盖了开发人员框架的光芒,与那些核心开发人员失去了联系,但随着 Azure 的推出,焦点又重新回到了软件开发人员身上,而这些开发人员热爱开源。
与此同时,微软继续招聘开发人员,而如今,这些开发人员正在关注开源软件,他们看到了优势。客户也一直在使用更多的 Linux 和 Java 以及其他开源项目。萨蒂亚也看到了这方面的优势。推动开源的动力来自高层和管理层。企业文化开始快速转变,而且这一切都不是强迫的。这种推动仍在继续,最近,微软甚至加入了开放发明网络 (OIN)。
PK: 转型需要什么?挑战是什么(例如,开发生命周期、思维模式和环境)?
JG: 就像人性一样,在开发人员的本性中,开发人员通常固执己见。但有时,他们也想使用最新的技术或新的“热门事物”。有些人立即投入其中(开源技术),而另一些人则行动较慢或不感兴趣。
切换到完全不同的生态系统中最困难的部分之一是弄清楚您的工具是否适用于它,或者是否需要解决某些依赖关系才能再次提高效率。这个过程在整个体验中造成了自然的摩擦。
一些团队对这种转型感到非常兴奋,并率先加入。我们开源的第一个东西是 ASP.NET。那是大约八年前的事了。这让我们学到了一些东西,最终导致我们开源了其余的 .NET。 [开源] 本身的过程已经进行了近十年,而且远未完成。我们仍在学习如何单独以及作为一家公司来做这些事情。我们仍然在旅程中,并通过社区协作学习,以更快地创新。
值得一提的是,我们几乎立即意识到,在开源中,开源某些东西并仅仅假设人们会修复您的错误是不好的做法。社区最终来了并做出了贡献,但这并没有在一夜之间或神奇地发生。
PK: 这一切与 Azure 有什么关系?
JG: 简单来说,Azure 是一项服务,我们需要为所有客户提供服务。这意味着我们不应该限制他们以及他们使用的工具或他们的实践。云往往是多种事物的混合体。有很多活动部件。我们的客户来自 Red Hat 环境,或者在 Ubuntu 中使用 Java 和 Python,同时与 Windows 并行运行。有时,所有这些都在一个部门中运行。为了最好地服务于所有这些不同的工作负载,您需要支持所有这些不同的事物。
例如,大约三四年前,我飞到马萨诸塞州与 Red Hat 的同事会面了一天。他们曾经是我们的竞争对手,但现在,我们正在共同努力解决相同的问题。我们正在继续与 Red Hat 合作,在 OpenShift、在 Linux 中使用 SQL 以及利用 Chef 和 Puppet 等其他技术方面进行合作。这是我们的客户希望在 Azure 上使用的东西。我们正在前往客户要求我们去的地方,我们需要确保我们能够运行他们的工作负载。
PK: 哪些开源组件构成了 Azure?
JG: 我们的角度始终放在数据上。这是一个很棒的故事。微软有 SQL 服务器。这是一个很棒的数据库,但我们的客户正在使用其他数据库。早期,我们采用并将 Oracle 的 DB2 和 PostgreSQL 集成到 Azure 中。今天,我们运行 PostgreSQL 和 MySQL 服务。我们甚至与 Mongo 合作,将该产品推向 Azure。我们在 Azure 上运行着如此多的开源产品,而这些产品对我们的云客户来说是最有价值的。还有更多功能正在筹备中。这些客户不仅依赖这些开源产品,而且还因为 Azure 的容错能力、可靠性、弹性、安全性等而选择 Azure。