Dit project is gemaakt voor het opleidingsonderdeel Advanced Programming Topics. Hier leerde we om Docker containers te maken met applicaties in plaats van bv. een JAR-bestand, toepassingen zoals SonarCloud, Selenium en GitHub Actions te gebruiken. Samen in team hebben we besloten om als onderwerp verschillende rondleidingen van verschillende monumenten uit de wereld te gebruiken.
Maak een microservice project dat minstens 2 microservices en een edge service bevat. De applicatie moet MongoDB en een andere niet MySQL database gebruiken. Elke microservice heeft een minimum of GET, POST, PUT en DELETE calls. Er moest ook unit en integratie testen voorzien worden. CI/CD deployment zou deze testen moeten uitvoerden. De .JAR zou als artefact naar een Docker image op Docker hub gestuurd moeten worden. SonarCloud moest toegevoegd worden aan de CI/CD.
Ik heb de Dockerfile en pipeline die gebruikt word door GitHub Actions voor elke microservice voorzien. De Dockerfile pakte een image en maakte deze klaar voor onze java applicatie. De CI/CD was ingesteld om uitgevoerd te worden bij elke GitHub push op een Ubuntu machine. Hier word ook verteld welke extra pakketten het systeem moet installeren, wat onze SonarCloud en GitHub tokens waren via GitHub Secrets. Tot slot werd de container naar Docker hub gestuurd.
Dit deel van het project was in Java een API schrijven met Spring Boot. Omdat we ervoor gekozen hebben om 3 microservices te maken heb ik geholpen met het schrijven van de endpoints. De code bevat een controller waar al deze endpoints zitten. Er is ook een model aanwezig waar alle propertjes van de objecten aanwezig zijn en een repository met alle calls naar een database.
Het toffe aan het gebruiken van microservices is dat je Kubernetes kan gebruiken. Als 1 deeltje van de applicatie heel veel verkeer krijgt kan deze makkelijk uitgebreid worden zodat de belasting verdeeld kan worden.
Maken van Docker containers en microservices is erg handig. Op deze manier kun je applicatie op eender welke machine gestart worden zonder extra pakketten te moeten installeren omdat deze automatisch mee geïnstalleerd worden. Hierdoor kan er ook zeer simpel uitgebreid worden als de applicatie veel verkeer ontvangt. In het begin leek Docker en Kubernetes heel moeilijk, maar uiteindelijk viel die heel erg mee. Mijn Docker en GitHub Skills zijn door dit project erg gestegen.
Voor meer informatie over dit project neem je best een kijkje op Github!