System Engineering

In the lecture “System Engineering and Management” we try to take a closer look at current software systems and how to build and deploy software. With this blog, we try to share our experience with you, so maybe you can profit from our mistakes 😉

  • Reproducibility in Machine Learning The rise of Machine Learning has led to changes across all areas of computer science. From a very abstract point of view, heuristics are replaced by black-box machine-learning algorithms providing “better results”. But how do we actually quantify better results? ML-based solutions tend to focus more on absolute performance improvements (measured by metrics) instead of ...
  • Experiences from breaking down a monolith (3) Written by Verena Barth, Marcel Heisler, Florian Rupp, & Tim Tenckhoff DevOps Code Sharing Building multiple services hold in separated code repositories, we headed the problem of code duplication. Multiple times a piece of code is used twice, for example data models. As the services grow larger, just copying is no option. This makes ...
  • Migrating to Kubernetes Part 1 – Introduction Written by: Pirmin Gersbacher, Can Kattwinkel, Mario Sallat Introduction The great challenge of collaborative working in a software developer team is to enable a high level of developer activity while ensuring a high product quality. In order to achieve this often CI/CD processes are utilized. Talking about modern development techniques the terms Continuous Integration (CI) and Continuous Delivery ...
  • Migrating to Kubernetes Part 2 – Deploy with kubectl Written by: Pirmin Gersbacher, Can Kattwinkel, Mario Sallat Migrating from Bare Metal to Kubernetes The interest in software containers is a relatively new trend in the developers world. Classic VMs have not lost their right to exist within a world full of monoliths yet, but the trend is clearly towards microservices in which containers can play off ...
  • Migrating to Kubernetes Part 3 – Creating Environments with Helm Written by: Pirmin Gersbacher, Can Kattwinkel, Mario Sallat Creating Environments on the Fly The last step has been the deployment of a classic 3 tier application onto a Kubernetes Cluster powered by Minikube. In the next stage it gets a little complicated, since there are two things to do that depend on each other. So far the ...
  • Migrating to Kubernetes Part 4 – Create Environments via Gitlab Written by: Pirmin Gersbacher, Can Kattwinkel, Mario Sallat Connect Gitlab with Kubernetes With the Review Apps Gitlab offers an excellent improvement of the Developer Experience. More or less Gitlab enables the management of environments. For each environment, there is a CI task to each set-up and tear down. It is important that the dynamic URL under which ...
  • Radcup – a socialmedia beerpong App Written by: Immanuel Haag, Christian Müller, Marc Rüttler Radcup adds a bit of social media to the well-known game Beerpong. With Radcup the user has the possibility to register or login. Afterwards he can display/localize already existing games and join them if possible or create new games. As soon as 4 players have joined, the real ...
  • Radcup Part 1 – Refactoring Written by: Immanuel Haag, Christian Müller, Marc Rüttler Refactoring the Radcup backend is necessary because it was developed in the year 2015. Step 1: Docker-Setup In order to have a complete project setup, the backend was converted to a Docker-Compose setup. This offers the developers the possibility to always work with a fresh installation within the same ...
  • Radcup Part 2 – Transition into Cloud Written by: Immanuel Haag, Christian Müller, Marc Rüttler Several steps are necessary to transfer the Radcup backend to the cloud and make it accessible to everyone from the outside. These are explained in more detail in the following sections. Step 1: External MongoDB We have decided to use an external service from https://www.mongodb.com/cloud/atlas for the MongoDB hosting. ...
  • Radcup Part 3 – Automation with Gitlab CI/CD Written by: Immanuel Haag, Christian Müller, Marc Rüttler The goal of this blog entry is to automate the previously performed steps. At the end all manual steps should be automated when new code changes are added to the repository. The new version of the backend will be made available in the cloud at the end. Step 1: ...