Choix technologiques - dudleydehenau/ScapeGame GitHub Wiki

Résumé coaching 2c

+ Le langage ou le framework choisi pour le backend, puis pour le frontend est décrit. Il s'agit de technologies "intéressantes" dans le cadre du projet.
+ Les spécificités de la technologie choisie sont mises en avant : avantages / inconvénients et comparaison avec minimum deux technologies concurrentes.  

1. Backend

[Node Js/ Express Js]

1.1 Justification du choix

Nous avons opté pour l'utilisation de Node.js et Express.js dans notre projet, car ces technologies offrent de nombreux avantages pour le développement rapide et efficace d'applications web performantes en temps réel. Avec Express, un framework largement adopté dans le développement web, nous pouvons exploiter de nombreuses fonctionnalités telles que la création de middlewares, la gestion des routes et des erreurs. De plus, Express est relativement facile à maîtriser, ce qui nous a permis de développer rapidement notre application. Bien que nous reconnaissions qu'il existe d'autres alternatives viables, comme Django et Flask, nous avons dû prendre une décision rapide pour notre projet en raison de contraintes de temps. À l'échelle et à la portée actuelles de notre projet, nous estimons que Node.js et Express.js sont des choix appropriés.

2. Backend : base de données

[MySQL]

2.1 Justification du choix

Nous avons choisi d'utiliser MySQL pour notre base de données en raison de plusieurs raisons qui correspondent à nos besoins et à la nature de notre projet. Voici pourquoi nous avons opté pour MySQL plutôt que d'autres options comme MariaDB ou MongoDB :

Fiabilité et robustesse : MySQL est connu pour sa fiabilité et sa robustesse, ce qui en fait un choix solide pour les applications nécessitant une gestion de données transactionnelles. Il a été largement utilisé et testé dans de nombreux environnements, ce qui nous donne confiance dans sa stabilité.

Prise en charge des transactions : MySQL offre une prise en charge complète des transactions ACID (Atomicité, Cohérence, Isolation, Durabilité), ce qui est crucial pour les applications où la cohérence des données est primordiale, comme les jeux où les scores doivent être enregistrés de manière fiable.

Performance : MySQL est optimisé pour les requêtes rapides et efficaces, ce qui est essentiel pour les applications web à forte charge. Il est capable de gérer un grand nombre de requêtes en parallèle, ce qui est idéal pour les jeux en ligne où de nombreux utilisateurs peuvent interagir simultanément.

Écosystème établi : MySQL est un système de gestion de base de données populaire avec une vaste communauté de développeurs et d'utilisateurs. Cela signifie qu'il existe de nombreuses ressources en ligne, des tutoriels aux forums de discussion, qui peuvent nous aider en cas de besoin.

Compatibilité : MySQL est largement compatible avec de nombreux langages de programmation et frameworks, ce qui simplifie l'intégration avec notre backend développé en Node.js et Express.js. De plus, de nombreux outils et bibliothèques tierces sont disponibles pour MySQL, offrant une flexibilité pour nos besoins spécifiques.

Bien que MariaDB et MongoDB soient également d'excellents choix avec leurs propres avantages, nous avons choisi MySQL en raison de sa fiabilité, de sa prise en charge des transactions, de ses performances, de son écosystème établi et de sa compatibilité avec notre technologie backend. Ces aspects combinés assurent que notre base de données répondra à nos besoins en matière de stockage et de gestion des données pour notre jeu en ligne.

3. Frontend

[Angular]

3.1 Justification du choix

Nous avons choisi Angular pour notre projet en raison de plusieurs facteurs clés qui répondent à nos besoins spécifiques. Voici pourquoi nous avons opté pour Angular plutôt que React :

Structure et organisation : Angular offre une structure et une organisation claires pour le développement d'applications web complexes. Son approche basée sur des composants facilite la division de l'application en modules réutilisables, ce qui est particulièrement avantageux pour les grandes équipes de développement travaillant sur des projets à grande échelle.

Framework complet : Angular est un framework complet qui comprend tout ce dont nous avons besoin pour développer une application web moderne, y compris le routage, la gestion des formulaires, la validation, et bien plus encore. Cela nous permet de rester concentrés sur le développement de fonctionnalités plutôt que sur le choix et l'intégration de bibliothèques tierces.

TypeScript : Angular est écrit en TypeScript, un langage fortement typé qui améliore la robustesse et la maintenabilité du code. Les fonctionnalités de typage statique de TypeScript nous aident à détecter les erreurs plus tôt dans le processus de développement et à améliorer la qualité globale du code.

Documentation complète : Angular bénéficie d'une documentation complète et détaillée, ce qui facilite l'apprentissage et la résolution des problèmes. L'écosystème d'Angular est également bien établi, avec une vaste communauté de développeurs et de ressources disponibles en ligne.

Prise en charge des applications SPA (Single Page Applications) : Angular est particulièrement bien adapté pour le développement d'applications SPA, où une seule page web est chargée initialement, puis le contenu est mis à jour dynamiquement sans rechargement de la page. Cela offre une expérience utilisateur fluide et réactive.

En résumé, Angular a été choisi pour sa structure organisée, sa complétude en termes de fonctionnalités, l'utilisation de TypeScript pour un code plus robuste, sa documentation exhaustive et sa prise en charge des applications SPA. Ces aspects combinés répondent aux exigences de notre projet et nous permettent de développer efficacement une application web moderne et performante.

4. Autres choix