Currently, production code is manually tested and deployed via an AWS EC2 container, in "cowboy coding" style — there is no clear structure or reliable method of staging changes for deployment. Rather, the current process is simply pulling from each experimental issue branch, running docker compose down && docker compose up -d, and hoping things work. It's time to disjoin this staging behavior from production, and deploy in a better-structured manner.
This will involve:
- Building release images outside of production — not on a live EC2 instance — with each release
- Decoupling from EC2 — the ethereal workflow being proposed here is better suited for a serverless architecture (i.e. AWS Lambda)
- Designing and launching an actual test suite for DevOps — feature tests are out of scope for this issue, but will be required soon
- Writing a GitHub Actions YAML to define a pipeline that implements AWS Lambda instances to test each PR
- Clearly defining environment variable definitions for DEVELOPMENT, STAGING, and PRODUCTION stages
- Adhering to SDLC best-practices every step of the way
Currently, production code is manually tested and deployed via an AWS EC2 container, in "cowboy coding" style — there is no clear structure or reliable method of staging changes for deployment. Rather, the current process is simply pulling from each experimental issue branch, running
docker compose down && docker compose up -d, and hoping things work. It's time to disjoin this staging behavior from production, and deploy in a better-structured manner.This will involve: