Knowledge-Graph-Hub / NEAT-kghub-scheduler

Scheduling utility for starting NEAT jobs for KG-Hub resources.
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

Consider alternatives to Jenkins #1

Open caufieldjh opened 2 years ago

caufieldjh commented 2 years ago

Could use as alternatives to Jenkins:

caufieldjh commented 2 years ago

Re: GCP and Terraform, see also:

Terraform also has a "Terraform Cloud" variant:

Terraform Cloud (TFC) is a free to use, self-service SaaS platform that extends the capabilities of the open source Terraform CLI and adds collaboration and automation features.

Terraform Cloud enables connecting to common VCS platforms (GitHub, GitLab, Bitbucket) and triggering Terraform runs (plan and apply) from changes to configuration within the VCS. TFC manages state for the user, including keeping a history of changes. Terraform Cloud exposes an HTTP API that anyone can integrate with to build more automation around infrastructure change.

This might be overkill but it may also be more closely aligned with our intent for NEAT and KG-Hub.

caufieldjh commented 2 years ago

A nice thing about the Terraform Cloud: it includes cost estimations for each run.

justaddcoffee commented 2 years ago

I'm warming up to using Terraform.

One way we could do this:

justaddcoffee commented 2 years ago

Adding: I realize plan this doesn't exactly comport with the title of this ticket, "Consider alternatives to Jenkins", since I'm suggesting we use both Jenkins and Terraform.

However, I think it does make some sense to either keep using Jenkins for ETL and also NEAT/GCE stuff (with Terraform for GCE stuff), or abandon Jenkins altogether and go all in with Terraform (which we could also do)

caufieldjh commented 2 years ago

I think Jenkins still works very well for the ETL functions, KG publishing, and even things like starting DB instances/journals, but I think part of the value added by Terraform may be that it reduces the number of points of failure between users and GCE. Terraform could certainly be set to run on a cron schedule much like Jenkins, spin up a pre-made listener instance to do the bucket query, and then spin up GCE instances as needed based on an image containing the necessary dependencies.

But in the end, how do we abstract away most of the Terraform parts?

justaddcoffee commented 2 years ago

This is a helpful little walkthrough/getting-started on Terraform, and also this Medium post shows one way of doing something similar to what I'm proposing