Thinking about the next 15 years: A discussion on APISIX’s architectural foundations (OpenResty/Nginx/LuaJIT) #13124
Replies: 5 comments
-
|
Hi @mcarbonneaux, Thank you for raising this discussion publicly — these are exactly the right questions to ask when choosing infrastructure for the next 15 years, and I believe the APISIX community benefits from discussing them transparently. Full disclosure: I'm the PMC Chair of Apache APISIX and one of its original creators, so my perspective inevitably carries personal bias. I'll try to be as honest as I can.
My long-term vision is to introduce Rust as an embedded layer within APISIX. Rust would handle the areas where we're currently blocked by upstream dependencies — gRPC, AI-native features, and modern protocol support — without requiring a full rewrite of APISIX's core architecture. This gives us a pragmatic path: keep the battle-tested Nginx/Lua foundation for what it does well, while using Rust to break through the ceiling where that foundation falls short. This isn't about replacing everything overnight. It's about making sure APISIX can keep pace with what users need from an API Gateway and AI Gateway over the next decade, without being held hostage by upstream decisions we don't control. Mathieu, what does your ideal evolution path look like? I'm curious whether you see a gradual, hybrid approach like this as practical, or whether you'd prefer a cleaner break from the Nginx/Lua stack entirely. |
Beta Was this translation helpful? Give feedback.
-
|
I won’t comment on the other parts, but on the developer-friendliness aspect, one thing that deserves recognition is that the source code of many built-in apisix lua plugins is itself a major reason why many developers and enterprise users appreciate APISIX. https://github.com/apache/apisix/tree/master/apisix/plugins For requirements that can be reasonably addressed through the plugin mechanism, users are not limited to black-box features. They can study how built-in plugins are implemented, learn from real production-grade examples, and now even use LLMs to accelerate their understanding of the development workflow. |
Beta Was this translation helpful? Give feedback.
-
|
Thank you for these incredibly honest and transparent answers. It is rare and refreshing to see project leadership acknowledge the "supply chain risk" of its own foundations (OpenResty/LuaJIT) so clearly. I completely agree that the built-in plugins are APISIX's greatest asset. They represent a goldmine of production-grade logic. However, looking at the next 15 years, the critical challenge is: How do we preserve this immense functional value while migrating to a core that the next generation of engineers can actually maintain? The "Frankenstein" Risk & The Talent GapWhile the plan to embed Rust to bypass Nginx limitations is technically exciting, I have a major concern regarding the human factor and architectural debt.
If we want APISIX to be the standard in 2040, we should aim for a foundation that the average cloud-native engineer can contribute to. Two Strategic Paths for the Next Decade1. The "Sovereign Core" (Go/Lura + Lua VM)Instead of adding external runners that introduce latency, APISIX could evolve toward a core based on Lura (CNCF).
2. The "Ecosystem Play" (Control Plane for AI-Native Envoy)A cleaner break from the "web-server" legacy, especially considering the rise of AI Gateways:
ConclusionI’m curious: is the Rust-patch approach considered a permanent bridge, or is there a long-term appetite within the PMC for a deeper architectural shift (like moving to a Go or Envoy-based core)? Pragmatically, I believe that a "clean break" toward a foundation with a larger talent pool and CNCF governance is the only way to ensure APISIX doesn't become a "legacy" project itself by 2035. |
Beta Was this translation helpful? Give feedback.
-
|
To contribute to the debate about the evolution from LuaJIT towards more modern ecosystems like Go or Rust, here are a few industry examples and technical points on why Go is a strategic candidate for APISIX’s next decade: 1. The "De Facto" Cloud StandardThe entire modern infrastructure stack is built on Go: Kubernetes, Docker, and Podman are all Go-based. It’s where the talent, the libraries, and the community are. Many industry leaders are already making this shift for better maintainability, as seen in [WSO2’s transition from Java to Go](https://wso2.com/library/blogs/goodbye-java-hello-go/). 2. Pragmatic Migration: The GopherLua BridgeWe don't have to break the ecosystem. A Go-based architecture offers a unique, incremental path for transition:
3. The Strategic Crossroads: Envoy vs. Native GoWhether APISIX chooses to build a native Go engine (like KrakenD) or orchestrate Envoy, Go remains the superior choice:
4. Modern Extensibility & Multi-Runtime SupportA Go core opens the door to a multi-tiered extension model that LuaJIT cannot match:
ConclusionBy adopting Go, APISIX can move from a "scripts-on-top-of-C" model to a modern, type-safe, and highly concurrent platform. Aligning with the Go + WASM ecosystem is the most pragmatic way to attract the next generation of contributors and maintain leadership for the next 15 years. |
Beta Was this translation helpful? Give feedback.
-
|
In other to ensure APISIX remains the leader for the next decade, we should consider a strategic shift toward a Go-based Control Plane orchestrating an Envoy-based Data Plane. This approach provides a pragmatic bridge between our Lua heritage and the modern Cloud-Native ecosystem. 1. Native Efficiency: Envoy Filters vs. Lua PluginsBy adopting Envoy, we can offload 60% of current Lua plugins (JWT, Rate-limiting, CORS, Observability) to native C++ filters. This drastically reduces CPU overhead and eliminates the "Stop-the-World" Garbage Collection pauses inherent to LuaJIT, making the gateway significantly more predictable under high load. 2. GitOps-Ready with Envoy GatewayTransitioning to an Envoy Gateway model makes APISIX GitOps-native by default. Using Go to build the APISIX Controller (or a Meta-Operator) allows us to:
3. Preserving the Lua Legacy: The ext_proc StrategyWe don't need to abandon our existing 80+ plugins. We can maintain complex or proprietary logic by wrapping it in a Go-based
4. Future-Proofing with AI Envoy GatewayThe rise of AI requires specialized gateway capabilities (Prompt Guard, AI Rate-limiting, LLM Caching). By moving to Go/Envoy:
Conclusion: Why Go is the Only Pragmatic ChoiceWhile Rust offers memory safety, Go is the language of the Cloud infrastructure. By building the new APISIX Controller and Meta-Operators in Go, we attract a massive pool of contributors and ensure perfect integration with the tools that define modern DevOps. This architecture—Go for Control, Envoy for Speed, and WASM/ext_proc for Flexibility—is the blueprint for APISIX's continued leadership for the next 15 years. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi everyone,
I am currently evaluating several API Gateway solutions (APISIX, Kong, and Envoy-based gateways) for a massive infrastructure overhaul. My goal is to replace a custom, home-made API Gateway that has been in production for 15 years. To give you an idea of the scale, this legacy system currently handles over 110 billion API calls per years. Since our next choice will anchor our infrastructure for the next decade or more, I am performing a deep dive into the long-term viability and "supply chain" health of each project.
While APISIX offers an impressive feature set, I’d like to start a transparent discussion on a few strategic points regarding its architectural foundations:
1. The "Post-F5" Nginx & OpenResty Reality
Nginx has been a rock-solid backbone for years. However, since the F5 acquisition and the departure of its original founders, the Open Source project appears to be in a more conservative "maintenance mode." Similarly, OpenResty has a very high "bus factor" and has seen limited core activity recently. For a project intended to last another 15 years at a scale of billions of requests, is it risky to remain tied to an upstream foundation that is no longer the primary driver of networking innovation?
2. The Stagnation of LuaJIT and Talent Scarcity
APISIX’s performance is world-class, but it relies heavily on LuaJIT. Beyond the fact that LuaJIT development is largely stagnant, there is a significant human factor: it is becoming increasingly difficult to find experts who can develop, debug, and optimize complex logic in Lua within an asynchronous Nginx environment. Most modern engineering talent is gravitating toward Go, Rust, or Wasm. How does APISIX plan to address this talent gap and the "frozen" nature of its runtime over the next decade?
3. Native Support for Modern Protocols (gRPC & AI/MCP)
We are entering an era of deep, stateful, and bi-directional streaming:
While I know these can be implemented via Lua plugins, I am concerned about the architectural overhead and technical debt of managing these modern, stateful requirements on top of a legacy web-server model.
My question to the maintainers:
If you were in my position, looking to migrate a system handling 110 billion calls per years to a solution that must remain "up-to-date" until 2040, how do you see the evolution of the APISIX Data Plane? Is there a roadmap to eventually decouple from these aging dependencies (Nginx/LuaJIT) or to move toward a more modern, community-driven engine?
I am looking for a solution that is as future-proof as possible, and I’d love to hear your vision for the next 15 years of APISIX.
Best regards,
Mathieu
Beta Was this translation helpful? Give feedback.
All reactions