Skip to content
Back to skills

Microservices Designer

ASecurity

Conception et découpage d'architecture microservices — DDD, bounded contexts, patterns de communication, migration de monolithe. À utiliser pour concevoir ou migrer vers des microservices. Se déclenche avec "microservices", "découpage", "bounded context", "service mesh", "décomposition monolithe", "architecture distribuée". Also triggers on "split into microservices", "service boundaries".

  • 27 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 18, 2026
businesspythongofastapidockerkubernetesawsazuretestinggitapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned October 18, 2026

npx -y skills add khalilbenaz/claude-skills-collection --skill microservices-designer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Microservices Designer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Microservices Designer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/khalilbenaz-microservices-designer/badge)](https://www.skillsdirectory.com/skills/khalilbenaz-microservices-designer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: microservices-designer
description: Conception et découpage d'architecture microservices — DDD, bounded contexts, patterns de communication, migration de monolithe. À utiliser pour concevoir ou migrer vers des microservices. Se déclenche avec "microservices", "découpage", "bounded context", "service mesh", "décomposition monolithe", "architecture distribuée". Also triggers on "split into microservices", "service boundaries".
---

# Microservices Designer

## Workflow en 8 étapes

### 1. Cartographier le domaine (Event Storming / DDD)
- Réunir les experts métier et tech ; lister tous les **domain events** (faits métier passés).
- Regrouper en **bounded contexts** : chaque contexte a son propre modèle, son langage ubiquitaire.
- Classer : core domain (avantage concurrentiel), supporting, generic (candidat à l'externalisation/SaaS).

```
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 :
- ≥ 2 équipes différentes ont besoin de déployer indépendamment
- La scalabilité requise diffère significativement (ex: Catalogue ×10 vs Commande ×2)
- Les exigences de sécurité/compliance diffèrent (PCI-DSS isolé)

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
- **REST** : OpenAPI 3.1, versionning via URL (`/v1/`) ou `Accept: application/vnd.api+json;version=2`
- **gRPC** : Protobuf `.proto` versionné, backward-compatible (ne jamais supprimer un field)
- **Events** : AsyncAPI 3.0, schema registry (Confluent, AWS Glue)

```yaml
# 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

| Besoin | Pattern | Outil |
|---|---|---|
| Requête/réponse immédiate | REST / gRPC | Axios, Feign, grpc-go |
| Faible couplage, tolérance à la latence | Message async | Kafka, RabbitMQ, Azure SB |
| Workflow long multi-services | Saga orchestrée | Temporal, MassTransit Saga |
| Cohérence éventuelle acceptable | Saga chorégraphiée | Events Kafka + handlers |
| Agrégation de données cross-services | GraphQL federation | Apollo 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 :
- **CQRS** : séparer Command model (write) et Query model (read-optimized, répliqué via events)
- **Event Sourcing** : stocker les events bruts (EventStoreDB, Kafka compacted topic) ; reconstruire l'état à la demande
- **Saga** : chaque step publie un event de succès ou compensation en cas d'échec

### 6. Résilience — checklist obligatoire

```csharp
// .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));
    });
```

- **Bulkhead** : thread pool séparé par dépendance critique
- **Fallback** : retourner une réponse dégradée plutôt qu'une erreur 500
- **Idempotency key** : toujours sur les endpoints mutatifs (`Idempotency-Key: <uuid>`)

### 7. Observabilité — stack minimale 2026

```
Traces  → OpenTelemetry SDK → Jaeger / Tempo
Métriques → Prometheus → Grafana
Logs    → structured JSON → Loki / ELK
Alertes → Alertmanager / PagerDuty
```

```python
# Python — OTel auto-instrumentation FastAPI
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
FastAPIInstrumentor.instrument_app(app, tracer_provider=tracer_provider)
```

Règles :
- **Correlation ID** propagé dans tous les headers (`traceparent` W3C standard)
- Health checks : `/healthz/live` (process up) + `/healthz/ready` (dépendances OK)
- SLO défini par service : ex. p99 < 200 ms, error rate < 0.1 %

### 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-pattern | Symptôme | Correction |
|---|---|---|
| Distributed monolith | Déploiement coordonné obligatoire | Revoir les bounded contexts |
| Nano-services | > 20 services, équipe < 5 devs | Fusionner les services trop fins |
| Shared DB | Migration impossible, couplage fort | Database per service + events |
| Appels synchrones en cascade | Latence additive, failure amplification | Async + cache local |
| Pas d'idempotence | Doublons en cas de retry | Idempotency key systématique |
| Contrats implicites | Breaking changes non détectés | Contract 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

- **Service mesh** (Istio, Linkerd, Dapr) : mTLS automatique, observabilité L7, traffic management sans code applicatif.
- **GitOps** : un repo par service, ArgoCD/Flux pour les déploiements Kubernetes.
- **Contract testing** avec Pact en CI : valider que producer et consumer restent compatibles avant merge.
- **Platform engineering** : fournir un Internal Developer Portal (Backstage) avec templates de service pré-configurés (OTel, health, Dockerfile, CI).
- Chaque ADR dans `docs/adr/NNNN-titre.md` (format Nygard) ; lier depuis le README du service.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.