Skip to content

Publish a Proxy-Wasm roadmap#74

Open
martijneken wants to merge 8 commits intoproxy-wasm:mainfrom
martijneken:roadmap
Open

Publish a Proxy-Wasm roadmap#74
martijneken wants to merge 8 commits intoproxy-wasm:mainfrom
martijneken:roadmap

Conversation

@martijneken
Copy link
Copy Markdown

Share in-flight efforts and outline the next high-priority features.

This PR is a request for comment. Please tell us what's missing!

This is sure to be a living document, subject to much discussion.

Signed-off-by: Martijn Stevenson <mstevenson@google.com>
Signed-off-by: Martijn Stevenson <mstevenson@google.com>
Signed-off-by: Martijn Stevenson <mstevenson@google.com>
Signed-off-by: Martijn Stevenson <mstevenson@google.com>
Comment thread docs/Roadmap.md Outdated
Comment thread docs/Roadmap.md Outdated
map to components?
* What are the API gaps? How should we evolve Proxy-Wasm to become
WASI-compatible? What are good incremental steps?
* Are there any performance gaps?
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@martijneken FYI, it's by no means a ready solution, but I started playing with some kind of shim that converts proxy-wasm plugin into WASI. In the ideal world, in the future once it's more or less ready, we can just use it to build a proxy-wasm plugin code into a wasi-http proxy component. The goal is to smooth migration from proxy-wasm to WASI by providing some level of backward compatibility for existing proxy-wasm code.

If you think it's interesting, you can find work in progress in https://github.com/krinkinmu/wasi-http and I'm happy to hear any feedback you may have on the approach and on the details of implementation as well.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome! Added a link here.

@mikemorris
Copy link
Copy Markdown

This whole roadmap is really exciting, appreciate the effort in compiling all these initiatives and excited to make some progress here!

Copy link
Copy Markdown
Member

@PiotrSikora PiotrSikora left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two high-level comments:

  1. While I agree that we need to publish a (high-level) roadmap, a lot of items here (especially for the host and Envoy integration) are effectively implementation issues that should be tracked in the issue tracker and not here.
  2. This roadmap completely ignores hosts other than Envoy, so it would be great to rewrite some of those issues into proxy-agnostic way (where applicable, but see above).

Comment thread README.md
Comment thread README.md
Comment thread docs/Roadmap.md Outdated
Comment thread docs/Roadmap.md Outdated
Comment thread docs/Roadmap.md Outdated
Comment thread docs/Roadmap.md Outdated
Comment thread docs/Roadmap.md Outdated
Comment thread docs/Roadmap.md Outdated
Comment thread docs/Roadmap.md Outdated
Comment thread docs/Roadmap.md Outdated
Signed-off-by: Martijn Stevenson <mstevenson@google.com>
Signed-off-by: Martijn Stevenson <mstevenson@google.com>
Signed-off-by: Martijn Stevenson <mstevenson@google.com>
Signed-off-by: Martijn Stevenson <mstevenson@google.com>
Copy link
Copy Markdown
Member

@PiotrSikora PiotrSikora left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR should be moved to the community repo, now that we have it.

Comment thread ROADMAP.md
- (Help wanted) Expand the use of SharedArrayBuffer to reduce memcpy into wasm
runtimes. This is promising for HTTP body chunks (see relevant
[WASI issue](https://github.com/WebAssembly/WASI/issues/594)) and
[wasm binaries](https://github.com/proxy-wasm/proxy-wasm-cpp-host/blob/21a5b089f136712f74bfa03cde43ae8d82e066b6/src/v8/v8.cc#L272).
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure why this is linked here?

Comment thread ROADMAP.md
- (Help wanted) Support dynamic (per VM) limits for RAM and CPU.
- (Help wanted) Expand the use of SharedArrayBuffer to reduce memcpy into wasm
runtimes. This is promising for HTTP body chunks (see relevant
[WASI issue](https://github.com/WebAssembly/WASI/issues/594)) and
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is unlikely to ever work, without host being specifically architected to read data from the network directly into Wasm's linear memory block.

AFAIK, the "multiple memories" proposal doesn't allow to attach / detach memories on-the-fly.

Comment thread ROADMAP.md
independent thread scaling (expensive wasms get more CPU), improved
parallelism (multiple requests' wasm at the same time), and reduced memory
costs (one VM serves multiple Envoy threads). It adds performance risks (CPU
scheduling latency, CPU cache misses, NUMA hopping).
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

drive-by comment - I would love this as an option, but I'm not sure I would love it as a one-size-fits-all due to the concerns mentioned. Thinking out loud; I wonder if the problem could be addressed by offering the decoupling as an api to modules instead, something along the lines of that modules could opt in to posting work on a threadpool (and register for completions or some such)?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants