Skip to content

np111/P8_tourguide

 
 

Repository files navigation

TourGuide

build codecov.io

TourGuide is a mobile and PC application that will change the way you travel!

Poster

Documentation

Enhanced performance (730x faster!)

Since the legacy version, tracking performance was improved by parallelizing tasks and replicating overloaded services (to remove the bottlenecks).

Here is a benchmark for 100 000 users (AMD Ryzen 9 3900XT - 24 x 4.0GHz • 64GB RAM):

  • Before (2 hours, 5 minutes and 48 seconds):

    Begin Tracker. Tracking 100000 users.
    [...]
    Tracker Time Elapsed: 7548.387s.
    
  • After (10 seconds):

    Begin Tracker. Tracking 100000 users.
    Tracking progression:   7984/100000 Δ  7984 | 1.000s
    Tracking progression:  17514/100000 Δ  9530 | 2.000s
    Tracking progression:  27282/100000 Δ  9768 | 3.000s
    Tracking progression:  37610/100000 Δ 10328 | 4.000s
    Tracking progression:  47746/100000 Δ 10136 | 5.000s
    Tracking progression:  57736/100000 Δ  9990 | 6.000s
    Tracking progression:  67714/100000 Δ  9978 | 7.000s
    Tracking progression:  77620/100000 Δ  9906 | 8.000s
    Tracking progression:  87556/100000 Δ  9936 | 9.000s
    Tracking progression:  97174/100000 Δ  9618 | 10.000s
    Tracking progression: 100000/100000 Δ  2826 | 10.327s
    Tracker Time Elapsed: 10.327s.
    

Getting started

These instructions will get you a copy of the project up and running on your local machine for development.

Prerequisites

Running services

Compile the application using gradle:

./gradlew build

Then start all services (each in a different terminal):

java -jar gps/service/build/libs/tour-guide-gps.jar
java -jar rewards/service/build/libs/tour-guide-rewards.jar
java -jar users/service/build/libs/tour-guide-users.jar

Testing

./gradlew test

Updating documentation

./docs.sh generate
./docs.sh publish

Deployment

Take a look at docker-compose.yml for an example of deployment. You can test it by running:

docker-compose -p tourguide up --remove-orphans --build

Deployment Overview

Notes

This is a school project (for OpenClassrooms).

The goal is to resolve performance issues, split a monolithic application into multiple services and deploy them with Docker.

About

This is a school project. Goal: fix performances, split into multiple services and deploy with docker. 🐋⚡

Topics

Resources

License

Stars

Watchers

Forks

Languages

  • Java 97.2%
  • Dockerfile 1.4%
  • Shell 1.4%