Open Days reservation system's high level overview - 2019

Submitted by vkozlovs on
Blog article:

Introduction

The LHC has a schedule of maintenance and performance upgrades. During these longer shutdowns CERN holds its major Open Days events. These allow the general public to visit areas normally restricted and used for research activity. Previous events have seen daily over 35k people visiting. To hold a big impact event successfully, certain preparations and arrangements are necessary. Our team’s responsibility was to deliver a reliable and highly available reservation system. This article gives a high level overview about the work that has been done and links together technical articles written about the Open Days reservation application.

Event & application details

In the 2019-2020 period the event was held on the 14–15 of September in 2019 and we welcomed 75.000 people. To let this major event succeed we had to do a lot of preparation. One of them was to develop a highly scalable bilingual mobile friendly ticketing application, available 24/7 during the reservation period.

Since an event reservation is not a core scientific research activity, but it corresponds to the main educational mission of CERN. We had to deliver the solution in the shortest possible time with the highest value. This was achievable for us only through using some of the latest technologies and industrial best practices.

We chose a stateless application design, it enabled us to separate the user interface and the business logic into different layers. This separation allowed for parallel development and better task & time management. The system was delivered within 3 months'time and hosted on the Oracle Cloud.

The above diagram shows the different application layers hosted on Kubernetes Managed Service in the Oracle Cloud and the deployment was done by using mostly open source solutions (Terraform & Helm Charts). The user interface used the Angular front-end framework with the Angular material design, the business logic (back-end) layer used JAVA Spring Boot. These layers were integrated with different PaaS services to distribute the load, monitor the service, store and analyse data (managed Load Balancer as a Service, Analytics Cloud, Management Cloud and Autonomous Database )

Experiences of development and maintenance

Our agile and rapid development benefited from the usage of the PaaS components and the stateless design. Using dedicated containers for the different layers, we were able to clearly separate the work on our application from the jobs of our DevOps engineers. In addition, containers allowed much better task distribution (more achievable & trackable goals) between our front-end and back-end developer teams. It has also allowed to do certain tasks parallel which played a key role to work efficiently and deliver the solution fast.

 

The infrastructure was highly available and very reliable during the whole life-span of the project. Regularly new features and patches were installed on the different components of the cloud services, these were completely transparent for the end-users and the developers. The system was running 24/7 without downtime. Based on the usage time to time the system was scaled, this took just about couple of minutes. This fine grained scaling allowed better costing by paying only for the used resources.

 

Related articles

If you are eager to go deeper into details about the CERN Open Days - 2019 have a look on the related articles from the following table.

Topic Article title Author(s)
Architecture overview Benefits of a multi-layer system Viktor Kozlovszky
Internationalization Internationalization of the 2019 Open Days reservation system

Thomas Løkkeborg &

Viktor Kozlovszky

Other references

Type Title
presentation @ Oracle Open World 2019 100% Oracle Cloud: Registering 90,000 People for CERN Open Days
presentation @ Oracle Open World 2019 11 Months with Oracle Autonomous Transaction Processing

Source Code

Summary Repository
Front-end code written in Angular  https://github.com/cerndb/open-days-registration-application-front-end
Back-end code written in JAVA + Database objects and queries https://github.com/cerndb/open-days-registration-application-back-end

 

Add new comment

CAPTCHA
Enter the characters shown in the image.
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Disclaimer

The views expressed in this blog are those of the authors and cannot be regarded as representing CERN’s official position.

CERN Social Media Guidelines

 

Blogroll