Graduate Admissions Course Database (GAOBase)¶
This page gives an overview of the Graduate Admissions Course Database (GAOBase) system, describing its current status, where and how it's developed and deployed, and who is responsible for maintaining it.
Service Description¶
GAOBase maintains the course data used for the Postgraduate Study website. Once data has been through a review process, static site data is published by GAOBase into the Postgraduate Study system which is powered by the Drupal web content management system. The Drupal system interacts with GAOBase via API's for searches and course / department listings.
Also see:
Service Status¶
GAOBase is currently under development as a GCP Cloud based product.
The current GAOBase is live as an on-prem service, but is being migrated by the DevOps team to run in GCP.
Contact¶
Technical queries and support should be directed to servicedesk@uis.cam.ac.uk and will be picked up by a member of the team working on the service. To ensure that you receive a response, always direct requests to servicedesk@uis.cam.ac.uk rather than reaching out to team members directly.
Issues discovered in the service or new feature requests should be opened as GitLab issues here.
Environments¶
GAOBASE is currently deployed to the following environments:
Name | Main Application URL | Django Admin URL |
---|---|---|
Production | https://gaobase.admin.cam.ac.uk/ | https://gaobase.admin.cam.ac.uk/admin |
Staging | https://webapp.test.gaobase.gcp.uis.cam.ac.uk/ | https://webapp.test.gaobase.gcp.uis.cam.ac.uk/admin |
Development | https://webapp.devel.gaobase.gcp.uis.cam.ac.uk/ | https://webapp.devel.gaobase.gcp.uis.cam.ac.uk/admin |
The GCP console pages for managing the infrastructure of each component of the deployment are:
Name | Main Application Hosting | Database |
---|---|---|
Production | GCP Cloud Run | GCP Cloud SQL (Postgres) |
Staging | GCP Cloud Run | GCP Cloud SQL (Postgres) |
Development | GCP Cloud Run | GCP Cloud SQL (Postgres) |
All environments share access to a set of secrets stored in the meta-project Secret Manager.
Notification channel(s) for environments¶
Environment | Display name | |
---|---|---|
Production | Graduate Admissions - Lovelace DevOps team email channel | devops-lovelace@uis.cam.ac.uk |
Source code¶
Source code for GAOBase is spread over the following repositories:
Repository | Description |
---|---|
GAOBase¹ | The source code for the application |
Cloud Infrastructure¹ | Terraform configuration for infrastructure and deployment |
¹ DevOps only
Technologies used¶
The following gives an overview of the technologies that GAOBase is built on.
Category | Language | Framework(s) |
---|---|---|
Server | Python 3.8 | Django 3.2 |
Client | Javascript/jQuery | |
DB | PostgreSQL 13 | |
GCP deployment | Terraform |
Operational documentation¶
The following gives an overview of how GAOBase is deployed and maintained.
How and where GAOBase is deployed¶
- The Database for Postgraduate course data is a PostgreSQL database hosted by GCP Cloud SQL.
- The main web application is a Django application hosted by GCP Cloud Run.
- There are a number of asynchronous processes which rely on a GCP Cloud Tasks queue.
The application submits jobs to the queue that callback the application's application's
cloud_tasks/
endpoint.
Deploying a new release¶
The README.md file in the Infrastructure Deployment repository explains how to deploy GAOBase.
Monitoring¶
- GCP Cloud Monitoring for tracking the health of applications in the environments and sending alert emails when problems are detected.
- Cloud Logs for tracking individual requests/responses to/from the web application and the synchronisation job application.
Debugging¶
The README.md files in each of the source code repositories provide information about debugging both local and deployed instances of the applications.
Service Management and tech lead¶
The service owner for GAOBase is Abraham Martin.
The service manager and tech lead for GAOBase is Adam Deacon.
The following engineers have operational experience with GAOBase and are able to respond to support requests or incidents: