俄罗斯人 Igor 在 15 年前编写并开源了 NGINX,设计精良的架构,极致性能的代码,开启了高性能 web sever 的新时代,让 C10K、C100K 从可能变为了现实。
技术的降维攻击,让 NGINX 轻松超越了同时期的 Apache 和微软 IIS,NGINX 的市场占有率也开始迅速增长:
2011 年,NGINX Inc. 成立,开始了商业化的尝试。并在两年后推出了其主打产品 NGINX Plus:提供部分配置动态化和运行状态可视化。有其庞大的开源用户基数做支撑,NGINX 的日子想必过得很滋润,人数也逐渐扩张到 200 多人。
随着微服务和 k8s 的技术变革,传统的南北向流量逐渐被弱化,东西向流量的处理变得越来越重要。一批云原生的 反向代理/负载均衡/API网关 开源项目如雨后春笋般冒了出来,蚕食着 NGINX 的市场:
其中 Envoy 已经从 CNCF(云原生计算基金会) 毕业,虽然性能、功能和稳定性都不如 NGINX,但项目进度、开源社区、活跃贡献者、周边生态等都强很多。举个最简单最基本的例子,如果一个开发者发现了 NGINX 的 bug,没有办法通过 Github 提交 issue 或者 PR,因为 NGINX 在 Github 上只有一个只读镜像,你需要通过邮件列表和 Mercurial 这套它独有的体系来沟通。对于开发者来说,这是非常不友好的。
面对微服务的架构变迁,NGINX 也有一些尝试,比如 NGINX Unit、NGINX Controller 和 Ingress Controller,但这些产品都有 NGINX Plus 的包袱,一直没有把动态上游、配置动态生效这些核心的功能开放出来。对于使用社区版本的公司来说,NGINX 依然是修改完配置需要 reload 才能生效的传统 web server,不能适应快速的变化,这在微服务环境下是不可接受的。
NGINX Inc. 在 2018 年 6 月进行了 C 轮的融资,共 4300 万美元,这笔钱的主要目的是加速在微服务上的投入。
但为时已晚。动态,已经成为新一代 web server 的标准配置。诞生于 2007 年的 OpenResty,以 NGINX 强大高效的网络库为基础,天生就以 LuaJIT 的动态为主打,营造了自己的生态;以 OpenResty 为基础的 KONG,更是扛起了新一代 API 网关和 Service Mesh 的大旗。NGINX 的重要性依然存在,但在被逐步下沉,远离业务。
传统的南北向流量,在F5 收购 NGINX 后,基本一统天下。而微服务带来的东西向流量,各种开源项目方兴未艾,有把 NGINX 当做基础网络库用的,也有自立山头用 Go 新造的,热闹非凡。
而且,性能现在已经不是企业最关心的问题。具备动态能力的新一代 web server,迟早会替代 NGINX,虽然后者的性能无可匹敌。
所以 NGINX 被 F5 收购后,是否会改变开源策略,并不是一个紧要的问题。即使后续版本闭源了,我们也不缺少更好用的替代者。
欢迎来到微服务时代,以及全动态的 web 服务器时代。