- Introduction
- Microservices
- Diagram
- Postman
- Swagger
- Unit and Integration tests
- Deploying using K8S secrets
- Front-end
- Requirements
Welcome ๐ to our project for the Advanced Programming Topics course. Our team ๐ฅ consists out of Jorne Marx and Pieter Pauwels.
For this project we created a microservice architecture that contains 3 microservices.
Our topic is based around car ๐ brands and different models that these brands contain. Our brand microservice makes use of MongoDB and our model microservice makes use of PostgreSQL.
For testing the endpoints we can meke use of Postman. At this link you can find the documentation for each endpoint of the edge service. You can also test these endpoints by clicking "Run in Postman" and then running the collection.
Making use of SwaggerUI we document the endpoints that can be accessed on the edge service.
For each 'back-end' microservice we added unit and integration tests. For the edge microservice we added unit tests, no integration tests because this service doesn't make use of a database but instead uses the 'back-end' services to connect to the database.
All the tests cover 100% of the methods for the controllers, repositories and constructors of the model classes.
This file contains the deployment configuration for all the services making use of K8S secrets for the usename and password.
By executing the command kubectl create secret generic apt-team7-secret --from-literal=POSTGRES_USER=postgres --from-literal=POSTGRES_PASSWORD=testgresql
we can define the secrets.
By executing the command kubectl apply -f https://raw.githubusercontent.com/PauwelsPieter/APT-TEAM7-EdgeService/master/deploy-all-secrets.yaml
we can create the services.
In this repository you can find our basic front-end application that communicates with the edge service. The front-end can be visited here: https://apt-team7.netlify.app/
The front-end is tested using Selenium in combination with Python. The code for this can be found in this repository. A demo of the Selenium testing can be found here: https://youtu.be/ujiZQOHegYE
-
Minimum 2 'Back-end' microservices
-
1 Edge microservice
-
Dockerfile for each microservice
-
README contains a short description for the chosen topic and a diagram of the complete microservice architecture.
-
Demonstrable functionality total achitecture by Postman requests on the Edge microservice.
-
Complete implementation SwaggerUI for the Edge microservice and screenshot(s) of the output in the README.
-
Minimum 4 GET endpoints on the Edge microservice, never searching on DB id.
-
POST, PUT and DELETE endpoints on the Edge microservice.
-
Minimum 2 GET endpoints on each 'Back-end'microservice, never searching on DB id.
-
POST, PUT and DELETE endpoints for minumum 1 'Back-end' microservice.
-
Making use of MongoDB and a no-MySQL DB.
-
Efficient use of @PathVariable vs. @RequestParam.
-
Unit tests for all microservice controllers.
-
Integration tests for all microservice controllers.
-
100% method test code coverage for controllers, repositories and constructors of model classes.
-
Each GitHub repository has a CI/CD pipeline that runs tests, uploads the .jar as artifact and pushes a Docker container to DockerHub, inclusive SonarCloud.
-
Deployment in K8S @ Oktato Cloud.
- Making use of K8S secrets for environment variables at deployment. (+5%)
- Keycloak integration. (+15%)
- Minimum 1 message queue with for example ActiveMQ. (+15%)
- Prometheus auto-scaling via an extra endpoint. (+15%)
- Basic front-end that communicates with the edge-service. (+15%)
- Selenium testing of the front-end (+15%)