💻 Développement

dev-microservices-designer

Conception et découpage d'architecture microservices — DDD, bounded contexts, patterns de communication, migration de monolithe.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- dev-microservices-designer --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } dev-microservices-designer -Launch"

🚀 Déjà installé ?

claude "/dev-microservices-designer"

Ou tapez /dev-microservices-designer dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

microservicesdécoupagebounded contextservice meshdécomposition monolithearchitecture distribuée

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/skills/dev-microservices-designer ~/.claude/skills/

Payload du plugin : skills/dev-microservices-designer · source éditable : dev-skills/microservices-designer

📖 Manuel

Microservices Designer

Workflow en 8 étapes

1. Cartographier le domaine (Event Storming / DDD)

Exemple — e-commerce :
  Core      : Catalogue, Commande, Pricing
  Supporting: Notification, Inventaire
  Generic   : Paiement (Stripe), Auth (Keycloak)

2. Définir les services (règle de taille)

Critères de découpage — un service par bounded context SI :

Signaux de sur-découpage : appels synchrones en chaîne > 3 sauts, transactions distribuées partout, équipe < 5 devs.

3. Définir les contrats d'API

# asyncapi snippet — OrderCreated
channels:
  order.created:
    publish:
      message:
        payload:
          type: object
          properties:
            orderId: { type: string, format: uuid }
            total:   { type: number }
          required: [orderId, total]

4. Choisir le pattern de communication

BesoinPatternOutil
Requête/réponse immédiateREST / gRPCAxios, Feign, grpc-go
Faible couplage, tolérance à la latenceMessage asyncKafka, RabbitMQ, Azure SB
Workflow long multi-servicesSaga orchestréeTemporal, MassTransit Saga
Cohérence éventuelle acceptableSaga chorégraphiéeEvents Kafka + handlers
Agrégation de données cross-servicesGraphQL federationApollo Federation v2

Règle : préférer l'asynchrone par défaut ; n'utiliser le synchrone que pour les cas UX qui exigent une réponse immédiate.

5. Données — database per service

❌ Service A ──┐
               ├── shared DB   (couplage fort, migration impossible indépendamment)
❌ Service B ──┘

✅ Service A ── DB A (Postgres)
✅ Service B ── DB B (MongoDB)
✅ Service C ── DB C (Redis)

Patterns avancés :

6. Résilience — checklist obligatoire

// .NET — Polly v8 (2026)
services.AddHttpClient<IOrderClient, OrderClient>()
    .AddResilienceHandler("order-pipeline", builder =>
    {
        builder.AddRetry(new HttpRetryStrategyOptions
        {
            MaxRetryAttempts = 3,
            BackoffType = DelayBackoffType.Exponential
        });
        builder.AddCircuitBreaker(new HttpCircuitBreakerStrategyOptions
        {
            SamplingDuration = TimeSpan.FromSeconds(30),
            FailureRatio = 0.5
        });
        builder.AddTimeout(TimeSpan.FromSeconds(5));
    });

7. Observabilité — stack minimale 2026

Traces  → OpenTelemetry SDK → Jaeger / Tempo
Métriques → Prometheus → Grafana
Logs    → structured JSON → Loki / ELK
Alertes → Alertmanager / PagerDuty
# Python — OTel auto-instrumentation FastAPI
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
FastAPIInstrumentor.instrument_app(app, tracer_provider=tracer_provider)

Règles :

8. Migration d'un monolithe — Strangler Fig

Phase 1 : Façade devant le monolithe (reverse proxy / API Gateway)
Phase 2 : Extraire Service X derrière la façade, redirections progressives
Phase 3 : Supprimer le code correspondant du monolithe
Phase 4 : Répéter par service, jamais de big bang

Outils : Kong / YARP en façade, feature flags pour basculer le trafic, canary deployment (1 % → 10 % → 100 %).


Anti-patterns & pièges

Anti-patternSymptômeCorrection
Distributed monolithDéploiement coordonné obligatoireRevoir les bounded contexts
Nano-services> 20 services, équipe < 5 devsFusionner les services trop fins
Shared DBMigration impossible, couplage fortDatabase per service + events
Appels synchrones en cascadeLatence additive, failure amplificationAsync + cache local
Pas d'idempotenceDoublons en cas de retryIdempotency key systématique
Contrats implicitesBreaking changes non détectésContract testing (Pact) en CI

Critères de décision — monolithe vs microservices

Microservices recommandés si ≥ 3 critères :
  ☐ Équipes > 2 squads avec ownership distinct
  ☐ Exigences de scalabilité très différentes par domaine
  ☐ Besoin de déploiements indépendants fréquents (> 2×/semaine par domaine)
  ☐ Technologies différentes justifiées par domaine
  ☐ Compliance / isolation sécurité obligatoire par périmètre

Sinon : Modulith d'abord (modules bien isolés dans un monolithe),
        migration service par service quand un critère se déclenche.

Bonnes pratiques 2026