exercism / development-environment

16 stars 19 forks source link

rework startup and centralize S3/dynamo setup #7

Closed joshgoebel closed 3 years ago

joshgoebel commented 3 years ago

Ok let me lay out my high level thoughts here. What I was working towards:

Whole stack starts fast and strives to eliminate unnecessary work.

I found a few huge ugly points:

This change creates a new startup docker that moves all this "start the stack" complexity there... and because it's only running Ruby (not the whole Rails stack) it's quite fast... and if we use git tags (vs using Rubygems) for versioning then we avoid the SLOW bundle update in favor of simply pulling a new copy of code from git.

So to upgrade from exercism config 0.25 to 0.26 you can just bring up a new stack and that will happen as the stack comes online. If the dependencies ever change this will necessitate rebuilding the image, but that's as it should be. The images should be "ready to go" as much as possible.

I have a whole host of PRs along these lines but wanted to start the big picture discussion here... I've also pushed my changes to tooling invoker so you can see how it simplifies the components.

My whole stack starts much faster with a lot fewer errors with these changes.

You could also make an argument to move everything into v3_website (and I'm not opposed) but I think for now it's a bit easier to iterate on this way and it increases separation of concerns between pieces of the architecture because now I can bring up the whole tooling chain without firing up the website at all (since this moves the AWS setup out of the website's responsibility).

joshgoebel commented 3 years ago

https://github.com/exercism/tooling-invoker/pull/8

joshgoebel commented 3 years ago

I have to rework this a bit now anyways...