Architecture SI et échanges
Comprendre comment les applications d'un SI s'organisent et se parlent - le regard de l'exploitant, pas du développeur.
L'architecture n-tiers
Le modèle en couches - comprendre où se situe chaque application du SI
Apache en frontal
Ce que voit l'utilisateur
Règles de gestion
Traitement des données
Stockage persistant
Port 1521
Pourquoi c'est utile au quotidien
- → L'interface ne s'affiche pas → problème couche présentation (Apache, réseau, certificat SSL)
- → L'interface s'affiche mais l'action échoue → problème couche métier (Tomcat, logs catalina.out)
- → L'application tourne mais les données sont fausses ou absentes → problème couche données (Oracle, datasource, script SQL)
- → Dans un SI universitaire, chaque application est elle-même une architecture n-tiers – elles s'empilent et s'échangent des données via des webservices.
API REST
Le standard des échanges modernes - HTTP, JSON, codes de retour
Les verbes HTTP - ce qu'ils font
- GETGET - lire une ressource.
/api/etudiants/12345→ retourne les infos de l'étudiant - POSTPOST - créer une ressource.
/api/etudiants+ body JSON → crée un nouvel étudiant - PUTPUT - mettre à jour. Remplace la ressource entière
- DELETEDELETE - supprimer une ressource
| curl -I https://api.exemple.fr/ressource | Tester qu'un endpoint répond (headers seulement) |
| curl https://api.exemple.fr/ressource | Appel GET - affiche la réponse JSON brute |
| curl -H "Authorization: Bearer TOKEN" https://... | Appel avec token d'authentification |
| curl -v https://api.exemple.fr/ressource | Mode verbose - voir les headers complets, utile pour diagnostiquer |
Ce qu'on oublie quand ça marche
- ! L'authentification – token JWT, clé API, OAuth. Quand ça casse après une rotation de secrets, c'est souvent là.
- ! Les timeouts – une API qui met trop longtemps à répondre → 503 ou connexion coupée côté client.
- ! Le certificat SSL – un certificat expiré bloque tous les appels HTTPS silencieusement.
- ! Le format exact des headers – Content-Type: application/json oublié → 400 Bad Request sans raison apparente.
Services SOAP
Le protocole des applications legacy - XML strict, WSDL, toujours présent dans les SI universitaires
Envelope - l'enveloppe qui encapsule tout le message
Header - en-tête optionnel (authentification, métadonnées)
Body - le contenu réel : la requête ou la réponse
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<!-- authentification, token... -->
</soap:Header>
<soap:Body>
<getEtudiant>
<numeroEtudiant>12345</numeroEtudiant>
</getEtudiant>
</soap:Body>
</soap:Envelope>
Le WSDL – le contrat du service
- → WSDL (Web Services Description Language) – le fichier qui décrit toutes les opérations disponibles et les formats attendus.
- → C'est la première référence quand un flux SOAP casse – vérifier que le format envoyé correspond au WSDL.
- → Un changement de WSDL côté fournisseur sans mise à jour côté consommateur = flux cassé immédiatement.
-
→
URL type d'un WSDL :
https://service.exemple.fr/monservice?wsdl
| Point | REST | SOAP |
|---|---|---|
| Format | JSON (principalement) | XML obligatoire |
| Contrat | Souple, documentation variable | WSDL strict et explicite |
| Verbosité | Léger | Verbeux (enveloppe XML) |
| Contexte | Applications modernes | Applications legacy, AMUE, SI nationaux |
| Diagnostic | Codes HTTP + logs | Message d'erreur XML + WSDL |
Formats de données
XML, JSON, CSV - savoir les lire, comprendre ce qu'ils transportent
Pièges classiques : balise non fermée, caractère interdit non échappé (
& au lieu de &), namespace manquant, encodage incorrect.Réflexe : valider le XML contre son schéma XSD avant de chercher ailleurs. Un outil comme xmllint peut le faire en ligne de commande :
xmllint --schema schema.xsd fichier.xml
Pièges classiques : virgule en trop ou manquante, guillemets absents sur une clé, type incorrect (chaîne au lieu de nombre), champ attendu absent.
Réflexe : coller le JSON dans un validateur (jsonlint.com) ou utiliser
echo '...' | python3 -m json.tool pour vérifier la syntaxe.
Pièges classiques :
- Séparateur : virgule vs point-virgule vs tabulation - une application attend l'un, reçoit l'autre
- Encodage : UTF-8 vs ISO-8859-1 → les accents français deviennent des caractères illisibles
- Retours à la ligne : Windows (CRLF) vs Linux (LF) → peut faire planter le parsing
- En-tête : certaines applications attendent une ligne d'en-tête, d'autres non
Réflexe :
file fichier.csv pour voir l'encodage, cat -A fichier.csv | head -3 pour voir les fins de ligne (^M = CRLF Windows).
Le piège universel - l'encodage des caractères
- !Un fichier produit sous Windows en ISO-8859-1 traité par une application Linux en UTF-8 → les accents (é, è, à, ç) deviennent des caractères bizarres
- !C'est invisible à la génération, visible seulement à la réception - difficile à diagnostiquer sans y penser
- !Commande de conversion :
iconv -f ISO-8859-1 -t UTF-8 fichier.csv > fichier-utf8.csv - !Concerne XML, CSV et fichiers plats - pas JSON (toujours UTF-8 par spécification)
Diagnostiquer un flux cassé
Méthode et réflexes - de la question à la cause
Si oui : qu'est-ce qui a changé récemment ? Déploiement, rotation de mot de passe, changement réseau, mise à jour système. Le changement est presque toujours la cause.
Tester que le serveur distant est joignable : ping serveur. Tester que le port répond : telnet serveur 443 ou nc -zv serveur 443. Si ça ne répond pas, le problème est réseau ou firewall - pas applicatif.
Vérifier les logs Apache : tail -f /var/log/apache2/access.log. Si la ligne apparaît → la requête arrive. Si elle n'apparaît pas → le problème est avant (réseau, DNS, configuration client).
Vérifier le code HTTP retourné dans access.log. 401/403 → authentification. 404 → URL incorrecte. 500 → erreur applicative → aller dans catalina.out.
grep -i "error\|exception" /opt/tomcat/logs/catalina.out | tail -50. Le message d'erreur indique généralement la couche concernée : datasource, format de données, règle métier.
Talend produit ses propres logs de job. Identifier le job concerné, trouver son log d'exécution. Le message d'erreur Talend indique la transformation ou la connexion qui a échoué. Ne jamais relancer un job Talend en production sans comprendre pourquoi il a planté.
Les causes les plus fréquentes d'un flux cassé
- 1Rotation de mot de passe non répercutée sur la datasource ou la config du webservice
- 2Certificat SSL expiré - bloque tous les appels HTTPS sans message d'erreur explicite
- 3Changement de format côté fournisseur non communiqué (nouveau champ obligatoire, type modifié)
- 4Encodage de fichier incorrect - particulièrement sur les imports CSV/XML
- 5Timeout - service trop lent, connexion coupée avant la réponse
- 6Espace disque plein - Tomcat ne peut plus écrire, comportement imprévisible
Cartographier un SI
Comprendre les dépendances - indispensable avant tout projet
Qui émet ? Quelle application produit la donnée
Qui reçoit ? Quelle application consomme
Quel format ? REST/JSON, SOAP/XML, fichier CSV, fichier plat
Quelle fréquence ? Temps réel, batch quotidien, déclenchement manuel
Quelle criticité ? Qu'est-ce qui se passe si ce flux s'arrête ?
Pourquoi les dépendances cachées sont dangereuses
- ! Un changement de schéma Oracle peut casser un flux Talend que personne ne savait qu'il existait.
- ! Une mise à jour d'une application peut modifier le format d'un webservice consommé par trois autres.
- ! Un renommage de colonne en base peut faire planter silencieusement un export nocturne.
- ! Ces incidents arrivent toujours à 6h du matin le lendemain d'une mise en production.
Les réflexes à avoir
- → Avant tout projet : demander la cartographie des flux existants impliquant les applications concernées.
-
→
Si elle n'existe pas : la construire – interroger les collègues, lire les configs Talend, parcourir les
context.xml. - → À chaque déploiement : identifier les applications en aval qui consomment ce qui change.
- → Documenter chaque flux découvert – la cartographie se construit progressivement, elle ne sort pas d'un seul coup.
Le regard de l'exploitant
Quand un flux casse : réseau d'abord (ping, telnet), puis logs Apache (la requête arrive-t-elle ?), puis Tomcat (est-elle traitée ?), puis format des données. Dans cet ordre.
Les causes les plus fréquentes ne sont pas techniques - ce sont des mots de passe qui ont changé, des certificats expirés, des formats qui ont évolué silencieusement.
La cartographie n'est pas un livrable ponctuel - c'est une connaissance qui se construit en poste, flux après flux.