NGINX的未来:回归开源初心

NGINX | 2022年8月23日

快乐的时光总是过得飞快,令人难以相信NGINX如今已经18岁了。回首过去,社区与公司携手取得了许多成就。最近,我们迎来了一个重要的里程碑:截至本文撰写时,全球55.6%的网站由NGINX提供支持(使用我们的软件或基于NGINX构建的产品)。按市场份额计算,我们也是广受采用的Web服务器。我们对此深感自豪,也感谢NGINX社区以实际行动给予我们的充分信任。

我们也日益认识到,开源软件仍在不断改变世界。使用开源代码构建的应用所占比例越来越高。从Bloomberg终端和新闻服务,到Washington Post、Slack、Airbnb、Instagram和Spotify,全球数千个广为人知的品牌和数字资产都依靠NGINX Open Source为其网站提供支持。就我个人而言,白天用Zoom开工作会议,晚上看Netflix,我一天中可能有80%的时间都在使用基于NGINX构建的应用。

图片中写有“开源软件改变了世界”,并展示了知名开源项目的徽标

NGINX只是开源成功历程中的一部分。如果没有众多出色的开源项目,从Kubernetes和容器到Python和PyTorch,再从WordPress、Postgres到Node.js,我们就无法构建数字世界,更无法日益深入地控制和管理物理世界。开源改变了我们的工作方式。GitHub上有超过7,300万名开发者,他们共合并了超过1.7亿个拉取请求(PR)。其中很大一部分PR来自采用开源许可证的代码仓库。

我们非常高兴NGINX在开源的兴起与成功中发挥了如此重要的作用,并计划继续推动开源发展、回馈开源社区。同时,我们也需要审视自身的开源工作,顺应开源运动的持续演进。企业通过开源获利的商业模式有时会引发争议。因此,NGINX始终力求明确区分开源内容与商业内容。最重要的是,我们绝不会对软件开源版本中已包含的功能或能力收费。

开源正在快速演进,NGINX也在与时俱进

我们现在意识到,需要认真审视对开源的承诺,为开源产品提供更多价值和功能,同时也要提升商业产品的竞争力。世界已经发生变化,我们不能再像过去那样继续对相同的功能收费,因为一些过去仅在商业产品中提供的功能,如今已成为开源开发者的基本需求。我们也知道,开源安全是开发者最关心的问题之一。因此,我们的开源项目需要达到与商业产品同等的安全水平。

我们也必须正视现实。过去,我们内部常说开源软件由于功能不足或缺乏可扩展性,尚未真正达到生产就绪状态。但一段时间以来,现实一直在证明这种说法并不正确:已有数以万计的组织在生产环境中运行NGINX开源软件。这是一件好事,因为这表明他们对我们的开源版本充满信心。我们可以在此基础上继续发展。

事实上,我们一直在通过核心产品践行这一点。对于那些认为原有NGINX产品系列已显陈旧的人,我想说,您还不够了解我们的最新进展:

  • 对于核心NGINX Open Source软件,我们将继续添加新特性和功能,并支持更多操作系统平台。对Web应用和流量的安全性与可扩展性至关重要的两项功能,HTTP3和QUIC,将在我们发布的下一个版本中推出。
  • 在NGINX生态中,有一个低调却极具创新活力的领域,那就是NGINX JavaScript(njs)。它支持开发者将JavaScript代码集成到NGINX HTTP和TCP/UDP(Stream)模块的事件处理模型中,并扩展NGINX配置语法,以实现复杂功能。用户借此实现了许多出色的功能,从创新的缓存清除和标头操作,到支持MQTTv5等更高级的协议。
  • 我们的通用Web应用服务器NGINX Unit由NGINX Open Source的原作者构想,即Igor Sysoev,并在持续演进。Unit在我们对现代应用和现代应用堆栈的愿景中占据重要地位,这一愿景远不止我们重点关注的数据平面和安全领域。在开发Unit的过程中,我们正在重新思考如何面向不断演进的Web构建应用架构,并提供更多云原生功能,以支持分布式和高度动态的应用。

现代应用参考架构

我们希望继续探索和推进各种方法,帮助核心开发者群体更高效、更轻松地部署现代应用。去年,在Sprint 2.0上,我们发布了 the NGINX Modern Apps Reference Architecture(MARA)。很高兴的是,它最近已以1.0.0版本正式发布。MARA是一套经过精心选择、采用明确技术方案的工具栈,其中包括Kubernetes。我们将这些工具集成在一起,以便轻松地以代码形式部署基础设施和应用架构。只需点击几下,即可配置并部署MARA参考架构。该架构集成了构建生产级云原生环境所需的一切,包括安全、日志记录、网络、应用服务器、配置和YAML管理等。

展示NGINX Modern Apps Reference Architecture拓扑结构的示意图

MARA采用模块化架构,这是其设计初衷。您可以根据自身需求,从现有模块中设计出真正能够运行应用的定制参考架构。社区支持我们的构想,我们也与多家创新型技术公司围绕MARA展开了合作。Sumo Logic为MARA增添了日志记录功能,Pulumi则贡献了用于自动化和工作流编排的模块。我们希望借助MARA,任何开发者都能在几分钟内启动并运行一套完整的Kubernetes环境,其中包含所有必要的配套组件,安全可靠,并可随时部署应用。这只是一个例子,说明我们如何汇聚各方力量,共同推动行业中的一项重大计划。

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

每年,我们都会在虚拟用户大会NGINX Sprint上对来年作出新的承诺。今年也不例外。未来12个月的承诺可以概括为三个词:现代化、优化和扩展。我们会确保这些不只是商业流行语;我们已针对每一项制定了切实可行的计划,也欢迎大家监督我们兑现承诺。

承诺1:推动工作方式、社区参与和社区管理现代化

显然,我们正在快速推进代码现代化,并推出新的产品和项目。但现代化不只是代码层面的工作,还包括代码管理、提高决策透明度,以及我们参与社区的方式。NGINX Open Source代码库过去一直使用Mercurial版本控制系统,但我们认识到,如今的开源世界以GitHub为主要平台。今后,所有NGINX项目都将在GitHub上创建和托管,因为开发者和开源社区都在这里开展工作。

我们还将推动NGINX项目治理和管理方式的现代化。我们承诺以更开放的态度接纳贡献,提高项目维护工作的透明度,并以更亲和的方式与社区互动。我们将遵循现代开源工作的通行规范,重塑在GitHub上的社区形象,为所有项目添加行为准则,并认真听取社区反馈。为践行这一现代化承诺,我们将新增一个Slack上的NGINX社区频道。我们将安排自己的专家在该频道解答问题。社区成员也可以通过日常工作中已经使用的这款消息工具互相帮助。

承诺2:优化开发者体验

开发者是我们的主要用户。他们构建和创建的应用成就了今天的我们。我们始终秉持一个理念:NGINX易于使用。事实也基本如此,安装、启动和配置NGINX并不需要耗费数天时间。尽管如此,我们仍可做得更好。通过缩短学习曲线并简化配置流程,我们可以帮助开发者更快地从产品中获得价值。这里的“价值”是指将真正有价值的代码部署到生产环境中,仅此而已。我们将简化安装体验、改进文档,并扩大社区论坛的内容覆盖面、充实论坛内容,从而全面改善开发者体验。

我们还将推出一项与NGINX Open Source原生集成的新SaaS服务,帮助您在几秒内充分发挥其实用价值。无需注册,没有访问门槛,也没有付费墙。这项SaaS服务将永久免费使用。

此外,我们认识到,许多如今被开发者视为基本要求的关键功能,在NGINX Open Source和NGINX Plus中仍需付费才能使用。例如,DNS服务发现对现代应用至关重要。我们承诺将这些关键功能添加到NGINX Open Source中,供用户免费使用。我们尚未确定要迁移的全部功能,因此希望听取您的意见。请告诉我们如何优化您的开发体验。我们会认真倾听。

承诺3:扩展NGINX的强大功能与能力

尽管NGINX如今广受欢迎,但我们深知,要在十年后依然发挥同样重要的作用,就必须不断改进。我们的宏伟目标是:打造一套完整的NGINX应用和配套能力,用于大规模管理和运行现代应用。

迄今为止,NGINX主要用作第7层数据平面。但要让NGINX正常运行,开发人员必须围绕它搭建大量配套组件,包括接入自动化和CI/CD功能、配置适当的日志记录、添加身份验证和证书管理等。我们希望进一步扩展NGINX,让测试和部署应用的每项主要需求都能由一个或多个与NGINX无缝集成的优质开源组件来满足。简而言之,我们希望在技术栈的每一层提供价值,并免费开放这些能力。例如,如果使用NGINX Open Source或NGINX Plus作为API网关,我们希望确保您拥有管理和扩展这一用例所需的一切,包括API导入、服务发现、防火墙、策略规则和安全功能,并且都可选择优质的开源方案。

总而言之,我们的愿景是围绕NGINX构建一个生态系统,涵盖应用管理和部署的方方面面。MARA是构建这一生态系统的第一步,我们希望继续吸引更多合作伙伴。我的目标是,到2022年底,在NGINX环境中,预先完成所有连接配置的应用能够在几分钟内启动并运行,同时配备一整套可立即投入使用的功能,包括分布式跟踪、日志记录、自动扩缩容、安全和CI/CD挂钩。

隆重推出Kubernetes API Gateway、全新Amplify和NGINX Agent

我们致力于实现这一切。以下是兑现我三项承诺的三个初步行动。

  1. 今年早些时候,我们推出了NGINX Kubernetes Gateway<.htmla>。该产品基于Kubernetes API Gateway SIG的参考架构。此举推动了我们产品系列的现代化,并使其与云原生技术的持续演进保持同步。NGINX Kubernetes Gateway也是我们向社区释放善意的一种方式。我们意识到,此前同时推出商业版和开源版Kubernetes Ingress控制器,使情况变得复杂。这两款控制器都不同于社区的Ingress解决方案(同样基于NGINX构建)。过多的选择让社区感到困惑,也使我们陷入不利局面。显然,Gateway API将取代Kubernetes架构中的Ingress控制器。因此,我们正在调整策略,将仅以开源产品形式提供的NGINX Kubernetes Gateway作为Kubernetes网络工作的重点,并与不断演进的标准保持同步。它将与其他NGINX产品集成并扩展至这些产品,同时优化Kubernetes上的开发者体验。
  2. 几年前,我们推出了NGINX Amplify,这是一项面向NGINX集群的监控和遥测SaaS服务。我们当时并未大力宣传,但仍有数千名开发者发现了它,并一直使用至今。Amplify过去免费,现在也仍然免费。为履行现代化承诺,我们正在为Amplify增添一系列新功能,旨在让它成为值得信赖的助手,帮助您实时、大规模地部署、监控和管理NGINX产品。Amplify不仅能监控NGINX实例,还能帮助您配置NGINX部署、对其应用脚本并排查问题。
  3. 我们即将推出NGINX Agent,这是一款轻量级应用,可与NGINX Open Source实例一同部署。它将包含此前仅在商业产品中提供的功能,例如动态配置API。借助NGINX Agent,您将能够以更高的灵活性,将NGINX Open Source用于更多用例。它还将提供更精细的控制功能,帮助您扩展应用和基础设施。Agent可帮助您在管理、部署和配置NGINX时做出更明智的决策。我们正在全力开发NGINX Agent。未来几个月,我们将发布博客宣布其正式推出,敬请关注!

展望未来

In a year, I hope you ask me about these promises. If I can’t report real progress on all three, then hold me to it, please. And please understand – we are engaged and ready to talk with all of you. You are our best product roadmap. Please take our annual survey. Join NGINX Community Slack and tell us what you think. Comment and file PRs on the projects at our GitHub repo.

这将是精彩纷呈的一年,有望再创佳绩。我们期待听到更多来自您的声音,也请期待我们分享更多信息。帮助我们更好地为您提供支持。这将是精彩纷呈的一年,有望再创佳绩。我们期待听到更多来自您的声音,也请期待我们分享更多信息。


分享

关于作者

相关博客文章

NGINX Plus R26 正式发布
NGINX | 2022/02/15

NGINX Plus R26 正式发布

NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
NGINX | 2022/02/10

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击

gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
NGINX | 2021/09/13

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划

了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。

NGINX Plus R19 正式发布
NGINX | 2019/09/03

NGINX Plus R19 正式发布

NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。

NGINX现已正式加入F5
NGINX | 2019/05/09

NGINX现已正式加入F5

NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。

使用NGINX和NGINX Plus实现高性能缓存
NGINX | 2016/08/24

使用NGINX和NGINX Plus实现高性能缓存

我将介绍NGINX在内容缓存和性能方面的工作原理,并分享一些控制NGINX内容缓存方式的技巧。