FAQ | This is a LIVE service | Changelog

Skip to content
Snippets Groups Projects
Commit d4cb4cf1 authored by Dave Hart's avatar Dave Hart :pizza:
Browse files

Add content to the Subject Moderation Interface (SMI) service pages. (#69)

Add information about the deployment and opeartion of the Subject Moderation
Interface (SMI) service, including the interactions with other services.

Add SMI page to the `mkdocs.yml` page list.
parent f53190bc
No related branches found
No related tags found
1 merge request!58Add content to the Subject Moderation Interface (SMI) service pages
docs/services/subject-moderation-interface-data-flow.jpg

56.3 KiB

# Subject Moderation Interface (SMI)
This page documents key information about the Subject Moderation Interface (SMI) service.
!!! warning
This is a **prototype** service that is not fully supported. See the
[FAQ for Subject Moderation Interface alpha](https://docs.google.com/document/d/1d-wrCkJFgSL3Z6G12ze2F2Szjvou-hFGdU3pJ24MzTQ)
for more details.
Service description
-------------------
The Subject Moderation Interface (SMI) service provides a web application for moderating
undergraduate applications as part of the admissions process. on Google Drive, and linked spreadsheets
Environments and Servers they run on
------------------------------------
- [Production](https://alpha.subjectmoderationinterface.apps.cam.ac.uk/)
(and [Django admin page](https://alpha.subjectmoderationinterface.apps.cam.ac.uk/admin) and [API](https://alpha.subjectmoderationinterface.apps.cam.ac.uk/api/))
- [Applications: GCP Cloud Run](https://console.cloud.google.com/run?project=uga-prod-4ef210b2)
- [Database: GCP Cloud SQL (Postgres)](https://console.cloud.google.com/sql/instances?project=uga-prod-4ef210b2)
- [Synchronisation jobs: GCP Cloud Scheduler](https://console.cloud.google.com/cloudscheduler?project=uga-prod-4ef210b2)
- [Test (staging)](https://staging.subjectmoderationinterface.apps.cam.ac.uk/)
(and [Django admin page](https://staging.subjectmoderationinterface.apps.cam.ac.uk/admin) and [API](https://staging.subjectmoderationinterface.apps.cam.ac.uk/api/))
- [Applications: GCP Cloud Run](https://console.cloud.google.com/run?project=uga-test-1f58c76d)
- [Database: GCP Cloud SQL (Postgres)](https://console.cloud.google.com/sql/instances?project=uga-test-1f58c76d)
- [Synchronisation jobs: GCP Cloud Scheduler](https://console.cloud.google.com/cloudscheduler?project=uga-test-1f58c76d)
- [Development](https://webapp.devel.uga.gcp.uis.cam.ac.uk/)
(and [Django admin page](https://webapp.devel.uga.gcp.uis.cam.ac.uk/admin) and [API](https://webapp.devel.uga.gcp.uis.cam.ac.uk/api/))
- [Applications: GCP Cloud Run](https://console.cloud.google.com/run?project=uga-devel-7447350c)
- [Database: GCP Cloud SQL (Postgres)](https://console.cloud.google.com/sql/instances?project=uga-devel-7447350c)
- [Synchronisation jobs: GCP Cloud Scheduler](https://console.cloud.google.com/cloudscheduler?project=uga-devel-7447350c)
- [GCP meta-project: GCP Secret Manager](https://console.cloud.google.com/security/secret-manager?project=uga-meta-ca2e420e)
- For secrets shared between the other environments.
Application repositories
------------------------
- [Web application](https://gitlab.developers.cam.ac.uk/uis/devops/uga/smi)
- [Synchronisation job application](https://gitlab.developers.cam.ac.uk/uis/devops/uga/pool-applicant-document-management)
- Named the "Pool Applicant Document Management" repository but this name is misleading as
the application manages synchronisation with CamSIS, Google Drive and Google Sheets, and not
just for applicant pooling purposes.
- [Undergraduate Admissions project group](https://gitlab.developers.cam.ac.uk/uis/devops/uga)
Technology
----------
| Category | Language | Framework |
| -------- | -------- | --------- |
| Web Application Backend | Python 3.7 | Django 2.2 |
| Web Application Frontend | JavaScript | React 16.13.1 |
| Synchronisation Job Application | Python 3.8 | Flask |
| Database | PostgreSQL 11 | GCP Cloud SQL |
Deployment
----------
Database for undergraduate applicant data is a PostgreSQL database hosted by GCP Cloud SQL.
The main web application is a Django backend with React frontend, hosted by GCP Cloud Run.
The synchronisation job application (which provides an API with end-points for synchronising
the SMI database with other services) uses the Flask library and is hosted by GCP Cloud Run.
Deployment repository
---------------------
- [Applications](https://gitlab.developers.cam.ac.uk/uis/devops/uga/deploy)
- Terraform configuration files for deploying the web application, the synchronisation job
application and associated monitoring to GCP.
Operation
---------
Applicant data is initially retrieved from CamSIS via a synchronisation job (managed by GCP
Cloud Scheduler which periodically calls the synchronisation job API). Additional annotations
are later added by manually importing the subject master spreadsheet (SMS) and subject-specific
variants (using the
[Django admin application page (staging)](https://staging.subjectmoderationinterface.apps.cam.ac.uk/admin/smi/application/)
for the appropriate environment).
Periodic synchronisation jobs ensure that each applicant has an associated folder on Google
Drive (for storing additional documents). They also ensure that applicant data is consistent
between the SMI and several linked Google Sheets spreadsheets: the expression of interest master
list (EoIML) and poolside meeting outcome spreadsheets (PMOSs). A manually invoked process on
CamSIS uses the SMI web application API to retrieve pooling decisions about applicants, and
update the CamSIS database as necessary.
The flow of applicant data to/from the SMI and other services is summarised by the diagram below.
![Flow of applicant data to/from the SMI](subject-moderation-interface-data-flow.jpg)
Monitoring and alerting
-----------------------
- [GCP Cloud Monitoring](https://console.cloud.google.com/monitoring?project=uga-meta-ca2e420e)
- For tracking the health of applications in the environments and sending alert emails when
problems are detected.
- Cloud Logs ([production](https://console.cloud.google.com/logs?project=uga-prod-4ef210b2), [test (staging)](https://console.cloud.google.com/logs?project=uga-test-1f58c76d), [development](https://console.cloud.google.com/logs?project=uga-devel-7447350c))
- For tracking individual requests/responses to/from the web application and the
synchronisation job application.
Service Owner
-------------
[Dave Hart](https://www.lookup.cam.ac.uk/person/crsid/dkh21)
Service Managers
----------------
[Dave Hart](https://www.lookup.cam.ac.uk/person/crsid/dkh21)
Current Status
--------------
Alpha
Documentation
-------------
- [Operational Documentation for the Undergraduate Admissions process](https://gitlab.developers.cam.ac.uk/uis/devops/uga/operational-documentation)
- [FAQ for Subject Moderation Interface alpha](https://docs.google.com/document/d/1d-wrCkJFgSL3Z6G12ze2F2Szjvou-hFGdU3pJ24MzTQ)
......@@ -38,6 +38,7 @@ nav:
- 'Education':
- 'Digital Admissions':
- services/admissions-portal.md
- services/subject-moderation-interface.md
- services/essm-sync.md
- 'Lecture Capture':
- services/panopto-deployment.md
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment