NGINX 的未来:回到开源之源

快乐的时光总是稍纵即逝,转眼间 NGINX 已经 18 岁了。在过去的 18 年里,社区和公司共同完成了很多事情,而最近,我们又达成了一个里程碑目标——截至目前,55.6% 的网站是由 NGINX 驱动的(要么是由 NGINX 驱动,要么是由建立在 NGINX 之上的产品驱动),我们还是市场占有率第一的 web 服务器。因此,我们感到非常自豪,也很感谢 NGINX 社区为我们投下了这重要的一票。

我们愈发认识到,开源软件在持续改变着这个世界。越来越多的应用程序是用开源代码构建的。从彭博终端/新闻社、《华盛顿邮报》、Slack、Airbnb、Instagram 到 Spotify,数以千计的世界知名品牌和企业使用 NGINX 开源软件来驱动他们的网站。我白天用 Zoom 参加会议,晚上使用 Netflix 进行娱乐消遣,每天大概 80%的时间都在使用基于 NGINX 建立的应用程序。

NGINX 只是开源项目大获成功的其中一个元素。如果没有优秀的开源项目,比如 Kubernetes、Python 和 PyTorch 的容器、WordPress、Postgres 和 Node.js,我们根本无法构建现在的数字世界,更不用说掌控现实世界。开源改变了我们的工作方式。GitHub 上有超过 7300 万名开发者,他们总共合并了超过 1.7 亿个拉动请求(PR),这些 PR 中的很大一部分是在具有开源许可证的代码库上。

我们很高兴 NGINX 在开源的兴起和成功中发挥了如此重要的作用。我们计划在保持它的发展的基础上将它发扬光大。同时,我们需要对开源工作进行反思,不断调整,适应开源的发展。因开源而获利的公司的商业模式有时会引起争议,因此 NGINX 一直试图明确地区分开源和商业。最重要的是,这意味着永远不会对软件的开源版本中的功能收费。


开源和 NGINX 都在不断发展

我们要认真思考自身对开源的责任,在开源产品中提供更多的价值和功能,同时提高自身在商业领域里的竞争力。我们不能止步不前,继续用从前的产品收费,因为世界已经发生了变化,一些过去只在我们的商业产品中的功能现在成了开源开发人员桌面上的关键功能。我们也知道,开源安全是开发人员的首要考虑因素,因此,我们的开源项目应和商业产品一样安全。

我们也必须了解现实。我们曾经认为开源并不真正适合生产,因为它缺乏功能或扩展性,但现在事实证明了我们的想法是错误的:成千上万的公司正在生产环境中运行 NGINX 开源软件,这表明他们对我们的开源版本信心十足,所以这是个好事儿,我们可以在此基础上继续努力。

有人说初始的 NGINX 产品系列已经老掉牙了,但其实我们在持续不断地优化我们的核心产品,希望大家能密切关注我们的产品:

  • 对于核心的 NGINX 开源软件,我们在不断地为其增加新的特性和功能,使其支持更多的操作系统平台。为了优化 web 应用和流量的安全性和可扩展性,我们在下一版本中推出了 HTTP3 和 QUIC 这两个关键功能。
  • NGINX 宇宙中有一个不引人注目但创造力非凡的角落:NGINX JavaScript (njs),它可以让开发人员将 JavaScript 代码集成到 NGINX HTTP 和 TCP/UDP(流)模块的事件处理模型中,并扩展 NGINX 配置语法来实现复杂的功能。我们的用户已经做了一些非常好的贡献,例如创新的缓存清理、标头操纵以及支持更先进的协议,如 MQTTv5。
  • 我们通用的 web 应用服务器 NGINX Unit 是由 NGINX 开源的原作者 Igor Sysoev 构思的,而且还在继续发展。Unit 在我们对现代应用和现代应用堆栈的未来构想中占据重要的位置,远远超出了我们对数据平面和安全的初步关注。随着我们对 Unit 的开发,我们正在重新思考应该如何为不断发展的网络架构应用程序,使其具有更多的云原生功能以及更多为分布式应用和高动态的应用程序而设计的功能。


现代应用参考架构

我们希望继续试验并推进各种方法来帮助我们的核心开发人员群体更高效、更轻松地部署现代应用程序。去年的 Sprint 2.0 大会上,我们发布了 NGINX 现代应用参考架构MARA),相应的 1.0.0 版本最近也已发布。 MARA 是一套精心设计而成的工具堆栈,其中也包括 Kubernetes,我们希望通过这样的配置轻松实现基础设施与应用程序架构的“即代码”式部署。只需单击几下,用户就可以配置并部署 MARA 参考架构,并享用其中集成的一切生产级云原生环境创建选项——安全性、日志记录、网络、应用程序服务器、配置和 YAML 管理等,可谓无所不包。

MARA 是一套由模块化思维设计而成的架构,大家可以按自己的方式使用,并利用现有模块设计出符合实际应用需求的定制化参考架构。社区也热情支持我们的探索,我们已经与多家创新技术公司就 MARA 达成合作。Sumo Logic 已经将自家日志记录功能引入 MARA,Pulumi 则贡献了用于自动化和工作流编排的模块。我们希望在 MARA 的帮助下,每一位开发人员都能在几分钟内启动并运行起完整的 Kubernetes 环境,涵盖所有支持部件、安全机制以及应用程序部署条件,而这还只是我们集体创新成果中的一小部分。


NGINX 的未来:现代化、优化、扩展

在每年的用户线上大会 NGINX Sprint 中,我们都会给出面向下一年的新承诺。今年也是一样,我们对接下来十二个月的承诺可以概括成三个词:现代化优化扩展。我们的承诺当然不会流于表面,我们为每个项目都制定了大量计划,也将努力兑现这三大承诺。


承诺一:推动方法、现有成果和社区管理的现代化

我们正在快速更新代码并引入新的产品和项目,但需要进行现代化升级的可不仅仅是代码,还包括代码管理、决策透明度以及整个社区的运营水平。虽然之前 NGINX 开源代码库一直运行在 Mercurial 版本控制系统上,但我们发现 GitHub 才能承载整个开源世界的环境。因此在未来,所有 NGINX 项目都将生于 GitHub、托管于 GitHub,契合开发者和开源社区的习惯。

我们还将推动 NGINX 项目管理 / 治理方式的现代化。我们承诺进一步提高对贡献接纳的开发度,提升管理透明度,让整个社区更加友好。我们将遵循开源工作的所有惯例,在 GitHub 上重建现有成果,将这些准则引入 NGINX 所有项目当中,同时密切关注社区反馈。我们还将在 Slack 上创建 NGINX 社区频道,安排我们自己的专家为开发人员解答疑问。当然,各社区成员之间也可以通过该频道互相帮助,整个体验就是大家熟悉的 Slack 味道。


承诺二:优化开发者体验

开发人员是我们的主要用户群体,正是他们创建的应用程序让 NGINX 能够走到今天。我们一直在强调 NGINX 的易用性原则,要求保证 NGINX 能够快速安装、启动和配置。但我们完全可以做得更好,例如通过调整学习曲线、简化配置过程,我们能够加快开发者获得产品体验和实现价值的速度。这里的“实现价值”,是指在生产环境中部署真正有价值的代码。我们会简化安装流程、改进说明文档,并进一步增加社区论坛的话题覆盖面,为广大开发人员带来更好的使用体验。

我们还将发布新的 SaaS 产品,它与 NGINX 开源版本原生集成,能帮助大家在几秒内快速使用 NGINX。无需注册、不必付费,而且我们承诺这项 SaaS 服务永远免费开放。

另外,我们还意识到开发者们高度依赖的不少关键功能目前被划进了付费版本当中。例如,DNS 服务发现对于现代应用程序至关重要,但只面向 NGINX Plus 付费用户开放。我们承诺将这些关键功能纳入 NGINX 开源版本,真正实现全面免费开放。目前我们还在筹划具体应免费开放哪些功能,希望大家能多提建议和意见,告诉我们该如何优化开发者体验。您的声音,我们一直用心在听。


承诺三:扩展 NGINX 的功能和作用

NGINX 目前确实很受欢迎,但要想让它在十年后仍屹立不倒,我们就需要不断优化项目。因此,我们提出了颇有抱负的目标:希望创建完整的 NGINX 应用程序与支持功能集,来大规模管理和操作现代应用程序。

迄今为止,NGINX 主要作为 L7 数据平面层使用。但开发者需要在 NGINX 周围搭起很多“脚手架”,才能让它正常发挥作用。比如需要配合连接自动化与 CI/CD 功能、设置正确的日志记录方案,添加身份验证与证书管理等等。我们希望对 NGINX 做出进一步扩展,为 NGINX 无缝集成一个或多个高质量开源组件,从而满足应用程序测试和部署中的各种常见需求。简而言之,我们希望能在堆栈的每个层级都创造价值,并向开发者免费开放。例如,如果大家使用 NGINX 开源版或者 NGINX Plus 作为 API 网关,我们希望能同步向您提供管理和扩展该用例的一切——API 导入、服务发现、防火墙、策略规则和安全性等等,且全部选择高质量的开源工具选项。

总而言之,我们的梦想是围绕 NGINX 构建一个全面覆盖应用程序管理及部署需求的完整生态系统。MARA 正是建立这套生态的第一步,我们也希望能继续吸引新的合作伙伴加入。我们的目标是到今年年底,实现在几分钟内通过 NGINX 环境启动并运行一个完整的预连接应用程序,同时配备完整的分布式跟踪、日志记录、自动规模伸缩、安全保护、CI/CD 挂钩等功能。


介绍 Kubernetes API 网关、全新的 Amplify 和 NGINX 代理

为了向大家证明我们践行承诺的决心,这里要公布三笔“预付款”:

  1. 今年早些时候,我们基于 Kubernetes API Gateway SIG 参考架构,推出了 NGINX Kubernetes Gateway。这既实现了产品系列的现代化升级,也让我们能够与云原生趋势保持一致。NGINX Kubernetes Gateway 也是我们向社区伸出的橄榄枝。在我们为 Kubernetes 创建商业和开源 Ingress 控制器时,就已经意识到这项工作非常复杂,而且与社区版 Ingress(同样基于 NGINX 构建)有很大区别。这种差异会提高社区开发者的理解门槛,影响 NGINX 的生态健康。 很明显,Gateway API 终将取代 Kubernetes 架构中的 Ingress 控制器。因此,我们决定改变既往方法,将之前仅在开源版本中提供的 NGINX Kubernetes Gateway 作为下阶段的 Kubernetes 网络开发重点(也是为了与不断发展的行业标准保持同步)。该网关将被集成并扩展至其他 NGINX 产品,优化 Kubernetes 上的开发者体验。
  2. 几年前,我们推出了 NGINX Amplify,一款用于 NGINX fleet 监控和遥测的 SaaS 产品。虽然没有大力宣传,但 Amplify 仍然得到众多开发者的喜爱和支持。无论过去还是现在,Amplify 都免费供大家使用。作为现代化承诺的一部分,我们正在为 Amplify 添加更多新功能,希望能让它成为值得依赖的可靠工具,帮助大家实现对 NGINX 产品的规模化启动、监控与管理。除了监控 NGINX 实例之外,Amplify 还将帮助您完成 NGINX 部署配置、脚本应用以及故障排查等日常任务。
  3. 我们正在着手发布 NGINX Agent。通过这款能够与 NGINX 开源实例一同部署的轻量级应用程序,大家可以享受到多种以往仅供商业版使用的功能,例如动态配置 API。使用 NGINX Agent,大家可以在更多用例中使用 NGINX 开源版,获得更大的灵活性空间。其中还将囊括更为精细的控件,帮助大家扩展应用程序与基础设施。Agent 将帮助大家在 NGINX 的管理、部署和配置方面做出更明智的决策。我们正在努力推进开发工作,并将在完成后第一时间向大家汇报。


展望未来

一年为期,欢迎大家监督我们是否践行了承诺。我们也期望听到您的真实需求,并加入 Slack 上的 NGINX 社区频道。另外,也欢迎大家在我们的 GitHub 仓库上发表评论、提交 PR。

这将是伟大的一年。我们期待大家更多的反馈,也希望大家继续支持我们。




原文作者:Rob Whiteley
原文链接:https://www.nginx.com/blog/future-of-nginx-getting-back-to-our-open-source-roots/
推荐阅读
相关专栏
开源技术
106 文章
本专栏仅用于分享音视频相关的技术文章,与其他开发者和声网 研发团队交流、分享行业前沿技术、资讯。发帖前,请参考「社区发帖指南」,方便您更好的展示所发表的文章和内容。