Portfolio de Dasek Joiakim - Semestre 4
Semestre 3
M8

Compétence M8

En fonction des projets déterminés autour de la « Conception et implémentation des services numériques », savoir identifier, choisir (y-c défendre) et adapter les solutions les plus appropriées pour les défis rencontrés

Projet Koloka

State management

Choisir le bon state manager : J'ai dû prendre une décision sur les différents gestionnaires d'états (state management) dans React. Voici le tableau comparatif que j'ai fait pour prendre ma décision :

BibliothèqueDescriptionTaille de la communautéDocumentationPerformancesFlexibilité
ReduxGestion d'état prévisible pour les applications JavaScript.Très grandeExcellenteBonnes, mais nécessite une configuration correcteHaute, mais peut être verbeuse
MobXGestion d'état réactive simple basée sur des observables.GrandeBonneExcellentes, en particulier pour les applications complexesHaute, grâce à une approche plus déclarative
Context API (React)Gestion d'état native de React basée sur le contexte.GrandeBonneDépend de l'implémentation spécifique, peut nécessiter l'optimisationFaible, adaptée aux petites applications
RecoilBibliothèque expérimentale de gestion d'état pour React de Facebook.En croissanceBonnePerformante, prend en charge la sélectivité des rendusMoyenne, spécifique à React, mais assez flexible
ZustandBibliothèque minimaliste pour la gestion d'état en React.PetiteBonneTrès bonnes, légère et optimiséeÉlevée, tout en restant simple
JotaiBibliothèque de gestion d'état atomique pour React.En croissanceBonnePerformante, basée sur des atomes réactifsÉlevée, approche simple avec des atomes atomiques

Le choix final a été Jotaï, car il a de très bonnes performances et une approche simple avec le pattern atomique. Cela permet par exemple de créer un ensemble d'atom pour la fonctionnalité de chat. Mais l'élément le plus important lorsque j'ai testé les différents state manager était la possibilité d'hydrater côté serveur un atom et le rendre disponible de manière global dans toute l'applications. Ce qui n'est pas focément possible avec tous les state manager.

En utilise useHydrateAtom, j'ai pu hydrater les atomes côté serveur et les rendre disponible dans toute l'application :

hydrate atom

Déploiement

Après avoir réfléchis et designé l'application Koloka avec un serveur Backend, un serveur Frontend, un serveur de base de données et un serveur de cache, j'ai dû choisir comment déployer l'application. Selon ce design, l'application Koloka ne pouvais pas être totalement héberger sur un PaaS comme Heroku ou Netlify. J'ai donc dû choisir un IaaS pour déployer l'application. Plusieurs concurrents se sont présentés à moi :

J'ai choisi AWS, parce que les autres concurrents ne proposaient autant de service différents que AWS. AWS propose le service RDS pour la base de données, le service Elasticache pour le cache, le service EC2 pour le serveur Backend et le service S3 pour les données statiques. AWS propose aussi un service de déploiement continu, CodePipeline, qui permet de déployer automatiquement le serveur Backend et le serveur Frontend. Amazon permet de lancé les services facilement partout dans le monde, ce qui est un avantage pour que les serveurs soient au plus proche de l'utilisateur (Edge computing) ! Ce choix est particulièremenet adapté au projet Koloka, sachant que les autres concurrents seraient de bons condidats pour des projets plus simples.

Outil de gestion de projet

J'ai du choisir un outil de gestion de projet au cours de ma formation. Celui que j'ai souvent entendu parler est Jira. Le prolème avec les outils de gestion de projet est qu'ils sont souvent très limités dans leur version gratuite. Avant d'utiliser cet outil, je m'étais familiarisé avec Plane (opens in a new tab), qui est un outil de gestion de projet très performant et surtout open-source ! C'est cela qui m'a convaincu de l'utiliser. Cependant il n'est pas encore assez mature pour être utilisé en production.

J'ai donc choisi Jira, car il est souvent utilisé dans les entreprises. Le choix de Jira se portait surtout sur le fait qu'il me serait favorable de savoir l'utiliser pour mon futur. J'utilise les deux outil de gestion de projet en parallèle, car j'aime les projets open-source et je trouve que Plane peut être un fort compétiteur de Jira dans le futur. Souvent les projet-opensource se font par l asuite de l'argent en propsant de simplifier le déploiement de l'outil en production. Ce qui est avantageux pour les personnes qui ne veulent pas s'embêter avec la configuration de l'outil. Pour ma part je préfère avoir un contrôle total sur l'outil et je préfère donc utiliser la version open-source.

L'interface de Plane est quasiement identique à celle de Jira, ce qui est un avantage pour les personnes qui veulent switcher d'un outil à l'autre.

Plane