Dynamic Modules: A New Era of High-Performance Envoy Extensions
summary
Runtime-loadable shared libraries let Envoy run extensions that benchmark almost identical to native C++ in production while avoiding rebuilds. Modules expose a C ABI, provide access to uncopied buffers, full HTTP filter events, metadata, stats, scheduler APIs for async (spawn threads and resume on workers), and native cluster callouts, but lack streaming callouts and are currently tied to specific Envoy versions. Official Rust SDK and experimental Go SDK exist, and a Python ASGI server prototype (Pyoid) on dynamic modules reports good performance. Available since 1.34.
AI-written summary · about
chapters (11)
- 0:00Introduction
- 0:45Why dynamic modules were needed
- 2:33What dynamic modules are
- 4:00Dynamic modules feature completeness
- 5:30Building dynamic modules
- 6:55Loading and configuring modules
- 7:36Real-world use cases
- 8:42Future work and limits
- 9:45Choosing extension mechanism
- 10:28Resources and getting started
- 10:48Q&A
related talks
07mLightning Talk: Dynamic Modules: A New Era of High-Performance Envoy Extensions
13mThe Next Generation of Envoy Extensibility: Dynami...
08mLightning Talk: Beyond Lua: Lightweight Envoy Extension With JavaScript
37mExtending Envoy with WebAssembly
05mExtending Envoy With WebAssembly
21mDeep Dive: Envoy
34mIntro: Envoy
33mGet to know Envoy - the modern proxy for cloud-native infrastructure - Baptiste Collard
