CloudBees 程序员将发表演讲,讲解如何开发大规模可扩展的 HTTP 服务器

尚无读者喜欢这篇文章。
A cloud agenda

Opensource.com

来自 CloudBees 的 Garrett Smith 拥有超过 20 年的软件工程经验。他在评估 CouchDB 时开始接触 Erlang 编程语言。除了 Visual Basic、Visual C++ 和 Erlang 之外,Garrett 还学习了 Python。

Python 将他引入了开源世界,从那时起,随着他对开源和基于社区的开发动态了解的深入,他便义无反顾地投身其中。

Garrett 将在 2014 年 OSCON 大会上发表演讲,主题是 Erlang 和构建大规模可扩展的 Web 服务器。你不需要深入了解 Erlang 就能听懂他的演讲,他认为演讲内容是“关于构建软件的一些非常令人惊叹的事情”。

Interview banner

请向我们介绍一下您的背景和职业生涯。您最初何时与开源结缘?

我从事专业软件开发工作已经超过 20 年了,我的职业生涯始于 Microsoft Windows 3.x 时代的编程,当时使用的是 Visual Basic 和 Visual C++,甚至还使用 VBA 与 Excel 和 Access。现在听起来很普通,但在当时非常令人兴奋。企业花费大量资金构建在廉价 PC 上运行的软件。程序员供不应求,这是一个学习实用编程技能的广阔舞台,并且还能挣钱买啤酒。

当 Java 在 1994 年问世时,我转投了 Java。除了与 Web 的亲和力之外,Java 的跨平台支持为摆脱 Microsoft 的霸权提供了一条出路。我购买了 GoF 的《设计模式》一书,并将至少在我领导的项目中使用一次每个模式作为我的目标。这就像一次可卡因狂欢——最初的欣快感之后是崩溃,让我独自一人,在阴沟里流血,没有朋友,感觉自己在道德上辜负了宇宙。


查看 OSCON 演讲者访谈的完整合集

我在 Java 方面的经验是一场制造问题的练习,而不是解决问题。

在看到我所做的事情——以及 Java 文化所鼓励的事情——之后,我尝试了 Python。Python 以务实和直接的方式拥抱多个平台,并放弃了静态类型。空格问题并没有困扰我,我喜欢不必在多个抽象层中思考。我还结识了 Python 社区中令人惊叹的人们。这让我接触到了“开源”(当时是一个含义复杂的术语,现在已经不那么复杂了)以及基于社区的软件开发的活力。我从此义无反顾。

那时,我已经编写了大约十年的专有商业软件,并且感觉到这个行业正在衰落,最终会走向消亡。这可能需要很长时间,但未来不在于销售软件许可证,而在于其他地方。在我看来,问题在于商业软件供应商被迫发布功能以推动销售。他们构建的功能,在许多情况下,是由需要宣布和营销某些东西的产品经理在内部鼓动起来的。这些功能通常与用户的实际痛点无关,最终使软件变得更糟。这个循环会持续下去,直到软件变得臃肿、难用且维护成本高昂。

当您不收取许可费时,您可以专注于用户需要什么。采用是成功的关键。与其每季度发布带有投机性功能版本,并希望这些功能能证明您的客户订阅计划的合理性,不如定期发布经过实际使用验证的小改进。这是一个截然不同的方案,而且显然更胜一筹,我认为商业软件无法在这种模式下生存。您将继续看到一些利基的、垂直的应用仍然成功地保持封闭,但随着时间的推移,我认为这些应用将屈服于开放流程。

为了找到一种能够和谐融入开源革命的商业模式,我将职业生涯转向企业软件服务,但很快又回到了软件产品开发。我目前在“云”领域工作,在我看来,这是一种为数据中心托管服务增加价值的方式(从根本上来说是销售电力、冷却和骨干网访问)。无论您如何称呼它(IaaS、PaaS、SaaS 等),构建产品和在“某个地方”运行的服务都是程序员可以安全投入的长期商业模式。

Erlang 可以追溯到 1986 年的爱立信计算机科学实验室。您最初何时了解到它?是什么让您开始使用它?

我第一次了解 Erlang 是在为一个项目评估 CouchDB 时。我必须安装一种名为“Erlang”的语言,而我从未听说过它。奇怪,这种情况发生的频率有多高?所以我开始尝试使用它,并购买了 Joe Armstrong 的《Programming Erlang》,并被它深深吸引。我经常和朋友讨论那些将分布式编程概念作为事后考虑添加到语言中的缺点。而 Erlang 是一种将分布式内置于核心的语言!

我试用了一下,构建了示例,然后放了几年。后来我遇到了一个问题,我无法使用手头的内部工具(Python 和 Java)来解决。这是一个细粒度的监控问题,涉及数万个独立的监控状态。基于 posix 线程的模型随着时间的推移而崩溃,出现神秘的挂起和进程崩溃。作为一个监控程序,它必须可靠地运行,并且必须处理这个棘手的并发问题。我知道我们需要很长时间才能使用 Python 或 Java 将事情做好,这为使用像 Erlang 这样的新语言打开了可能性。

我冒险用 Erlang 重写了程序。它花费的时间比我预期的要少,而且效果非常好。那次经历让我确信使用 Erlang 的优点——无论是作为处理并发的更优模型(具有消息传递的独立进程)——还是令人惊讶地,作为一种函数式语言。

在使用函数式语言的过程中,我发现我的程序更加连贯(即更容易理解和思考)并且更稳定(错误更少)。这促使我逐渐用 Erlang 替换 Python 和 Java 来编写后端、长时间运行的程序。它们更容易编写和维护。

这是一次意义深远的经历。Erlang 绝对是我编写长时间运行、无人值守程序的首选工具。我现在也是函数式语言的坚定拥护者。

您在 CloudBees 的一天是怎样的?

在 CloudBees,我们始终首先关注开源软件。CloudBees 是 Jenkins 背后的公司——Jenkins 是一个非常成功的开源项目。我们意识到软件的质量反映了其背后社区的质量。请注意,我说的是“社区”而不是“开发团队”。在开源领域,当然有核心贡献者,但开源项目是不断变化和发展的活的有机体。像 Jenkins 这样的伟大开源项目吸引了杰出的贡献者。这些贡献者使软件变得更好。没有社区,一项技术就会消亡。我们理解这一点,并寻找能够吸引和培养人才的工具和技术。

在内部,我们使用开源开发模式。我们鼓励个人为内部项目做出贡献、提交拉取请求,并通过编写代码直接解决问题。CloudBees 热爱代码——我们对设计和计划持怀疑态度。设计和计划是很好的开始,但 CloudBees 的程序员最尊重的是可工作的代码。我们都非常认同开源的软件构建方式。毫无疑问,它可以带来更高质量、更合适的技术。而且速度也更快。

您在 OSCON 上的会议将有一个明确的目标,即教导听众开发大规模可扩展的 HTTP 服务器并全面了解 Erlang。

哪些类型的开发人员应该参加?

人们对 Erlang 很感兴趣,而本教程是了解如何使用该语言构建工作软件的好方法。教程时间当然太短,无法获得深入的知识,但在现场环境中看到事物是如何构建的,您可以在其中提问并与老师互动,这是非常宝贵的。如果您对 Erlang 感兴趣,请参加本次会议——无论您的专业是什么都没关系。重点将放在 Erlang 之道上——它是如何工作的以及为什么它很重要。

我非常喜欢教学。真的,我认为每个人都喜欢——这是关于分享你热衷的事情,谁不会自然而然地这样做呢?我努力将大局放在首位。例如,了解 Erlang 中的模式匹配是一回事。但是,了解模式匹配如何改变你的编程方式并提高软件质量——才是强大的。如果我能让一些人的大脑开窍——让他们产生一些“啊哈,这真是太酷了”的时刻,我今天就会感到内啡肽的释放。

您还有什么最后的想法要分享吗?对您的演讲进行一下预告?

参加过会议演讲或教程的任何人都应该准备好学习一些关于构建软件的非常令人惊叹的事情。Erlang 是一种非常独特的语言,使其与众不同的主题对程序员来说非常重要。进程隔离、系统导向、故障检测和恢复、分布式——这些是 Erlang 身份的核心。在我所知的任何其他编程语言中都不是这样的。具有讽刺意味的是,每个人都在语言层*之外*谈论这些主题——操作系统、虚拟机、容器、云等等。Erlang 在 20 年前就语言内部实现了这一点。即使您不学习 Erlang,了解它如何处理编程模型也将有助于您思考其他语言的程序。

当然,我也希望人们能学习 Erlang。

查看 OSCON 演讲者访谈的完整合集。

标签
Avatar
前 Opensource.com 和开放组织版主/大使。

1 条评论

Robin 关于公司内部开源文化的言论引起了很多共鸣。

我在 WSO2 Cloud 工作:http://cloud.wso2.com - 基本上我们使用和创建的所有软件都是开源的。(事实上,我还必须向 Jenkins 团队致敬 - 我们在 App Cloud 中使用 Jenkins 来实现持续集成和持续部署功能。)

然而,正如 Robin 正确提到的那样,开源不仅仅是代码。它还关乎公司内部的开放性(我们非常扁平化,每个人几乎都可以参与任何讨论和活动)以及对外部世界的开放性(我们的大部分讨论都在公共邮件列表中进行。)

这些事情对公司的工作方式产生了巨大的影响!

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.