Zoo management
Technologiën
Achtergrond
Een microservices structuur die het beheer van de onderdelen van een dierentuin mogelijk maken.
Maakt gebruik van drie Java API's toegankelijk via een gateway, GitHub actions en authenticatie met Google en een React frontend.
Gehost met behulp van Docker images en Kubernetes manifest files.
- Opleidingsonderdeel Enterprise Development Experience
- Derde opleidingsjaar eerste semester
- Individueel project
Documenten

Aanpak
Java API's
De applicatie maakt gebruik van drie API's. Zijnde voor het voedsel, de dieren, en de omgevingen binnen de dierentuin.
De API voor omgevingen is afhankelijk van de API voor de dieren, die dan weer afhankelijk is van de API voor de omgevingen. De communicatie gebeurt proper door middel van data transfer objects.
Elke API heeft de klassieke CRUD endpoints. Maar er zijn ook uniekere, zoals bijvoorbeeld het updaten van stock van voedsel.
De API van omgevingen maakt gebruik van MongoDB, terwijl de andere MySQL gebruiken.
Gateway
De API's zijn toegankelijk door de Java API gateway, die zo de toegang tot de microservices structuur kan beveiligen.
Dat gebeurt door middel van Google authenticatie, die nodig is om de API's aan te spreken.
GitHub actions
Het project maakt ook gebruik van GitHub actions. Bij een push naar de master branch zullen er aantal acties ondernomen worden in een pipeline.
De zelfgeschreven unit testen worden voor elke API uitgevoerd, en er wordt een nieuwe Docker image gebuilt en verzonden naar Dockerhub.
Hosting
Om het project te hosten gebruikte ik Okteto, waarin je een docker-compose of kubernetes manifest files aan kon meegeven.
In mijn kubernetes files maakte ik gebruik van een NodePort bij de API gateway om deze publiek toegankelijk te stellen.
React
Ik heb voor extra punten ook een React frontend toegevoegd aan het project.
Het was niet de meest aantrekkelijke frontend, maar het was een leerrijk moment om te leren authenticeren via Google bij de API gateway.
Conclusie
In dit project heb ik heel veel bijgeleerd over verschillende development aspecten.
Communicatie tussen en met API's, met verschillende databases. Automatisering met testing en docker images.
Het project verbeterde mijn kennis van full-stack applicaties die gebruik maken van API's en een JavaScript frontend.