Portfolio de Dasek Joiakim - Semestre 4
Semestre 3
M6

Compétence M6

Être capable d’intégrer l’impact du numérique dans un développement durable de l’entreprise

Intégrer l'impact du numérique dans un développement durable de l'entreprise signifie prendre en compte de manière proactive les aspects environnementaux, sociaux et économiques liés aux technologies de l'information. Cela implique d'adopter des pratiques responsables, de minimiser l'empreinte écologique, et de contribuer positivement à la durabilité à travers la gestion des ressources et des projets informatiques.

Workshop durabilité

En début de semestre, nous avions un workshop à présenter sur la durabilité, j'ai du rédiger en groupe un document pour s'ensibiliser l'impact du numérique dans le développement durable de l'entreprise. Il a fallu faire des recherches sur les impacts du numérique, les bonnes pratiques à adopter etc... Le document introduit le sujet et présente la sobriété numérique au travers de l'écologie, l'économie et la société :

Écologique

Réduction de l'empreinte carbone Conservation des ressources par la durabilité, la réparation, et le recyclage

Économique

Réduction des coûts par l'efficacité énergétique et la gestion responsable des ressources Favorise l'innovation et la compétitivité sur un marché axé sur la durabilité

Sociale

Protection de la santé mentale par une utilisation réfléchie de la technologie Promotion de l'accès équitable aux technologies, y compris pour les populations marginalisées

J'ai apporté ma contribution sur des statistiques et des exemples chiffrés sur l'impact du numérique dans le développement durable de l'entreprise. Quelques exemples chiffrés :

Le numérique c'est :

  • 4,2% de l'énergie primaire consommée par l'humanité
  • 5,5% de l'électricité produite dans le monde
  • 0,2% de l'eau disponible
  • Envoyer un mail consommerait autant qu'une empoule allumée pendant 25 minutes.
  • 57% de la population mondiale navigue sur internet.
  • On sait qu'un utilisateur du réseau pèse 269g de CO2 par an.

Il faut comprendre qu'il existe des entreprises qui on conscience de l'impact du numérique sur l'environnement. Par exemple Youtube qui fonctionne avec 56% d'énergie renouvelable...

Etre capable de suivre les évolutions dans son domaine technologique (veille)

La veille technologique est une activité continue qui consiste à s'informer de façon systématique sur les techniques et les méthodes les plus récentes dans son domaine d'activité. Elle permet de se tenir au courant des dernières innovations et de les intégrer dans son travail.

Veille technologique

J'effectue une veille technologique sur les technologies que j'utilise au quotidien. J'ai plusieurs ressources pour m' informer sur les nouveautés :

  • Pour ce qui est du projet Koloka, je suis sur Github l'ensemble des dépendances pour le bon fonctionnement du projet (Strapi (opens in a new tab) et Next.js (opens in a new tab)). C'est à dire que lorsque un patch, une mise à jour ou une nouvelle version sort, je suis au courant. Les développeurs de la dépendance font un changelog pour expliquer les nouveautés.
  • Pour ma culuture des technologie web, je suis depuis plusieurs années des youtubers dans la grande majorité des cas son anglais. J'ai effectué un nettoyage de tous mes abbonement et les quelques 10 youtubers qui ont différents niveau d'approche pour les technologies web. C'est très intéressant et cela m'ouvre l'esprit sur les différentes façons de concevoir un projet.
  • J'ai aussi un site qui s'appelle Dev.to (opens in a new tab) qui est une plateforme de partage de contenu pour les développeurs. C'est un peu comme un Reddit mais pour les développeurs. Il y a des articles, des questions, des réponses, des discussions etc... C'est très intéressant et cela permet de voir les différentes façons de faire pour un même problème.
  • Le dernier moyen que j'utilise pour ma veille technologique est Daily.dev (opens in a new tab). C'est une application web qui permet de voir les dernières actualités sur les technologies web. C'est un aggregateurs de contenu qui regroupe les articles de plusieurs sites web.

Voici une représentation (opens in a new tab) des différents choix technologique que je pourrais utiliser lors de la conception d'un projet SaaS.

Savoir analyser un système d'information simple pour en détecter les évolutions/améliorations possibles

Projet Koloka

Système de stockage d'image

Il s'agit de la deuxième année sur le projet Koloka et j'ai dernièrement fait une retrospective sur les choix que nous avons fait l'année dernière. J'ai pu voir que nous avons pris de bonnes décisions et certaine pouvait être améliorées.

Par exemple, nous avons une fonctionnalité d'upload d'image pour les annonces de Kolokation, ce processus va téléverser l'image dans un dossier spécifique sur le serveur. Mais au fil du temps quand nous testions le projet, je me suis rendu compte qu'il commençait à y avoir beaucoup d'images.

J'avais déjà en amont décider de déployer Koloka sur AWS. J'ai exploré les différents ervice que propose AWS et je me suis rendu compte qu'il y avait un service qui s'appelle S3 (opens in a new tab) qui permet de stocker des assets statiques. C'est à dire que nous pouvons stocker des images, des vidéos, des fichiers etc... C'est un service très intéressant car il permet de stocker des fichiers et de les servir via une URL. Cela permet de ne pas surcharger le serveur et de ne pas avoir à gérer le stockage des fichiers. J'ai donc du configurer le bucket S3 et implémenter le code pour que les images soient stockées sur S3.

S3

Système de messagerie

Pusher a été le service finalement choisi pour le système de messagerie. C'est un service qui permet de faire de la communication en temps réel. C'est à dire que lorsque un utilisateur envoie un message, le message est envoyé à Pusher qui va ensuite le diffuser à tous les autres utilisateurs abonnés à ce canal.

Sur du long terme, le but pour Koloka sera de ne pas dépendre de service externe comme Pusher. J'ai donc effectuer lors de ma lecture individuelle sur Docker, un playground où je montre de A à Z comment mettre en place un système de messagerie from scratch. C'est à dire que je montre comment mettre en place un serveur de WebSocket, une application client qui va se connecter au serveur de WebSocket et un système de messagerie. J'ai utilisé Docker pour mettre en place le serveur de WebSocket et l'application client. J'ai utilisé Node.js pour le serveur de WebSocket et Next.js pour l'application client. J'ai donc pris un élan d'avance sur le projet Koloka pour pouvoir mettre en place un système de messagerie si besoin.

Strapi custom backend

Je me suis rendu compte que certaine fonctionnalité que nous devions implémenter devaient nécessité une logique métier bien particulière. Par exemple, la fonctionnalité de chat, qui communique avec Next.js puis Strapi et enfin Pusher. Il est nécessaire pour cela de customiser le backend de Strapi pour pouvoir implémenter la logique métier. J'ai donc effectuer une lecture individuelle sur Strapi et j'ai pu voir que c'était possible.

Voici un exemple :

Strapi custom backend

Props Drilling

Lors de la conception de l'application client, j'ai pu voir que nous utilisions beaucoup le props drilling. C'est à dire que nous passons des props de composant en composant. Cela peut être problématique si nous avons beaucoup de composants imbriqués. Etant donné que je fais de la veille technologique, j'ai pu voir que différentes librairie existent pour résoudre ce problème.

J'ai donc implémenté Jotaï qui est un state manager pour React. Cela permet de gérer l'état de l'application de manière globale. Cela permet de ne plus avoir à passer des props de composant en composant. Cela permet aussi de ne plus avoir à utiliser le contexte de React qui est une API qui permet de passer des données de composant en composant.

Voici un exemple :

Jotaï

et sont utilisation avec un setter :

Jotaï setter

Etre capable de tester la pertinence d'une technologie dans une problématique donnée simple

Projet Koloka

Déploiement sur AWS

J'ai trouvé pertinent de choisir Docker pour le déploiement de Koloka sur AWS. Cela permet d'avoir le même comportement sur tous les environnements. De plus utiliser Docker pour la scalabilité est très intéressant car il est possible de déployer plusieurs instances de l'application. Cela permet de gérer la charge de l'application. C'est à dire que si nous avons beaucoup d'utilisateurs, nous pouvons déployer plusieurs instances de l'application pour gérer la charge.

Le choix de Docker repose aussi pour le semestre prochain où nous allons devoir implémenter une pipeline CI/CD. Cela permettra de déployer automatiquement l'application sur AWS.

Docker

Strapi

J'ai choisi d'utiliser Strapi parce que le but du projet Kolk sera de développer par la suite de l'application Web, une application mobile. Strapi est un Headless CMS, c'est à dire que nous pouvons avoir plusieurs frontends qui communiquent avec Strapi. Cela permet de ne pas avoir à développer une API pour chaque frontend. J'ai expliqué en détails les raison de mon choix : Strapi

Next.js

Il s'agit d'un framework fullstack prêt pour la production, on aurait pu développer Koloka entièrement sur Next.js (opens in a new tab). Ce framework a l'une des meilleurs performances. Il est heberger et scindé en plusieurs service (micro-services) ce qui permet d'avoir une application très performante. Il est très apprécié par la communauté et il est très bien maintenu, une excellente expérience développeur (DX).

Pusher

J'ai trouvé pertinent d'utiliser Pusher pour le système de messagerie. C'est un service qui permet de faire de la communication en temps réel. J'ai tout de même effectuer une lecture individuelle sur Docker pour mettre en place un système de messagerie from scratch. Cela permet de ne pas dépendre de service externe comme Pusher.

Grafana

J'ai testé grafana pour la visualisation des données de Koloka, il est open source et très performant. Il permet de visualiser des données sous forme de graphique. Il est très utilisé dans le monde de la data science. On peut observer en temps réel les données de l'application. Je conseil vivement d'utiliser Grafana pour la visualisation de données.