The BFH evaluates courses every semester by sending Surveys to students. This process requires alot of manual work. The goal of this project is to automate this process using a modern technology stack.
The BFH evaluates courses every semester by sending Surveys to students. The process of to select the courses to be evaluated is long and takes a lot of work. The goal of this project is to create a web application that decreases the workload and makes it easier for all involved parties to select the courses. This web application will integrate multiple interfaces to communicate with other services. The application will follow a microservice architecture. That means that there will be multiple small applications that interact with each other through interfaces. At the end the whole application should be able to run on Kubernetes. The whole project also uses SCRUM as a Project management method. That means that the application gets completed in multiple steps or iterations.
After hundreds of hours of work and 10 iterations the EvaBoot application was finally finished. The first part of this project was done during Project 2 Module. During that time important work was done to lay the foundation of this project. A git repository was created that uses CI & CD for automated testing, building and deployment. A testserver was set up to test the application and the base structure of the application was defined. It was decided to use a Spring Boot backend and an Angular frontend. It was also decided to use Keycloak for authorizing and authenticating users. During the Bachelor this foundation was expanded upon. The evaluation process was streamlined. External Applications were integrated into the Application. Some services were mocked due to missing access to them. Some features that were implemented are: multilanguage, email notifications, integration of services and userfriendly UI. Initially the application was deployed using Docker and docker-compose. Docker creates virtual machines that are based on a so called docker image. On those images all of the required software can be configured. Because the environment is allways defined inside of the image this makes the installation process easier. After some time using Docker the deployments were switched to using Kubernetes. The biggest difference between those two is, that docker is designed to work on only one Server, Kubernetes is optimized to work on a cluster of Servers. The advantage of using Kubernetes is that it is easier to scale an application.
The project was well organised and because of proper planning the development process was done without too many problems. The most difficult parts of this Project was the migration to Kubernetes. There were also some problems when integrating the external services. Most of the defined goals were met and even some optional goals were completed. Even though there were some problems the project as a whole can be called a success.