M8 : Identifier, choisir et adapter les solutions appropriées en les justifiant d’un point de
vue
économique, méthodologique, technologique, sociétal, environnemental, éthique, légal.
Niveau actuel : Avancé
Niveau visé : Hautement spécialisé
En fonction des projets déterminés autour de l’« Intégration de services dans un
éco-système », savoir identifier, choisir (y-c défendre) et adapter les solutions les
plus appropriées pour les défis rencontrés
Mots-clés : Intégration, DLM, architecture, Web Services, automatisation,
processus, …
Notre projet Kinaps, centré sur l’intégration, nous a contraints à prendre des décisions. Nous avions une grande liberté quant au choix des technologies à utiliser. Nous devions être capables de rédiger un rapport utile pour l’avenir du travail sur l’application. Étant donné que Teams est une application Microsoft, nos choix ont naturellement été orientés vers les outils compatibles avec Microsoft. Par exemple, pour le SSO (Single Sign-On), nous avons dû utiliser les identifiants d’un compte Microsoft Teams pour notre application. Nos choix se sont portés sur Microsoft Azure. Nous avons privilégié les outils Microsoft et cela s’est avéré être la bonne solution.
Concernant les autres choix techniques, nous avons opté pour des outils dont nous connaissions l’existence et la mise en œuvre, notamment pour le développement de l’application. Il aurait peut-être été judicieux d’utiliser le langage C# pour développer une application Microsoft, mais nous avions une plus grande familiarité avec JavaScript. Pour la gestion des tokens, nous avons utilisé différentes bibliothèques. Parmi celles-ci, on trouve notamment :
MSAL
La bibliothèque Microsoft Authentication Library (MSAL) est utilisée pour acquérir des jetons de sécurité de la plateforme d’identité Microsoft (Azure AD) afin d’authentifier les utilisateurs et d’accéder aux API web sécurisées.
jsonwebtoken
jsonwebtoken est une bibliothèque Node.js qui fournit des fonctions pour créer et vérifier des JSON Web Tokens (JWT). JWT est un standard ouvert (RFC 7519) qui définit une manière compacte et autonome de transmettre de manière sécurisée des informations entre les parties sous forme d’objet JSON. Ces informations peuvent être vérifiées et fiables car elles sont signées numériquement.
jwt-decode
jwt-decode est une autre bibliothèque Node.js qui fournit une fonction pour décoder un JWT. Cette bibliothèque est utile si vous voulez lire les informations contenues dans un JWT sans avoir besoin de le vérifier (auth0, 2023).
Concernant l’architecture, nous n’avons pas réellement fait de choix car nous avons utilisé le Teams Toolkit qui offre un projet d’application Teams basique sur lequel nous avons pu nous appuyer. Nous avons cependant dû choisir parmi les différentes possibilités d’application et opter pour celle qui correspondait le mieux à nos besoins. Ensuite, nous avons dû comprendre l’application de base pour pouvoir la modifier en fonction des exigences de notre projet.

Le fichier App.tsx représente le composant racine de notre application. Selon le manifeste.json, l’application est dirigée vers le composant TabConfig.tsx, puis redirigée directement vers la première étape de la configuration (InitialBoard.tsx). Ici, l’utilisateur a la possibilité de créer un nouveau tableau ou d’ouvrir un existant. Quelle que soit la décision de l’utilisateur, la méthode « boardConfig » ou « openExistingBoard » est appelée depuis TabConfig. Ensuite, en fonction du choix « boardConfig » ou « openExistingBoard », la logique est exécutée dans le fichier respectif. Enfin, une fois la configuration réalisée en fonction du choix de l’utilisateur, le résultat s’affiche dans Tab.tsx.
Joanna a également pu nous présenter une LI sur l’architecture logicielle. Nous avons pu y comparer les architectures les plus courantes et savoir quand les utiliser. Le projet Kinaps rentre dans une architecture client-serveur.
- Dans une application Teams Tab, le code côté client se trouve dans le dossier « src » et contient le code TypeScript et React pour l’interface utilisateur.
- Le code côté serveur se trouve dans le dossier « api » et contient le code Node.js pour l’API dorsale. Le dossier « api » contient généralement le code Azure Functions, ainsi que tout autre code côté serveur nécessaire pour fournir les fonctionnalités de l’application.
- Le code côté client communique avec le code côté serveur à l’aide de requêtes et de réponses HTTP.
J’ai également eu l’opportunité de donner une LI sur le concept de data mesh que j’ai découvert lors de mon voyage apprenant. Un data mesh est une architecture de gestion de données qui décentralise la propriété des données et les rend disponibles pour chaque domaine métier (ou département) au sein d’une organisation, de manière comparable aux micro-services. C’est une approche qui permet aux équipes de chaque domaine de gérer et d’analyser leurs propres données, plutôt que de dépendre d’une seule source de vérité centralisée. Cela favorise une plus grande interopérabilité et facilite l’évolution des données en fonction des besoins spécifiques de chaque domaine.
Nous avons également participé à plusieurs conférences sur l’IA où nous avons abordé des aspects éthiques, économiques et environnementaux. Je me souviens en particulier de la conférence du Swiss Digital Center où nous avons entendu Luc Julia (inventeur de Siri) partager sa vision et les perspectives futures de l’IA. Il est intéressant de constater que la majorité des personnes expertes dans ce domaine ne sont pas pessimistes concernant l’avenir et les implications de l’IA. C’est un outil qui peut être utilisé de manière positive ou négative.