Git Product home page Git Product logo

apt-team7-edgeservice's Introduction

APT-TEAM7-EdgeService

Introduction

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.

Microservices

Diagram

Diagram

Postman

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. postmanTests

Swagger

Making use of SwaggerUI we document the endpoints that can be accessed on the edge service.

swaggerListOperations swaggerExpandOperations

Unit and Integration tests

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.

Edge service

codeCoverageEdgeService

Brand service

codeCoverageBrandService

Model service

codeCoverageModelService

Deploying using K8S secrets

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.

The result: DeployModelServiceSecrets

Front-end

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

Requirements

General

  • 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.

Extra

  • 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%)

apt-team7-edgeservice's People

Contributors

pauwelspieter avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.