Introduction
1. Résumé exécutif
Cette étude de cas analyse la conception architecturale du système de banque en ligned’une institution financière fictive, « BigBank ». L’objectif du projet était de fournir aux clients particuliers un accès sécurisé, accessible et multi-canal à leurs comptes (via web et mobile), tout en s’intégrant à l’infrastructure bancaire centrale existante et héritée.
L’architecture est documentée à l’aide du modèle C4 (schéma de conteneurs), qui visualise les choix technologiques de haut niveau et la manière dont les conteneurs du système (applications, bases de données, etc.) interagissent.

2. Défis métiers
-
Intégration des systèmes hérités :La banque dispose d’un système bancaire principal robuste mais ancien qui détient la vérité centrale des données clients. Le nouveau système devait exposer ces données sans remplacer immédiatement le système principal.
-
Accès multi-canal :Les clients exigeaient un accès via les navigateurs de bureau et les appareils mobiles.
-
Sécurité :La gestion des données financières sensibles exige une authentification stricte et des canaux de communication sécurisés.
3. Solution architecturale (Vue de conteneurs C4)
La solution est conçue comme un système déconnecté où la couche de présentation est séparée de la logique métier et des couches de données.
A. Couche de l’interface utilisateur (frontends)
Le système prend en charge trois points d’entrée distincts pour le client particulier de banque:
-
Application à page unique (SPA) :
-
Technologie : JavaScript et Angular.
-
Rôle : Cela s’exécute dans le navigateur web du client. Il fournit la pleine suite de fonctionnalités de banque en ligne. Il s’agit d’une interface dynamique et réactive qui communique de manière asynchrone avec le backend.
-
-
Application web :
-
Technologie : Java et Spring MVC.
-
Rôle : Il agit comme point d’entrée pour l’expérience web. Il fournit le contenu statique (HTML/CSS/JS) et héberge l’application monopage. Il sert de « lanceur » pour l’application Angular.
-
-
Application mobile :
-
Technologie : Xamarin (permettant un développement multiplateforme, probablement iOS et Android).
-
Rôle : Fournit un « sous-ensemble limité » de fonctionnalités optimisées pour les appareils mobiles. Cela suggère que les tâches complexes (comme la mise en place de virements internationaux) pourraient être réservées à l’interface web complète/SPA, tandis que les tâches courantes (vérification du solde) sont disponibles sur mobile.
-
B. La couche de logique métier (backend)
-
Application API :
-
Technologie : Java et Spring MVC.
-
Rôle : Il s’agit du système nerveux central de l’architecture. Il agit comme un Passerelle API ou Backend pour le frontend (BFF).
-
Fonction : Il expose une API JSON/HTTPS aux clients web et mobiles. Il gère l’authentification, l’autorisation et l’orchestration des demandes de données.
-
C. La couche Données et Intégration
-
Base de données :
-
Technologie : Schéma de base de données Oracle.
-
Rôle : Stocke les données spécifiques à la banque en ligne. Cela inclut les informations d’inscription des utilisateurs, informations d’authentification hachées (meilleure pratique en matière de sécurité), et les journaux d’accès. Elle ne stocke pas pas les soldes bancaires réels (ceux-ci se trouvent sur le Mainframe).
-
Communication : L’application API lit/écrit sur celle-ci via JDBC.
-
-
Système bancaire Mainframe :
-
Rôle : Le système d’enregistrement. Il stocke les informations essentielles de la banque (clients, comptes, transactions).
-
Communication : L’application API communique avec le Mainframe en utilisant XML sur HTTPS. Cela indique que le Mainframe est probablement un service hérité basé sur SOAP ou un système plus ancien nécessitant un échange de données structurées au format XML.
-
-
Système de messagerie :
-
Technologie : Microsoft Exchange.
-
Rôle : Gère les notifications.
-
Communication : L’application API envoie des e-mails via SMTP au serveur Exchange, qui les transmet ensuite au client.
-
4. Flux de données clés et parcours utilisateur
Scénario 1 : Connexion via navigateur web
-
Le Client particulier de banque en ligne accède à
bigbank.com/iben utilisant HTTPS. -
La requête atteint le Application web (Java/Spring MVC).
-
L’application web fournit le Application monopage (Angular) au navigateur du client.
-
Le client saisit ses identifiants dans l’application monopage.
-
L’application monopage effectue un appel d’API (
JSON/HTTPS) vers le Application d’API. -
L’application d’API valide les identifiants par rapport au Base de données (via JDBC).
-
En cas de succès, l’application monopage demande les soldes des comptes. L’application d’API récupère ces données depuis le Système bancaire principal (
XML/HTTPS) et le renvoie à l’application monopage.
Scénario 2 : Notification de transaction mobile
-
Le client effectue un paiement via l’ Application mobile (Xamarin).
-
L’application envoie une requête au Application API.
-
L’application API traite le paiement avec le Mainframe.
-
L’application API déclenche un e-mail de confirmation en envoyant une requête SMTP au Système de messagerie électronique (Exchange).
-
Le client reçoit une notification par e-mail.
5. Points techniques forts et bonnes pratiques
-
Séparation des préoccupations : Le diagramme sépare clairement les données spécifiques à « Banque en ligne » (base de données Oracle) des données « Banque centrale » (mainframe). Cela empêche la couche web d’accéder directement au grand livre financier central.
-
Traduction de protocole : L’application API agit comme un traducteur. Les interfaces modernes utilisent le JSON, mais le backend hérité utilise le XML. L’application API comble cet écart.
-
Sécurité : Les identifiants sont stockés sous forme « hachée » dans la base de données, garantissant que même en cas de compromission de la base de données, les mots de passe bruts ne sont pas exposés. Toutes les communications externes utilisent le HTTPS.
-
Évolutivité : En utilisant une application à page unique (Angular) et une API déconnectée, le frontend peut être mis à l’échelle indépendamment de la logique du backend.
Cette publication est également disponible en Deutsch, English, Español, فارسی, English, Bahasa Indonesia, 日本語, Polski, Portuguese, Ру́сский, Việt Nam, 简体中文 : liste des langues séparées par une virgule, 繁體中文 : dernière langue.













