Projet EIG 2011
Auteurs : * Pacien TRAN-GIRARD * Benoît LUBRANO DI SBARAGLIONE
Description du projet
Plate-forme d'enchères simplifiée où les utilisateurs peuvent : * créer un compte * s'authentifier * vendre des items * visualiser la liste des items en vente * enchérir * visualiser l'historique des transactions, le solde et le solde disponible
Description générale de la solution proposée
Application web
La plate-forme a été implémentée sous la forme d'une application web simpliste. Le langage Scala ainsi que le framework Play! ont été utilisés.
L'application communique avec la base de donnée Oracle ou PostgreSQL à l'aide de Slick. Slick permet d'effectuer des requêtes à la manière de SQL, mais en assurant la cohérences des types au sein de l'application, tout en évitant les injections SQL.
Base de donnée
Les comptes utilisateurs, les items en vente, les enchères et les transactions, ainsi que les frais annuels sont stockés en base dans des tables correspondantes.
Tous les enregistrements sont référencés par des UUIDs afin d'être récupérés facilement par l'application web.
Conformément au cahier des charges, toutes les transactions internes (suite à des enchères remportées) et externes (virements) sont répercutées manuellement, bien que l'application puisse le prévoir.
Des vues permettent d'obtenir le solde, le solde disponible et les ventes avec les enchères gagnantes.
Il a été choisi de n'utiliser des fonctions stockées que pour la date et la génération des UUID pour faire abstraction des fonctions aux noms différents selon le SGBD utilisée.
Les procédures et fonctions stockées n'ont pas été utilisées pour la communication entre l'application et la base de donnée. En effet, leur utilité au niveau du contrôle d'accès ne fait plus lieu avec une application web. De plus, il a été constaté à la suite de tests qu'elles empêchaient le fonctionnement du cache au niveau de l'application web, et perturbaient l'optimiseur de la base de donnée, qui les voyait comme des boîtes noires, n'optimisant de ce fait les requêtes internes que de façon séparée.
La fonction stockée renvoyant la date "actuelle" n'a pas été utilisée. En effet, son utilisation provoquait des problèmes de cohérence quand il s'agit d'enchérir dans le passé. L'enchère la plus récente ne devenait plus la meilleure par exemple.
Compilation et exécution de l'application
Configuration de l'environnement
La configuration de l'application s'effectue par la création de variables d'environnement.
export DATABASE_DRIVER="oracle.jdbc.driver.OracleDriver"
export DATABASE_URL="jdbc:oracle:thin:trangirp/firstjackal97@mvx1.esiee.fr:1521:XE"
Compilation et exécution
Le projet utilise Activator ainsi que SBT pour la compilation et la gestion des dépendances.
Le démarrage de l'application s'effectue simplement via la commande
activator start
Il est aussi possible de créer un packetage destiné à être publié avec la commande
activator dist
Exécution sur Heroku
L'application a été déployée sur Heroku à l'adresse :
https://minibay.herokuapp.com/
Pistes d'amélioration
- Implémenter les pages et actions manquantes
- Hasher les mots de passe
- Mieux gérer le cache