Skip to content

v0.27.0 — multi-module isolation: backends are opt-in by module (WS-011)

Choose a tag to compare

@daniel-garcia daniel-garcia released this 28 Jun 02:29

devedge-sdk is now a multi-module repo. The root library module carries NONE of the heavy backend dependencies — each lives in its own nested module a consumer pulls in only by importing it. A service that imports only the core (server, persistence interfaces, middleware, config, resilience, health, events) has a dependency graph provably free of the OTel SDK + exporters, koanf, franz-go, gorm, and ent.

Modules (all released synchronized at v0.27.0)

  • github.com/infobloxopen/devedge-sdk — the dependency-light library
  • …/observability/otel — OTel SDK + exporters
  • …/config/koanf — koanf (YAML/TOML config)
  • …/events/kafkabus — franz-go (Kafka bus)
  • …/persistence/gormtx — gorm
  • …/persistence/entrepo — ent
  • …/cmd — the CLI + protoc-gen-* plugins (build-time tooling)

For consumers

  • Import only what you use; your graph/go.sum stays minimal. gorm/ent/koanf/franz-go are fully absent from a core-only consumer's graph; the OTel API/contrib stays in core for zero-config instrumentation (the OTel SDK is opt-in via observability/otel).
  • No import-path changes — module path == import path, so existing imports are unchanged. A service using an adapter must require its module at the matching version (the scaffold-generated go.mod does this automatically).
  • CLI: go install github.com/infobloxopen/devedge-sdk/cmd/devedge-sdk@v0.27.0.

Establishes the pattern for future heavy components (e.g. a k8s controller scaffolding) to isolate the same way — see docs Adding an isolated module.