Skip to content
StableAudienceDevQAOwner@platform-teamDernière revue2026-05-22

Orchestrator — workflows et bonnes pratiques

Exemple complet d'un workflow multi-services (création d'une organization), liste des workflows à implémenter et bonnes pratiques de codage saga / compensation. Pour la vue d'ensemble, voir Orchestrator — overview.

Workflows à Implémenter

Phase 1 : Core

WorkflowUse CaseServices impliqués
Créer OrganizationCreateOrganizationUseCaseCustomer, Ledger, Notification
Créer Compte IndividuelCreateIndividualAccountUseCaseCustomer, Ledger, Notification
Ajouter MembreAddOrganizationMemberUseCaseCustomer, Notification

Phase 2 : Transactions

WorkflowUse CaseServices impliqués
Transfert P2PProcessTransferUseCaseLedger, Notification, (Risk Engine)
DépôtProcessDepositUseCaseLedger, Notification
RetraitProcessWithdrawalUseCaseLedger, Notification, (Provider)

Phase 3 : KYC & Compliance

WorkflowUse CaseServices impliqués
Soumettre KYCSubmitKycUseCaseCustomer
Valider KYCValidateKycUseCaseCustomer, Ledger (upgrade limits)

Bonnes Pratiques

1. Idempotence

Chaque opération doit pouvoir être rejouée sans effet de bord :

typescript
// Utiliser un idempotencyKey
async execute(input: CreateOrganizationInput): Promise<Result> {
  // Vérifier si déjà traité
  const existing = await this.findByIdempotencyKey(input.idempotencyKey);
  if (existing) return existing;

  // ... créer
}

2. Timeouts

Configurer des timeouts sur les appels inter-services :

typescript
// infrastructure/adapters/http/base-http.adapter.ts
const response = await firstValueFrom(
  this.httpService.post(url, data).pipe(
    timeout(5000), // 5 secondes max
  ),
);

3. Circuit Breaker (Future)

Implémenter un circuit breaker pour les services instables :

typescript
// Utiliser @nestjs/terminus ou opossum

4. Tracing

Propager le X-Request-Id pour tracer les requêtes :

typescript
// Middleware qui propage les headers
const headers = {
  'X-Request-Id': context.requestId,
  'X-User-Id': context.userId,
};

Nex — Plateforme fintech CEMAC