Skip to content

Choix technologiques

GregoireAntoine edited this page Mar 24, 2021 · 29 revisions

Front-end:

React

Nous utiliserons dans le cadre ce projet React qui s’appuie sur une très importante communauté Open Source, ce qui est primordiale lors du développement de notre application. Avec cette bibliothèque il est possible de développer en JavaScript classique, ce qui nous laisse une plus grande liberté lors du développement. A savoir que nous maitrisons aisément le Javascript. Nous utiliserons aussi Flux et Redux afin de compléter au mieux React pour faire de celui-ci un réel framework.

De plus, React est beaucoup plus facile à apprendre qu’Angular, et n’agit que très peu sur le DOM car il utilise une DOM virtuel.

Concernant le développement web, le framework ReactJS sera utilisé. Lors d'un sondage, React est couramment utilisé par 53 % des sondés, tandis que 32 % prévoient d'en apprendre le fonctionnement. Angular est mis en œuvre par 30 % des sondés, et 10 % comptent l'essayer.

Les avantages de React sont multiples. La rapidité du rendu fait partie des fonctionnalités-phares de React et lui donne un avantage certain sur Angular. Cette technologie embarque des méthodes de réduction du nombre d'opérations sur le DOM, ainsi que d'optimisation et d'accélération du processus de mise à jour. Le DOM (Document Object Model) est d'une grande utilité en cas de gestion de grosses bases de données. Le JSX est une syntaxe JS qui autorise les citations en HTML et l'utilisation du balisage HTML lors du rendu des sous-composants.

Il favorise l'élaboration d'un code lisible par la machine et offre la possibilité de constituer des composants en un seul fichier vérifié au moment de la compilation. ReactJS produit du code « propre » (simple à lire), sa lecture permet de déterminer immédiatement quelles sont les fonctionnalités de votre application. Ce qui est essentiel pour la maintenance et l’expansion de votre projet dans le temps.

ReactJS à pris le concept de Shadow DOM et du framework PolymerJS et l’a poussé à un niveau supérieur. React.js n’utilise pas Shadow DOM – à la place il vous donne l’habilité de créer vos propre composant que vous pourrez réutiliser plus tard, combiner, et/ou inclure dans le cœur de votre contenu. Cette fonctionnalité à elle seule est un gage de productivité de par la facilité à définir et manipuler vos propres composants. C’est LA fonctionnalité qui fait la différence par rapport aux autres frameworks. Grâce à l’utilisation d’un serveur Node, le code va pouvoir être généré côté client ET côté serveur (un peu comme du PHP donc… tout en gardant les avantages du Javascript !) à la différence des autres frameworks JS traditionnels (Backbone.js, AngularJS, Ember.js, etc.) qui de manière native exécutent le code seulement côté client (dans le navigateur). Jusqu’à présent il était obligatoire de faire passer un bot (service gratuit ou payant) pour qu’il crée des fichiers HTML référençables.

Nous pouvons également très facilement voir que React est très demandé par les entreprises tout comme Angular tandis que vue ne l'est quasiment pas.

Angular est aussi selon plusieurs sources, plus difficile à appréhender au début. Alors que React lui dans un premier temps est beaucoup plus simple à la compréhension.

Bootstrap

Le framework Bootstrap est donc un ensemble de fichiers CSS et JavaScript qui contiennent des règles prédéfinies et qui définissent des composants. Ces ensembles de règles sont enfermés dans des classes et nous n’aurons donc qu’à utiliser les classes qui nous intéressent afin d’appliquer un ensemble de styles à tel ou tel élément HTML.

Bootstrap utilise également des fichiers JavaScript et notamment des librairies JavaScript externes comme jQuery ou Popper pour définir des composants entiers comme des barres de navigation, des fenêtres modales, etc. qu’on va pouvoir également directement implémenter.

Le choix de Bootstrap nous a semblé le plus judicieux pour plusieurs raisons.
Tout d'abord, pour son système de grille qui nous permettra de développer notre site web pour n'importe quel type d'écran. De plus, il nous propose une très grande collection de composants. Enfin, possède une très grande communauté sur qui nous pourront compter pour avoir de l’aide ou plus encore réutiliser les composants de la communauté.

Il fait gagner un temps considérable de boulot mais en utilisant bootstrap , oui , tout les sites ce ressemble mais il ne n'empeche pas de rajouter son propre css. Il comporte une très grande collection de composants. C'est aussi un frameworks appartenant à une grande société ( Twitter) ce qui confère une certaine sécurités quant à son utilisations, son développement et sa longévité.

Il y a néanmoins quelques désavantages comme le fait qu'il soit assez assez lourd comparé à certains autres frameworks css. Il nécessite de le surcoucher pour ne pas que notre site ne soit exactement le même que des centaines ou milliers d'autres sites.il est vrai qu’une personne maîtrisant parfaitement Bootstrap va pouvoir réaliser des design complexes très rapidement, il faut prévoir un certain coût d’apprentissage pour un néophyte pour pouvoir utiliser toute la puissance de Bootstrap et pour l’utiliser convenablement.

Comparé à Angular et react, bootstrap nous permet de pousser beaucoup plus loin le design de notre site de manière plutôt simple étant donné que nous utilisons déjà les librairies de base que nous n'aurons qu'à upgrade le moment voulue pour rendre notre site au design unique.


Back-End:

Node.js

Node.js nous permet de faire du Full-Stack en JavaScript.

Le gestionnaire de paquets npm est très facile d'utilisation et très bien fourni. La communauté est très active donc ça permet de trouver rapidement des solutions aux problèmes rencontrés.

On gagne également du temps en utilisant Node.js car on n'a pas besoin de réapprendre quelque chose de nouveau comme on a déjà travaillé avec.
vant Node.js, JavaScript était uniquement utilisé pour le développement frontend (côté client).

Il était nécessaire d'utiliser un autre langage de programmation pour la partie backend (côté serveur). En pratique, vous étiez obligé d'avoir deux équipes de développeurs, une pour le frontend et une autre pour le backend. Avec la popularité croissante de Node.js, le mythe du développeur fullstack est devenu réalité. Contrairement à d'autre langage, sachant que nous travaillons déjà avec des outils js, qui ne nous permettent pas de faier facilement du développement fullstack pour chacun des membres du groupe. Si nous avions choisi Django je pense qu'il nous aurait été plus difficile de réaliser le back-end étant donné que Django fonctionne en python langage que nous métrisons peu ou même pas du tout. Donc l'utilisation de Django nous aurait encore un peu plus ralenti dans la réalisation de notre site.

Aujourd'hui, il est possible de coder les deux parties d'une application web en JavaScript. C'est un gain de temps pour le développeur et une économie d'argent pour l'entreprise.Node.js est une plateforme logicielle libre en JavaScript intégrant un serveur HTTP. Son fonctionnement est basé sur une boucle événementielle lui permettant de supporter de fortes montées en charge. L’utilisation de Node.js en tant que serveur web permet de traiter un gros volume de requêtes simultanément de manière efficace. Cette performance élevée s’explique par une conception asynchrone (modèle non bloquant) permettant d’éviter les attentes. Ainsi, plusieurs requêtes peuvent être lancées en parallèle. Les résultats sont traités au fil de l'eau.Node.js rassemble une grande communauté de développeurs passionnés.

Il existe des Mooc, des webinaires ou des cours en ligne pour apprendre à utiliser Node.js. Les articles spécialisés et les événements permettent de partager les avancées de Node.js. Des Meetups, des conférences ou des formations sont accessibles dans toutes les grandes villes. Node.js c'est avant tout du JavaScript et du JS il y en a partout. Node.js n’est plus la petite dernière des technologies. C'est une technologie utilisée et éprouvée par les géants du web : Netflix, Trello, PayPal, LinkedIn, Walmart, Uber, Medium, Groupon, Ebay ou la NASA.

MariaDB

Nous avons besoin d'une base de données structurée. MariaDB est en plus open source et possède une grande communauté, ce qui est pratique pour faire des recherches. C'est également pratique pour nous car nous sommes habitués à utiliser MySQL et MariaDB est très ressemblant (MariaDB est un fork de MySQL).MariaDB introduit des microsecondes dans ses types de données temporelles.

Moteurs de stockage : MariaDB utilise XtraDB, InnoDB, MariaDB ColumnStore, Aria, Archive, Blackhole, Cassandra Storage Engine, Connect, CSV, FederatedX, Memory storage engine, Merge, Mroonga, MyISAM, MyRocks, QQGraph, Sequence Storage Engine, SphinxSE, Spider, TokuDB. ColumnsStore est intéressant du point de vue des performances, car il permet une mise à l’échelle linéaire pour traiter des pétaoctets de données. En savoir plus à ce sujet sur leur blog.MySQL est sous l’égide du plus grand fournisseur de bases de données commerciales au monde.

Avec tant d’ingénieurs à plein temps travaillant 24 heures sur 24 pour développer de nouvelles fonctionnalités de qualité supérieure, nous avons déjà quelques points de divergence. MariaDB, d’autre part, rattrape généralement son retard lorsqu’il s’agit d’ajouter des fonctionnalités, mais ce n’est pas toujours immédiat et il n’y a aucune garantie.

Cela dit, il existe de nombreux scénarios dans lesquels MariaDB offre des performances améliorées. Ajoutez à cela des correctifs et des mises à jour plus agiles, un avenir open source plus stable, et un peu plus d’optimisme et vous verrez pourquoi mais nous utilisons MariaDB dans le cadre de notre projet, la pile de serveurs basée sur les performances. Voici une liste non exhaustive des avantages de mariedb :

Améliorations considérables des sous requêtes depuis la version 5.3 Réplication plus efficace et sécurisée, commit groupé du log binaire, en cas de crash, toutes les transactions commitées seront présentes après récupération et ce dans un état cohérent. Amélioration des I/O asynchrones sous Windows avec le moteur InnoDB Moteur d’index amélioré pour les tables mémoire (moteur MEMORY), pour les tables temporaires dont l’accès est plus rapide en mémoire que sur disque. CHECKSUM_TABLE amélioré pour la comparaison de tables. Conversion des caractères plus rapides (1 à 5%) Pool de connexions amélioré, capable de supporter jusqu’à 200.000 connexions simultanées. Mode DEBUG amélioré Moteur ARIA amélioré pour les requêtes complexes, le moteur privilégiant le stockage des tables temporaires dans la mémoire plutôt que sur disque. Réorganisation et optimisations des jeux de tests.

Nous pouvons dire avec certitude que mariadb contrairement à mysql et mongodb utilise pour le;moment plus de technologie et est vouez à un avenir plus solide que les deux solutions citées précédemment car les developpeurs aujourd'hui aiment les outils open source, c'est une sorte d'assurance qualité mais aussi le fait d'utiliser un nombre incalculable de technologies supplémentaire lui confère une place très sérieuse dans les années à venir et donc nous trouvons important de ce familiarisé avec des technologies qui l'ont pense, seront les technologies par défaut de demain.

Sequelize :

Sequelize est un ORM basé sur les promesses. Cette librairie puissante et pratique, elle nous permet d'avoir un code clair et solide.

PassportJS :

Un middleware qui nous permet la gestion d'utilisateurs (Création, connexion, etc.).

SOURCE

https://www.ocsigroup.fr/blog/reactjs-vs-angular-quel-est-le-meilleur

https://www.acseo.fr/6-raisons-daimer-reactjs

https://www.pierre-giraud.com/bootstrap-apprendre-cours/introduction/

https://www.smooth-code.com/articles/6-raisons-de-choisir-node-js

https://kinsta.com/fr/blog/mariadb-mysql/#differences

https://easy-bi.org/blog/mariadb-lalternative-mysql/


Clone this wiki locally