Permettre la mise en relation entre voyageurs et propriétaires, avec gestion des réservations, paiements, notifications et synchronisation des disponibilités.
Responsabilité : Gestion des comptes (voyageurs / hôtes).
Entités principales :
Utilisateur(id, nom, email, rôle, statut)Profil(bio, photo, vérifications)
Événements publiés :
UtilisateurCrééProfilMisÀJour
Interactions :
- Envoi de
UtilisateurCréé→ BC Réservations & BC Paiement - Reçoit des événements de vérification (
PaiementRéussi,RéservationConfirmée) pour enrichir le profil.
Responsabilité : Gestion des logements, disponibilité et tarification.
Entités principales :
Logement(id, propriétaireId, titre, prix, statut)CalendrierDisponibilité
Événements publiés :
LogementCrééDisponibilitéModifiéeTarifModifié
Interactions :
- Consomme
RéservationCrééepour bloquer des dates. - Publie
DisponibilitéModifiéeque consomme le BC Réservations.
Responsabilité : Orchestration des réservations (création, annulation, confirmation).
Entités principales :
Réservation(id, logementId, voyageurId, dates, statut)SagaRéservation(pour gérer la transaction inter-BC)
Événements publiés :
RéservationCrééeRéservationConfirméeRéservationAnnulée
Interactions :
- Déclenche une saga :
- Envoie
DemandePaiement→ BC Paiement - Attend
PaiementRéussi - Envoie
BlocageDisponibilité→ BC Logements - Si succès, publie
RéservationConfirmée - Si échec, envoie
AnnulationPaiement(compensation)
- Envoie
Responsabilité : Traitement des paiements et remboursements.
Entités principales :
TransactionPaiement(id, réservationId, montant, statut)
Événements publiés :
PaiementRéussiPaiementÉchouéRemboursementEffectué
Interactions :
- Consomme
DemandePaiementdepuis BC Réservations. - En cas d’annulation, exécute
RemboursementEffectué.
Responsabilité : Communication vers les utilisateurs (email, SMS).
Entités principales :
Notification(type, destinataire, contenu)
Événements consommés :
RéservationConfirméePaiementRéussiRéservationAnnulée
- Voyageur crée une réservation →
RéservationCréée(BC Réservations). - BC Réservations publie
DemandePaiement. - BC Paiement traite et publie
PaiementRéussi. - BC Réservations envoie
BlocageDisponibilitéà BC Logements. - Si BC Logements bloque les dates →
DisponibilitéModifiée→RéservationConfirmée. - Si BC Logements échoue → envoie
AnnulationPaiement→ BC Paiement exécuteRemboursementEffectué.
- Message broker (Kafka, RabbitMQ, NATS…).
- Événements en mode publish/subscribe.
- Commandes asynchrones pour les actions directes (
DemandePaiement,BlocageDisponibilité).
- Implémentation d’une saga orchestrée dans BC Réservations.
- Gestion des événements idempotents (réception multiple).
- Gestion de la consistance éventuelle entre BC.
- Compensation automatique en cas d’échec partiel.