Choix techniques - GonoGoat/RixRefugees GitHub Wiki

Introduction

Au cours de ce projet, beaucoup de technologies différentes risques d'être utilisées. Pour fournir des services, mais également pour permettre l'organisation et la supervision de ce projet. Vous retrouvez donc ici les différentes technologies utilisées accompagnées de leur but dans ce projet ainsi que des raisons de leur choix.

Technologies

Développement

En plus des justifications techniques qui vont suivre pour chaque technologie de développement, je tiens à ajouter que j'ai déjà utilisé chacun des langages cités. Ceci m'offre ainsi un énorme gain de temps en terme d'apprentissage, et m'assure également que je suis capable de produire un résultat concret. Les technologies Front-end et Back-End sont toutes les 2 en JavaScript, me permettant donc de ne pas avoir à jongler entre 2 langages différents.

Front-end

Choix : React js

Logo React

Justifications :

  • Mieux adapté pour des applications légères et dynamiques.
  • Performant grâce à l'utilisation de la DOM virtuelle.
  • Flexible grâce à tous les packages existants en JavaScript.
  • Beaucoup de ressources disponibles (articles, vidéos).
  • Création de composants réutilisables au sein de l'application.
  • Utilisation de JSX facilitant la programmation de rendu HTML.
  • Grande communauté prouvant l'efficacité du langage.

Alternatives :

  • Vue
  • Angular

Back-end

Choix : Node js

Logo Node js

Justifications :

  • Leader en technologie Back-End.
  • Flexible grâce à tous les packages existants en JavaScript.
  • Performances et rapidité élevées grâce à l'engine utilisée.
  • Forte présence de la communauté et de ses développeurs.
  • Documentation et autres ressources très riches.
  • Facile à faire répondre à de nouveaux besoins.

Alternatives :

  • Python (Django)
  • PHP

Base de données

Choix : PostGreSQL

logo postgre

Justifications :

  • Open-source et donc gratuite.
  • Enormément de fonctionnalités inclues et de fonctions prédéfinies.
  • Très bonnes performances dans l'envoi de données en JSON.
  • Meilleure garantie d'intégrité des données (respect des règles ACID).
  • Migration facile vers d'autres technologies si nécessaire.

Autres alternatives :

  • MySQL
  • MongoDB

Conteneurisation

Choix : Docker

Logo docker

Justifications :

  • Déploiement d'images préconfigurées avec certains services (images officielles ou spéciales via le DockerHub).
  • Consistent car les images sont déployées sous des distributions de Linux.
  • Solution gratuite.
  • Déploiement de service sous forme de code, facilitant la configuration du service.
  • Utile dans le cadre de l'intégration continue.

Alternatives :

  • Azure
  • VMWare

Testing

Afin de tester le bon fonctionnement de l'application, je vais également utiliser une série d'outils afin de tester les différents aspects de la plateforme. Les voici :

  • Tests unitaire/d'intégration Front-End : Jest en Enzyme/React Testing Library
  • Test d'intégration Back-end : Postman
  • Test End-to-End : Cypress

Collaboration

Afin de permettre à mon client d'avoir un accès aussi rapide que possible aux différentes parties du projet, j'ai décidé de choisir un série d'application me permettant de produire du contenu tout en le rendant accessible à mon client. Les voici :

  • GitHub : Outil de versioning ainsi que de publication de document dans le cadre du TFE.
  • Trello : Outil de gestion de tâche, me permettant d'organiser mon travail ainsi que de rendre visible l'évolution de celui-ci.
  • Clockify : Outil de gestion de temps, afin de pouvoir superviser le temps que j'investis dans le projet.
  • Lucidchart : Outil de création collaborative de diagrammes en tout genre.
  • Suite Google (Google Docs, Google Sheets) : Outils me permettant de créer des documents accessibles et modifiables en ligne par le client.
  • Microsoft Teams et Messenger : Outil de communication directe avec le client.