Coder Social home page Coder Social logo

examen-blanc-systemes-distribues's Introduction

Examen Systèmes Distribués 🎓

1.Project Presentation

  • On souhaite créer un système distribué basé sur les micro-services en utilisant une architecture pilotée par les événements respectant les deux patterns Event Sourcing et CQRS. Cette application devrait permettre de gérer les infractions concernant des véhicules suites à des dépassement de vitesses détectés par des radars automatiques. Le système se compose de trois micro-services :

    1. Le micro-service qui permet de gérer les radars
    2. Le micro-service d’immatriculation qui permet de gérer des véhicules appartenant des propriétaires
    3. Le micro-service qui permet de gérer les infractions.

Réalisation

  1. Etablir une architecture technique du projet Architecture CQRS :

Architecture du système :

  1. Etablir un diagramme de classe global du projet

  2. Développer le micro-service Radar

Le service « radar-commands-service » :

Les détails du micro service dans AXON :

Le service « radar-query-service » :

Les détails du micro service dans AXON :

Lancement de Axon dans Docker compose :

Axon dashboard :

  1. Développer le micro-service Immatriculation

Le service « Immatriculation-commands-service » :

Les détails du micro service dans AXON :

Le service « Immatriculation-query-service » :

Les détails du micro service dans AXON :

  1. Développer le micro-service Infractions

Le service « Infractions-commands-service » :

Les détails du micro service dans AXON :

Le service « Infractions -query-service » :

Les détails du micro service dans AXON :

  1. Mettre en place les services techniques de l’architecture micro-service (Gateway, Eureka Discovery service) Le service « Eureka-discovery-service » :

Le service « Gateway-service » :

  1. Développer votre application Frontend avec Angular ou React

Les composants :

La listes des radars :

Les événements passés sur un radar :

  1. Sécuriser votre système avec un système de d’authentification OAuth2 comme Keycloak

Création d’un realm :

Création d’un client :

Création des utilisateurs :

Création des roles :

Assignation des roles aux utilisateurs :

![](https://i.imgur.com/h6F2aDl.png)

Ajouter les dépendances suivantes dans les 6 micro services:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

<dependency>
    <groupId>org.keycloak</groupId>
    <artifactId>keycloak-spring-boot-starter</artifactId>
    <version>20.0.1</version>
</dependency>

Après, la partie de sécurité dans chaque micro-service :

La partie front « Authentification pour accéder » :

  1. Ecrire un script docker-compose.yml pour le déploiement de ce système distribué dans des conteneurs docker. Le script docker-compose :
version: '3'
services:
  eureka-service:
    build: ./discovery-service/
    hostname: discovery-service
    ports:
      - "8761:8761"
    networks:
      - default-network

  immatriculation-commands-service:
    build: ./immatriculation-commands-service/
    hostname: immatriculation-commands-service
    ports:
      - "8081:8081"
    depends_on:
      - eureka-service
    environment:
      - eureka.client.service-url.defaultZone=http://discovery-service:8761
    networks:
      - default-network

  immatriculation-query-service:
    build: ./immatriculation-query-service/
    hostname: immatriculation-query-service
    ports:
      - "8082:8082"
    restart: on-failure
    depends_on:
      - eureka-service
    environment:
      - eureka.client.service-url.defaultZone=http://discovery-service:8761
    networks:
      - default-network

  infraction-command-service:
    build: ./infraction-command-service/
    hostname: infraction-command-service
    ports:
      - "8090:8090"
    restart: on-failure
    depends_on:
      - eureka-service
    environment:
      - eureka.client.service-url.defaultZone=http://discovery-service:8761
    networks:
      - default-network

  infraction-query-service:
    build: ./infraction-query-service/
    hostname: infraction-query-service
    ports:
      - "8091:8091"
    restart: on-failure
    depends_on:
      - eureka-service
    environment:
      - eureka.client.service-url.defaultZone=http://discovery-service:8761
    networks:
      - default-network

  radar-command-service:
    build: ./radar-command-service/
    hostname: radar-command-service
    ports:
      - "8181:8181"
    restart: on-failure
    depends_on:
      - eureka-service
    environment:
      - eureka.client.service-url.defaultZone=http://discovery-service:8761
    networks:
      - default-network

  radar-query-service:
    build: ./radar-query-service/
    hostname: radar-query-service
    ports:
      - "8883:8883"
    restart: on-failure
    depends_on:
      - eureka-service
    environment:
      - eureka.client.service-url.defaultZone=http://discovery-service:8761
    networks:
      - default-network

  gateway-service:
    build: ./gateway-service/
    hostname: gateway-service
    ports:
      - "9999:9999"
    depends_on:
      - eureka-service
      - immatriculation-query-service
      - immatriculation-command-service
      - infraction-command-service
      - infraction-query-service
      - radar-command-service
      - radar-query-service
    environment:
      - eureka.client.service-url.defaultZone=http://discovery-service:8761/eureka
    networks:
      - default-network

networks:
  default-network:
    driver: bridge

la documentation swagger du « radar-command-service » :

la documentation swagger du « infraction-command-service » :

La documentation swagger du « infraction-query-service » :

la documentation swagger du « immatriculation-command-service » :

La documentation swagger du « immatriculation-query-service » :

La liste des dépassements de vitesse :

La liste des dépassements de vitesse :

La liste des radars :

La liste des événements dans AXON:

Les détails d’un événement :

Les commandes

La listes des queries des micro-services :

examen-blanc-systemes-distribues's People

Contributors

khaoulaelmajni avatar

Watchers

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