Organisation des paquets¶
Depuis l'ADR-0001, mic-struct n'est pas un seul paquet mais 3 distributions
PyPI indépendantes qui partagent le même espace de noms mic.* (namespace
package PEP 420 — aucun __init__.py racine). On n'installe que ce dont le
service a besoin ; les imports restent toujours import mic.<module>.
Versions indépendantes
mic-core, mic-datastore et mic-platform évoluent indépendamment avec
les tags core-vX.Y.Z, datastore-vX.Y.Z et platform-vX.Y.Z. Le
méta-paquet mic-struct conserve la compatibilité des installations
historiques. Épinglez chaque paquet dans une plage compatible, par exemple
>=0.1,<1, plutôt que de supposer des numéros identiques.
Les 3 paquets¶
| Paquet PyPI | Rôle | Modules mic.* |
|---|---|---|
mic-core |
Fondations transverses : contrats statiques ou gouvernés, portée d'organisation, HTTP, erreurs, auth inter-service, client, observabilité, santé, résilience, rejeu, CLI et gRPC | mic.contracts · mic.tenancy · mic.model · mic.http · mic.fastapi · mic.litestar · mic.auth · mic.client · mic.observability · mic.healthcheck · mic.resilience · mic.event_replay · mic.cli · mic.grpc |
mic-datastore |
Persistance et messagerie : stockages, cache, outbox, idempotence, verrous, bus, read-models, temps réel, tâches périodiques, response-cache et sharding | mic.datastorage · mic.cache · mic.outbox · mic.idempotency · mic.locking · mic.eventbus · mic.queue · mic.read_models · mic.realtime · mic.scheduling · mic.response_cache · mic.shard |
mic-platform |
Politiques plateforme : autorisation, fournisseurs d'identité et rate-limiting | mic.authz · mic.identity · mic.ratelimit |
Espace de noms partagé —
import mic.contracts(mic-core) etimport mic.outbox(mic-datastore) coexistent sans conflit : les trois distributions installent sous le même dossiermic/.
Quel paquet pour quel besoin ?¶
| Besoin | Paquet + extra |
|---|---|
| Service HTTP FastAPI | mic-core[fastapi] |
| Service HTTP Litestar | mic-core[litestar] |
| Auth JWT inter-service | mic-core[auth] |
| Vérification OIDC / JWKS | mic-core[oidc] |
| Contrats gouvernés / portée d'organisation | mic-core |
| Client HTTP sortant signé | mic-core[client] |
| Observabilité (Prometheus + OTel) | mic-core[observability] (ou [full-observability] avec Sentry + tracing) |
| gRPC / CLI | mic-core[grpc] · mic-core[cli] |
| Postgres / MySQL / Oracle | mic-datastore[postgres] · [mysql] · [oracle] |
| Mongo / Neo4j | mic-datastore[mongo] · [neo4j] |
| Redis (cache, locks, event bus, idempotence) | mic-datastore[redis] |
| Tâches périodiques distribuées | mic-datastore[redis] |
| Messaging durable (NATS / Kafka) | mic-datastore[messaging] (ou [nats] / [kafka]) |
| WebSocket temps réel | mic-datastore[ws] |
| Rate-limiting | mic-platform[redis] |
| Autorisation OPA / OpenFGA | mic-platform[opa] · mic-platform[openfga] |
| Client Keycloak | mic-platform[keycloak] |
Exemple — un service API + Postgres + auth + observabilité :
Le scaffold cookiecutter génère déjà ces dépendances dans le
pyproject.tomldu service.