Open Days reservation system's high level overview - 2019
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.
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.
|Architecture overview||Benefits of a multi-layer system||Viktor Kozlovszky|
|Internationalization||Internationalization of the 2019 Open Days reservation system||
Thomas Løkkeborg &
|Stateless application design||Not published yet||Viktor Kozlovszky|
|Deploy to Kubernetes||Not published yet||
Antonio Nappi &
|ADB usage||Not published yet||
Franck Pachot &
|System stress testing||Not published yet||
Antonio Nappi &
|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|
|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|