This strawman introduces a dagster executable snapshot cli which just pickles the RepositoryDefinition for a provided dagster repo. It also introduces an Executable mode along with an ExecutableLoaderEntrypoint which represents the loading of the pickled RepositoryDefinition. If we eventually convert this executable into a container, this should all work right?
This is by no means a real diff. I am just writing some code to better understand the space and get feedback from you all to see if I am missing something key. However, if I am not missing anything major, everything should be supported here without touching the "original" user code because the pickle file is just serialized version of the user code.
This doesn't totally isolate the execution pieces but the reads are technically isolated now.
To use it, just type dagit -p 3333 -e examples/dagster_examples/airline_demo.
Now obviously, I don't think pickle is the long term solution here, it's super brittle and doesn't work for some pipelines. However, I think this totally works if you write your repositories in ways that are serializable via pickle. Am I missing something?