Skip to content

Equipment Sharing

[Team : Johnson Team] [Tech Lead : TBC] [Service Owner : TBC] [Service Manager : TBC] [Product Manager : TBC]

This page gives an overview of Equipment Sharing, describing its current status, where and how it's developed and deployed, and who is responsible for maintaining it.

Service Description

This is the University of Cambridge research facilities and equipment searchable database. This allows University members to search entries in the Research Facilities and Equipment Database

Service Status

Equipment Sharing is currently live.

Contact

Technical queries and support should be directed to development team 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 development team rather than reaching out to team members directly.

Issues discovered in the service or new feature requests should be opened as GitLab issues in the application repository.

Environments

The Equipment Sharing is currently deployed to the following environments:

Name URL Supporting VMs
Production admin app: https://www.equipment.admin.cam.ac.uk/esd-admin/
web front-end: https://www.equipment.admin.cam.ac.uk/
equipment-sharing-live1.internal.admin.cam.ac.uk
equipment-sharing-live2.internal.admin.cam.ac.uk
Staging admin app: http://equipment-sharing-staging1.internal.admin.cam.ac.uk:8080/esd-admin/ (Not accessible)
web front-end: http://equipment-sharing-staging1.internal.admin.cam.ac.uk
equipment-sharing-staging1.internal.admin.cam.ac.uk

Source code

The source code for the Equipment sharing is can be found in the following Gitlab repositories:

Repository Description
Java backend https://gitlab.developers.cam.ac.uk/uis/devops/research/equipment-sharing/equipsharenew
PHP frontend https://gitlab.developers.cam.ac.uk/uis/devops/research/equipment-sharing/equipment-sharing-ui

Technologies used

The following gives an overview of the technologies the Equipment Sharing is built on.

Category Language Technologies
Web Java Spring, Tomcat
Frontend PHP Symfony, Guzzle, Capifony Composer
Database N/A MariaDB

Operational documentation

The following gives an overview of how the Equipment Sharing is deployed and maintained.

Service locations on hosts

esd-admin (admin console) and equipshare (batch job and REST services) are deployed to /opt/tomcat/webapps.

The PHP service (public-facing) is in /var/www/ and logs are in /var/www/equipment-sharing-live1.internal.admin.cam.ac.uk/releases/<release-timestamp>/app/logs

Export of public data

equipshare has a 'hidden' feature to publish an export of all public resources, which is made available at https://www.equipment.admin.cam.ac.uk/equipshare/export/ (this currently does not seem to be available)

How and where the Equipment Sharing is deployed

To deploy the web service, copy equipshare.war file to tomcat installation location: /opt/tomcat/webapps restart tomcat : systemctl restart tomcat.service

Other operation issues

As the Research Facilities and Equipment Database web service is a bit broken, there are some workarounds in the code:

  • When something doesn’t exist a 200 response is returned with an empty body, BrokenResponseListener converts this in a 404.
  • A load of data in the database is broken (eg phone numbers like 00000 000000, email addresses like unknown@cam.ac.uk), so the MisdEquipmentSharingDataCleaningBundle tries to tidy it up.
  • There is a yet-to-be-fully-diagnosed issue whereby the tomcat app will start returning 404 responses. More details on this issue.

Load-balancing

As described above, the service consists of two components:

  1. A PHP front-end service, listening on port 80 via Apache
  2. Java services, deployed as two separate webapps (equipshare and esd-admin) on tomcat listening on port 8080. These supply a backend to the PHP front-end service, but also provide services directly to users.

This configuration is achieved through the traffic managers, which define 4 pools:

  • equipshare-live1:80 (PHP master pool)
  • equipshare-live2:80 `(PHP failure pool)
  • equipshare-live1:8080 (Tomcat master pool)
  • equipshare-live2:8080 (Tomcat failure pool)

A trafficscript rule on the www.equipment.admin.cam.ac.uk port 80/443 virtual servers proxies all requests to the appropriate PHP master pool unless it corresponds to the /equipshare or /esd-admin directories, in which case the requests will be forwarded to the Tomcat master pool.

Additionally, within the front-end PHP application, requests are made to http://localhost:8080/equipshare/.... This provides an interface to the local MariaDB database (replicated across the two instances).

Further historical details

Historical insight into the service can be found on Confluence

Service Management

The Team responsible for this service is Johnson Team.

The Tech Lead for this service is TBC.

The Service Owner for this service is TBC.

The Service Manager for this service is TBC.

The Product Manager for this service is TBC.

The following engineers have operational experience with this service and are able to respond to support requests or incidents:

Contact Johnson Team about any issues.