Versioning

Versioning is a central concept to Odin. Components and Service definitions always point to a specific version.

A service definition with concrete version is defined below

{
  "name": "MyAuth",
  "version": "1.0.0",
  "team": "tech",
  "components": [
    {
      "type": "application",
      "name": "my-auth",
      "version": "1.0.0"
    },
    {
      "type": "cassandra",
      "name": "foo-cassandra",
      "version": "1.1.0"
    },
    {
      "type": "aerospike",
      "name": "foo-aerospike",
      "version": "1.2.0"
    }
  ]
}

Concrete versioned service definitions or component artefacts are treated as immutable objects. For development purpose SNAPSHOT keyword can be added in version.

Service definition or component artefacts with SNAPSHOT in the version are treated as mutable.

{
  "name": "MyAuth",
  "version": "1.0.0-SNAPSHOT",
  "team": "tech",
  "components": [
    {
      "type": "application",
      "name": "my-auth",
      "version": "1.0.0"
    },
    {
      "type": "cassandra",
      "name": "foo-cassandra",
      "version": "1.1.0"
    },
    {
      "type": "aerospike",
      "name": "foo-aerospike",
      "version": "1.2.0"
    }
  ]
}

Below diagram explains the SDLC workflow with Odin

SDLC with Odin

Last updated