Choix technologie - miguel-antoons/projet_webdev GitHub Wiki
Backend
Flask :
Pourquoi nous avons choisis FLASK:
- C'est un petit Framework python très léger et nous avons grâce au premier semestre de meilleurs connaissance en python avec lequel nous somme a l'aise. De plus nous pouvons coupler flask avec d'autre librairies ce qui nous offre une plus grande liberté.
- c'est un framework pour de petits sites/application comme notre cas.
- Serveur Web intégrer (Pas besoin installer Apache ou autre), donc nous pouvons effectuer nos tests directement dessus.
Bien sur nous aurions pu choisir d'autre langage de backend telle le PHP, Node.js ... . Mais nous somme fortement attachée au python qui est un langage en croissance.
Le PHP est un langage qui à fait ses preuves en Backend durant tant années, mais le python est de plus en plus populaires et utilisée.
Flask ou Django:
Tous d'abord Flask est plus simple d'utilisation et est pratique pour des petites applications. Ensuite nous avons un contrôle total sur la construction de l'application pendant la phase de développement, un serveur est directement intégré ainsi que les tests unitaires. Enfin le framework est beaucoup plus léger avec des fonctionnalités minimalistes, nous devons travailler avec des bases de données qui utilise des requêtes SQL ce qui nous convient puisque nous utilisons MySQL.
Tandis que Django nous offre moins adapté pour de petite application, il utilise un système ORM qui permet de travailler avec plusieurs bases de données ce qui ne nous conviens pas.
(src : https://hackr.io/blog/flask-vs-django) (src : https://waytolearnx.com/2020/02/cest-quoi-django-avantages-et-inconvenients.html)
Frontend
React :
Pourquoi nous avons choisi React :
- React ne fonctionne qu'avec du JavaScript un langage qui nous est fortement familier et avec lequel nous somme à l'aise.
- React dispose de DOM virtuel, ce qui est plus léger et rapide pour effectuer des manipulations.
- Le react est plus demandé que l'angular dans le monde professionnel.
source : react vs angular
Base de données
MySql :
Pourquoi nous avons choisis Mysql
- Mysql est un logiciel gratuit.
- Il est facile à prendre en main, de plus Certains d'entre nous ont déjà utilisé MySql .
- C'est une base de donnée très performante.
source : https://www.mysql.com/fr/why-mysql/?main=1&topic=12&type=22&lang=fr
arborescence des fichiers
Vu que nous utilisons Flask et react nous allons utiliser celle qui est conseillée par ceux-ci
-
server
└──app.py -
client
├── node_modules
├── package-lock.json
├── package.json
├── public
│ ├── favicon.ico
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── robots.txt
└── src
├── App.css
├── App.js
├── App.test.js
├── index.css
├── index.js
├── logo.svg
├── serviceWorker.js
└── setupTests.js
Mise en place du backend
Pour le serveur Backend nous avons utilisé Gunicorn.
Gunicorn, pour « Green Unicorn » (Licorne Verte), est un serveur web HTTP WSGI écrit en Python et disponible pour Unix.
Pourquoi Gunicorn ? :
- Configuration simple en Python
- Configuration de multiples sous-processus
Pourquoi ne pas avoir utilisé flask pour la production ? :
- Il ne traitera pas plus d'une demande à la fois par défaut.
- Si vous laissez le mode débogage activé et qu'une erreur apparaît, cela ouvre un shell qui permet d'exécuter du code arbitraire sur votre serveur (pensez os.system('rm -rf /')).
- Le serveur de développement ne s'adapte pas bien.
Flask utilise le serveur de développement de Werkzeug, et la documentation dit la même chose:
Le serveur de développement n'est pas destiné à être utilisé sur des systèmes de production. Il a été conçu spécialement à des fins de développement et fonctionne mal sous une charge élevée. Pour les configurations de déploiement.
Réference : https://stackoverflow.com/questions/12269537/is-the-server-bundled-with-flask-safe-to-use-in-production