04/06/2024 - 11:16:17
12'16"
Un catalogue de services est une liste organisée et travaillée, constamment mise à jour de services business et de technologies disponibles au sein d'une organisation. Il s'agit d'un outil de gestion des connaissances le plus souvent accessible sous la forme d'un portail qui peut être interrogé pour prendre connaissance des services existants répertoriés, le cas échéant de les essayer.
C'est une définition large qui s'applique également à ce qui est appelé Catalogue Applicatif, un recencement de toutes les applications existantes dans l'entreprise et qui, le plus souvent, se trouve être répertoriées dans une CMDB. Ce sont les mêmes principes de base qui s'appliquent, à la granularité près : un catalogue applicatif reprend d'autres informations que celles d'un catalogue de services.
Mise en garde
Il existe de très nombreux outils qui permettent de gérer le catalogue de services. Cet article n'a ni pour vocation de faire l'éloge de tel outil par rapport à tel outil ni de construire un tel outil. Par contre, je vais vous montrer quelle est la structure minimale de ce genre d'outils et en construire un qui offre le service minimal, une espèce de micro-outil que nous allons construire progressivement dans le présent article de telle sorte qu'il alimente votre propre réflexion.
Structure
Voici, rapidement dessinée, la table des informations qu'il faut capturer dans le catalogue de services :
Champ | Description |
---|---|
Id | id unique du service (e.g. bee661d9-ea42-4886-b83d-4b1fa286a4ad) |
Lupdate | Date et heure de dernière mise à jour des infos du service dans le catalogue |
Name | Nom du service (e.g. stockBEL) |
Description | Description du service: une explication claire et concise de ce que le service accomplit (le what, mais pas le how) (e.g. cotation des valeurs représentées dans le BEL20 - Nom, dernière position, précédente position, delta journalier, progression ou régression journalière en %, % sur la semaine, sur le mois et sur l'année. Données mises à jour toutes les 20 minutes) |
Category | La classification du service pour faciliter la navigation et la recherche dans le catalogue. Chez TRQL Radio nous avons pris le pli de catégoriser nos services par entité comme référencé par wikidata (e.g. le BEL20 est un Stock Market ce qui correspond à l'entité Q475000 — https://www.wikidata.org/wiki/Q475000) |
Endpoint | Le endpoint d'accès au service (e.g. https://www.trql.fm/vaesoli!/?stockBEL) |
Owner | Le nom du propriétaire du service. Chez TRQL Radio, nous avons décidé d'utiliser l'adresse email de la personne (e.g. pb@latosensu.be) |
SLA | Les accords de niveau de service (SLA) qui définissent les attentes et les engagements de service (e.g. "best effort") |
Audience | Les groupes d'utilisateurs qui peuvent demander ou accéder au service (e.g. "all") |
Pricing | Les coûts associés à l'utilisation du service, si applicable (e.g. "free") |
Links | Liste de liens additionnels relatés au service décrit |
En outre, il n'est pas rare de retouver ces autres informations :
- Approvals : toute approbation nécessaire avant de fournir le service
- Conditions de livraison : Comment et quand le service sera fourni.
- Composants principaux : Les éléments essentiels qui constituent le service.
- Directives et responsabilités : Les règles régissant l'utilisation du service et les responsabilités des parties impliquées
Restant ici cantonnés aux principes de base, nous nous contenterons des informations reprises dans le tableau pour construire notre petit catalogue que je choisis délibérémment de stocker sous la forme d'un XML.
Pour le service en question, voici ce que donne ledit XML:
<Catalog> <Service id="bee661d9-ea42-4886-b83d-4b1fa286a4ad" lupdate="20240527 10:19:04"> <Name> <![CDATA[ stockBEL ]]> </Name> <Description> <![CDATA[ Cotation des valeurs du BEL20 - Nom, dernière position, précédente position, delta journalier, progression ou régression journalière en %, % sur la semaine, sur le mois et sur l'année. Données mises à jour toutes les 20 minutes ]]> </Description> <Category> <![CDATA[ Q475000 ]]> </Category> <Endpoint> <![CDATA[ https://www.trql.fm/vaesoli!/?stockBEL ]]> </Endpoint> <Owner> <![CDATA[ pb@latosensu.be ]]> </Owner> <SLA> <![CDATA[ Best effort ]]> </SLA> <Audience> <![CDATA[ All ]]> </Audience> <Pricing> <![CDATA[ Free ]]> </Pricing> <Links> <![CDATA[ ]]> </Links> </Service> </Catalog>
Queryable
Votre catalogue DOIT être interrogeable, non seulement par les hommes mais aussi par les … machines !
Le catalogue vient donc, invariablement, avec une interface et avec un jeu de … services ou bien avec un accès direct au stockage physique (ce qui n'est vraiment pas la meilleure option), ne fût-ce qu'en mode lecture seule (read-only).
Dans notre cas simplistique, je vais choisir l'accès direct au fichier c'est-à-dire au fichier XML.
Pour la facilité de l'exemple, je mettrai 3 services dans le catalogue, on en fera l'extraction, on présentera les 3 services sur la présente page et chaque service sera appellable directement. Quand nous aurons fait cela, on pourra se dire que nous avons réalisé le catalogue de services le plus simple qui soit. À partir de là, vous pourrez en concevoir de plus complets ou … utiliser ceux disponibles sur le marché (ce qui est grandement conseillé).
Le catalogue en XML (3 services)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Catalog> <Service id="bee661d9-ea42-4886-b83d-4b1fa286a4ad" lupdate="20240527 10:19:04"> <Name><![CDATA[stockBEL]]></Name> <Description><![CDATA[Cotation des valeurs du BEL20 - Nom, dernière position, précédente position, delta journalier, progression ou régression journalière en %, % sur la semaine, sur le mois et sur l'année. Données mises à jour toutes les 20 minutes]]></Description> <Category><![CDATA[Q475000]]></Category> <Endpoint><![CDATA[https://www.trql.fm/vaesoli!/?stockBEL]]></Endpoint> <Owner><![CDATA[pb@latosensu.be]]></Owner> <SLA><![CDATA[Best effort]]></SLA> <Audience><![CDATA[All]]></Audience> <Pricing><![CDATA[Free]]></Pricing> <Links><![CDATA[]]></Links> </Service> <Service id="b99692f8-0e87-4e37-87bd-abefc719b2e5" lupdate="20240527 10:36:17"> <Name><![CDATA[gdp-ppp]]></Name> <Description><![CDATA[PIB par pays; PIB par habitant pondéré par le pouvoir d'achat (Pondered by Purchase Power)]]></Description> <Category><![CDATA[Q12638]]></Category> <Endpoint><![CDATA[https://www.trql.fm/vaesoli!/?gdp-ppp]]></Endpoint> <Owner><![CDATA[pb@latosensu.be]]></Owner> <SLA><![CDATA[Best effort]]></SLA> <Audience><![CDATA[All]]></Audience> <Pricing><![CDATA[Free]]></Pricing> <Links><![CDATA[]]></Links> </Service> <Service id="f1081b6a-815d-40fa-a9d9-893dfc2c8d78" lupdate="20240527 10:44:42"> <Name><![CDATA[corporate-tax]]></Name> <Description><![CDATA[Pourcentage de taxes des entreprise par pays. name, dernière valeur, valeur précédente, période de dernière mise à jour, unité applicable aux valeurs]]></Description> <Category><![CDATA[Q8161]]></Category> <Endpoint><![CDATA[https://www.trql.fm/vaesoli!/?corporate-tax]]></Endpoint> <Owner><![CDATA[pb@latosensu.be]]></Owner> <SLA><![CDATA[Best effort]]></SLA> <Audience><![CDATA[All]]></Audience> <Pricing><![CDATA[Free]]></Pricing> <Links><![CDATA[]]></Links> </Service> </Catalog>
Le catalogue sous forme d'UI (ultra-simplistique)
Afin de limiter le code, je n'afficherai pas tous les champs du catalogue. Voici ce que cela donne :
Service | Description |
---|---|
Bankruptcies | Nombre de faillites par pays. Nom du pays, dernière mesure, mesure précédente, unité (companies or/and individuals) |
Category: Q152074 - https://www.wikidata.org/wiki/Q152074 Endpoint: https://www.trql.fm/vaesoli!/?bankruptcies Contact: pb@latosensu.be |
|
Co2-emissions | |
Category: - Endpoint: https://www.trql.fm/vaesoli!/?co2-emissions Contact: pb@latosensu.be |
|
Commodities | |
Category: Q8134 - https://www.wikidata.org/wiki/Q8134 Endpoint: https://www.trql.fm/vaesoli!/?commodities Contact: pb@latosensu.be |
|
corporate-tax | Pourcentage de taxes des entreprise par pays. name, dernière valeur, valeur précédente, période de dernière mise à jour, unité applicable aux valeurs |
Category: Q8161 - https://www.wikidata.org/wiki/Q8161 Endpoint: https://www.trql.fm/vaesoli!/?corporate-tax Contact: pb@latosensu.be |
|
Corruption | |
Category: - Endpoint: https://www.trql.fm/vaesoli!/?corruption Contact: pb@latosensu.be |
|
Cryptos | |
Category: - Endpoint: https://www.trql.fm/vaesoli!/?cryptos Contact: pb@latosensu.be |
|
Currencies | |
Category: Q8142 - https://www.wikidata.org/wiki/Q8142 Endpoint: https://www.trql.fm/vaesoli!/?currencies Contact: pb@latosensu.be |
|
Debt | |
Category: - Endpoint: https://www.trql.fm/vaesoli!/?debt Contact: pb@latosensu.be |
|
ExpenditureVSrevenues | |
Category: - Endpoint: https://www.trql.fm/vaesoli!/?expenditureVSrevenues Contact: pb@latosensu.be |
|
Fiscal-expenditure | |
Category: - Endpoint: https://www.trql.fm/vaesoli!/?fiscal-expenditure Contact: pb@latosensu.be |
|
Food-inflation | |
Category: - Endpoint: https://www.trql.fm/vaesoli!/?food-inflation Contact: pb@latosensu.be |
|
gdp-ppp | PIB par pays; PIB par habitant pondéré par le pouvoir d'achat (Pondered by Purchase Power) |
Category: Q12638 - https://www.wikidata.org/wiki/Q12638 Endpoint: https://www.trql.fm/vaesoli!/?gdp-ppp Contact: pb@latosensu.be |
|
stockBEL | Cotation des valeurs du BEL20 - Nom, dernière position, précédente position, delta journalier, progression ou régression journalière en %, % sur la semaine, sur le mois et sur l'année. Données mises à jour toutes les 20 minutes |
Category: Q475000 - https://www.wikidata.org/wiki/Q475000 Endpoint: https://www.trql.fm/vaesoli!/?stockBEL Contact: pb@latosensu.be |
|
stockATX | Cotation des valeurs de l'index autrichien. Nom, dernière position, précédente position, delta journalier, progression ou régression journalière en %, % sur la semaine, sur le mois et sur l'année. Données mises à jour toutes les 20 minutes |
Category: Q475000 - https://www.wikidata.org/wiki/Q475000 Endpoint: https://www.trql.fm/vaesoli!/?stockATX Contact: pb@latosensu.be |
|
StockBIST100 | Q475000 |
Category: Q475000 - https://www.wikidata.org/wiki/Q475000 Endpoint: https://www.trql.fm/vaesoli!/?stockBIST100 Contact: pb@latosensu.be |
|
StockCAC | |
Category: Q475000 - https://www.wikidata.org/wiki/Q475000 Endpoint: https://www.trql.fm/vaesoli!/?stockCAC Contact: pb@latosensu.be |
|
StockCH20 | |
Category: Q475000 - https://www.wikidata.org/wiki/Q475000 Endpoint: https://www.trql.fm/vaesoli!/?stockCH20 Contact: pb@latosensu.be |
|
StockDAX | |
Category: Q475000 - https://www.wikidata.org/wiki/Q475000 Endpoint: https://www.trql.fm/vaesoli!/?stockDAX Contact: pb@latosensu.be |
|
StockES35 | |
Category: Q475000 - https://www.wikidata.org/wiki/Q475000 Endpoint: https://www.trql.fm/vaesoli!/?stockES35 Contact: pb@latosensu.be |