J'ai pu constater que les ESN qui me contactent sont nombreuses à demander, notamment dans le secteur banques & assurances, des connaissances en :
- Microservices (là où j'ai toujours fait du monolithique)
- Angular côté front (là où j'ai surtout une expérience avancée en React)
- Java / Spring Boot côté back (je connais bien mais je peux approfondir la clean architecture / architecture hexagonale)
Pour ce projet libre de fin d'année je propose donc de développer une application bancaire simple mais avec un focus sur les bonnes pratiques de développement recherchées par les ESN, le tout en architecture microservices.
Plateforme bancaire simplifiée, la web app permet à un utilisateur de gérer ses comptes et consulter des KPI, d'effectuer des transactions en temps réel, avec système asynchrone de détection de fraudes.
Le projet met l'accent sur les problématiques d'ingénierie backend (idempotence, pattern Saga, découplage)
Architecture microservices Database-per-service orchestrée localement via Docker Compose.
- Backend (Core) : Java 25, Spring Boot 4
- Frontend : Angular 22 (Signals, NgRx SignalStore), Tailwind CSS
- Infrastructure Spring Cloud : Eureka (Service Discovery), Spring Cloud Gateway (API Gateway)
- Bases de données : PostgreSQL (données relationnelles, profils), MongoDB (historique des transactions), Redis (mise en cache)
- Message Broker : RabbitMQ (communication asynchrone entre services)
- Sécurité et DevSecOps : Keycloak (OIDC/OAuth2) avec config automatisée via Terraform
Le backend est découpé en services autonomes :
- Auth/Customer Service : Gestion des profils utilisateurs (KYC).
- Account Service : Tenue des comptes, calcul des soldes en temps réel, génération d'IBAN.
- Transaction Service : Service critique développé en Architecture Hexagonale. Il gère les virements et garantit l'intégrité des opérations (ACID).
- Fraud-Detection Service : Service asynchrone écoutant les événements RabbitMQ pour bloquer les transactions suspectes.
- Frontend : Transition d'un profil React vers Angular, maîtrise de la gestion d'état centralisée avec NgRx SignalStore.
- Backend : Implémentation du pattern Ports & Adaptateurs (Hexagonal), gestion de la consistance éventuelle entre microservices.
- DevOps : IaC via Terraform pour le provisionnement du serveur Keycloak.
Le projet sera considéré comme réussi si :
- L'infrastructure complète démarre avec une seule commande
docker compose up. - Un utilisateur peut s'authentifier de manière sécurisée via le flux Keycloak.
- Un virement d'un compte A vers un compte B s'exécute de manière asynchrone et met à jour l'interface Angular en temps réel, avec notification et gestion des cas d'erreurs.
Retrouvez la cartographie complète des ports, des identifiants et le détail des microservices dans la Documentation Architecture.
