This task is to track progress on the hypothesis 6.3.2:
By creating a "standard" tool to measure the number of steps for a deployment we will be able to assess the maximal improvement in the deployment process.
Tool to be used: https://toolsadmin.wikimedia.org/tools/id/sample-complex-app
Starting set of features
The application should show a webpage with a summary of the status:
- Db connection working
- Db schema upgraded to latest schema
- Backend api up and running
- Backend jobs running
- Last deploy
- Number of deploy steps needed (thigh might need to be manually entered somehow as it can't deploy itself yet)
- Scheduled job
All components should be built with buildservice, and configured through environment variables/secrets.
Backend
Repo: https://gitlab.wikimedia.org/toolforge-repos/sample-complex-app-backend)
Python API e.g. FastAPI, built using build service, should:
- Listen on port 8080
- Use a database (trove)
- Have some setup/db upgrade script one-offs
- Start background tasks through celery using Redis as transport (starting with the shared instance, we might move to dedicated job later)
Worker
Repo: https://gitlab.wikimedia.org/toolforge-repos/sample-complex-app-backend)
Celery worker executing background tasks, it should have at least one task triggered by the API that contacts the database.
Frontend
Repo: https://gitlab.wikimedia.org/toolforge-repos/sample-complex-app-frontend
Vue.js simple fronted, built using build service, contacts the backend for queries.
Other scheduled/maintenance jobs
- One scheduled job rotating the logs
Future features
- Object storage
- Non-shared Redis (redis as a component)