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

Refactor base co-execution client out of Kubernetes specific stuff. #302

Merged
merged 6 commits into from Oct 11, 2022

Conversation

jmchilton
Copy link
Member

I want to implement a AWS Batch execution for Galaxy. The existing AWS Batch Runner (galaxyproject/galaxy#13466):

In the reverse direction - adopting this approach to AWS Batch will provide further proof of the viability, encourage me to write documentation, and likely will prove easier to write remote tests for.

@jmchilton jmchilton changed the title Refactor base co-execution client out of Kubernetes specific stuff. [WIP] Refactor base co-execution client out of Kubernetes specific stuff. Sep 27, 2022
@jmchilton jmchilton force-pushed the more_coexecution branch 13 times, most recently from c42065a to 59e0e5a Compare October 6, 2022 16:39
Currently the only container-based scheduled (where we schedule containers and not schedule jobs that launch containers) is the Kubernetes message queue based coexecution approach.

On one hand, we have some intriguing applications TES and AWS Batch where we would like to schedule containers directly and on the other the MQ approach with Kuberentes can easily be generalized to not require the MQ (falling back to polling the way the Kubernetes job runner in Galaxy does).

The goal of this work is to generalize the MQ Kubernetes approach into six approaches:

- MQ + Kubernetes (the current recommendation)
- Kubernetes w/polling API (a simpler Kubernetes approach that retains all the advantages of the Pulsar approach over the Kubernetes runner in Galaxy without requiring a MQ).
- MQ + TES.
- TES w/polling.
- MQ + AWS Batch
- AWS Batch w/polling.

TES
----------

I've developed a client library for TES called pydantic-tes (https://github.com/jmchilton/pydantic-tes) - that should use validated models to communicate with a TES server and is tested against Funnel. It also distributes a pytest fixture that can build and launch funnel for writing automated tests and that works with tox and Github actions as demonstrated by the pydantic-tes CI.

AWS Batch
----------

TODO:

Sequential vs Parallel Container Execution
-------------------------------------------

This work contains a generalization of the approach used in Kubernetes of co-execution of Pulsar and Biocontainers, but the model for TES and AWS Batch are more serial container executions - this runs, then that, then that, etc... In TES this is given as a list of "Executors" and AWS Batch has the idea of the job dependencies that I believe can capture this - but this will require a slightly alternative approach (probably simpler) than the K8S co-execution approach in which the containers wait on each other to write files in order to coordinate.
@jmchilton jmchilton force-pushed the more_coexecution branch 3 times, most recently from 6cec110 to c824e30 Compare October 11, 2022 12:51
@jmchilton jmchilton merged commit bfdf1f4 into galaxyproject:master Oct 11, 2022
@jmchilton
Copy link
Member Author

Documentation for this PR: https://pulsar.readthedocs.io/en/latest/containers.html. It includes TES execution.

jmchilton added a commit to jmchilton/galaxy that referenced this pull request Oct 11, 2022
jmchilton added a commit to jmchilton/galaxy that referenced this pull request Oct 11, 2022
@bgruening bgruening changed the title [WIP] Refactor base co-execution client out of Kubernetes specific stuff. Refactor base co-execution client out of Kubernetes specific stuff. Oct 11, 2022
mvdbeek pushed a commit to jmchilton/galaxy that referenced this pull request Oct 16, 2022
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.

None yet

1 participant