Java microservices: voetbal

Introductie

Voor het vak Advanced Programming Topics kregen we de opdracht om een applicatie te ontwikkelen volgens de principes van een microservices-architectuur. Vanuit onze interesse voor sport en softwareontwikkeling kozen wij ervoor om een platform te bouwen rond een voetbalcompetitie. De applicatie biedt informatie over spelers, teams, wedstrijden en supporters, elk beheerd via een eigen microservice.

Onze oplossing is een modern, schaalbaar en modulair systeem dat gebruikmaakt van verschillende technologieën zoals MongoDB, MySQL, Docker, React, Kubernetes en Google OAuth2.

Wat houdt Advanced Programming Topics in?

Dit vak focust op geavanceerde concepten uit de softwareontwikkeling, waaronder:

  • Microservices en gedistribueerde systemen
  • Containerisatie en deployment met Docker en Kubernetes
  • Authentificatie en beveiliging
  • API-architectuur en integratie De opdracht bood ons de kans om deze concepten niet alleen theoretisch te begrijpen, maar ook praktisch toe te passen in een volledige end-to-end applicatie.

Kernfunctionaliteiten

Microservices

De backend bestaat uit vier afzonderlijke services:

  • Player-service: beheert spelersinformatie (MongoDB)
  • Team-service: beheert teamgegevens (MySQL)
  • Match-service: registreert wedstrijden en scores (MongoDB)
  • Supporter-service: beheert supportersgegevens en favoriete teams/spelers (MySQL) Alle services draaien in Docker-containers en communiceren via REST API’s, aangestuurd door een centrale API Gateway.

Authenticatie

Voor beveiliging hebben we Google OAuth2 geïntegreerd.

  • Zonder login: alleen leesrechten (GET) op publieke gegevens
  • Met login: volledige toegang tot beheerfuncties (POST, PUT, DELETE)
  • Authenticatie wordt afgehandeld in de frontend en doorgestuurd naar de gateway via tokens.

Frontend

De frontend is een responsieve React-applicatie, gestyled met TailwindCSS en gehost via Nginx. Gebruikers kunnen:

  • Teams en spelers bekijken of beheren
  • Wedstrijden aanmaken, bewerken of verwijderen
  • Supporters koppelen aan favoriete teams/spelers
  • Inloggen via Google

Deployment

Alle services zijn als Docker-images gebouwd en draaien in een gesimuleerde productieomgeving met vaste poorten. Elke service heeft zijn eigen databaseverbinding en unieke configuratie:

  • MongoDB voor player- en match-service
  • MySQL voor team- en supporter-service
  • Beheer via Postman en endpointdocumentatie

Screenshots

Overzicht teams
Wedstrijd aanmaken
Speler detail
Supporters beheren

Reflectie

Dit project was een zeer leerrijke ervaring waarin we theorie en praktijk optimaal konden combineren. De opdeling in microservices dwong ons om goed na te denken over domeinmodellering, servicegrenzen en dataconsistentie.

Daarnaast leerden we:

  • Hoe containerisatie met Docker het ontwikkelproces vereenvoudigt.
  • Hoe je met verschillende databases tegelijk werkt binnen één ecosysteem.
  • Hoe belangrijk een duidelijke API en goede endpointdocumentatie zijn.
  • Hoe je frontends en backends gescheiden maar gecoördineerd ontwikkelt.

We zijn trots op het eindresultaat en zien dit project als een waardevolle voorbereiding op real-world softwareontwikkeling binnen grotere teams en complexe systemen.