Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Let the Serialization Service Use A Different Endpoint than the Executor #682

Open
jlewi opened this issue Oct 12, 2024 · 0 comments
Open

Comments

@jlewi
Copy link
Contributor

jlewi commented Oct 12, 2024

Today the executor and serialization service must be colocated in the same server. This is largely because the vscode extension doesn't make it possible to configure the serializer and executor service independently.

Is it worth exposing an option to allow serialization service to be running at a different address?

Use Case

I think it could be valuable to be able to independently configure the endpoint (and by extension the location/environment) where the serializer and executor run. In choosing where to run them you have different factors

  1. Serializer - The serializer is stateless. The primary thing you care about is reliability and availability because if the serializer goes down you can't save/open new documents.

  2. Executor - Where you run the executor often depends on where you want to execute commands (i.e. resources/files you want to access). For example, you might want to run the executor in a container (Better command execution in Docker #631 and Support executing cells in different gRPC Executor Services - Ephemeral Containers #593) either locally or remotely.

Running the serializer in the same environment as the executor can lead to friction (#593 (comment)) if you can't save/open documents because that environment becomes unavailable (e.g. a container).

Alternatives

One alternative is using WASM to move serialization/deserialization directly into the frontend. In some ways I think that is a superior solution because

  1. Your serializer is always available
  2. You don't have to configure/operate a separate serialization service.

I believe the decision was made to try to remove the WASM code path (stateful/vscode-runme#349) because it was found to have memory leaks and cause other problems.

I think there is some open question as to whether and how to support remote executors and executors in containers (see #631 and #593). Its possible depending on how that shakes out configuring the serializer independently doesn't provide much value.

@sourishkrout thoughts? WDYT about adding an experimental option to specify an alternative endpoint for the serializer?

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

No branches or pull requests

1 participant