{
  "code": null,
  "collection": "architecture",
  "href": "https://banes-lab.com/ontology#architecture-autonomy",
  "id": "autonomy",
  "kind": "principle",
  "layer": {
    "href": "https://banes-lab.com/ontology/schema#layer-structural-core",
    "json": "https://banes-lab.com/json/records/layer/structural-core",
    "label": "Structural Core",
    "markdown": "https://banes-lab.com/records/layer/structural-core.md",
    "ref": "layer:structural-core"
  },
  "name": "Autonomy",
  "ref": "architecture:autonomy",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-independence",
          "json": "https://banes-lab.com/json/records/architecture/independence",
          "label": "Independence",
          "markdown": "https://banes-lab.com/records/architecture/independence.md",
          "ref": "architecture:independence"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-own-data",
          "json": "https://banes-lab.com/json/records/lexicon/own-data",
          "label": "Own Data",
          "markdown": "https://banes-lab.com/records/lexicon/own-data.md",
          "ref": "lexicon:own-data"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-explicit-contracts",
          "json": "https://banes-lab.com/json/records/architecture/explicit-contracts",
          "label": "Explicit Contracts",
          "markdown": "https://banes-lab.com/records/architecture/explicit-contracts.md",
          "ref": "architecture:explicit-contracts"
        }
      ],
      "relation": "requires"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-decentralization",
          "json": "https://banes-lab.com/json/records/architecture/decentralization",
          "label": "Decentralization",
          "markdown": "https://banes-lab.com/records/architecture/decentralization.md",
          "ref": "architecture:decentralization"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-resilience",
          "json": "https://banes-lab.com/json/records/architecture/resilience",
          "label": "Resilience",
          "markdown": "https://banes-lab.com/records/architecture/resilience.md",
          "ref": "architecture:resilience"
        }
      ],
      "relation": "reinforces"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-microservices",
          "json": "https://banes-lab.com/json/records/architecture/microservices",
          "label": "Microservices",
          "markdown": "https://banes-lab.com/records/architecture/microservices.md",
          "ref": "architecture:microservices"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-bounded-context-ownership",
          "json": "https://banes-lab.com/json/records/lexicon/bounded-context-ownership",
          "label": "Bounded Context Ownership",
          "markdown": "https://banes-lab.com/records/lexicon/bounded-context-ownership.md",
          "ref": "lexicon:bounded-context-ownership"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-independent-deployment",
          "json": "https://banes-lab.com/json/records/lexicon/independent-deployment",
          "label": "Independent Deployment",
          "markdown": "https://banes-lab.com/records/lexicon/independent-deployment.md",
          "ref": "lexicon:independent-deployment"
        }
      ],
      "relation": "enables"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-centralized-runtime-control",
          "json": "https://banes-lab.com/json/records/lexicon/centralized-runtime-control",
          "label": "Centralized Runtime Control",
          "markdown": "https://banes-lab.com/records/lexicon/centralized-runtime-control.md",
          "ref": "lexicon:centralized-runtime-control"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-shared-database",
          "json": "https://banes-lab.com/json/records/lexicon/shared-database",
          "label": "Shared Database",
          "markdown": "https://banes-lab.com/records/lexicon/shared-database.md",
          "ref": "lexicon:shared-database"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-cyclic-deployment-dependency",
          "json": "https://banes-lab.com/json/records/architecture/cyclic-deployment-dependency",
          "label": "Cyclic Deployment Dependency",
          "markdown": "https://banes-lab.com/records/architecture/cyclic-deployment-dependency.md",
          "ref": "architecture:cyclic-deployment-dependency"
        }
      ],
      "relation": "conflicts-with"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-governance",
          "json": "https://banes-lab.com/json/records/architecture/governance",
          "label": "Governance",
          "markdown": "https://banes-lab.com/records/architecture/governance.md",
          "ref": "architecture:governance"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-standardization",
          "json": "https://banes-lab.com/json/records/architecture/standardization",
          "label": "Standardization",
          "markdown": "https://banes-lab.com/records/architecture/standardization.md",
          "ref": "architecture:standardization"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-global-consistency",
          "json": "https://banes-lab.com/json/records/lexicon/global-consistency",
          "label": "Global Consistency",
          "markdown": "https://banes-lab.com/records/lexicon/global-consistency.md",
          "ref": "lexicon:global-consistency"
        }
      ],
      "relation": "tensions-with"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/schema#tension-autonomy-governance",
          "json": "https://banes-lab.com/json/records/tension/autonomy-governance",
          "label": "Autonomy / Governance",
          "markdown": "https://banes-lab.com/records/tension/autonomy-governance.md",
          "ref": "tension:autonomy-governance"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#tension-autonomy-standardization",
          "json": "https://banes-lab.com/json/records/tension/autonomy-standardization",
          "label": "Autonomy / Standardization",
          "markdown": "https://banes-lab.com/records/tension/autonomy-standardization.md",
          "ref": "tension:autonomy-standardization"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#tension-autonomy-global-consistency",
          "json": "https://banes-lab.com/json/records/tension/autonomy-global-consistency",
          "label": "Autonomy / Global Consistency",
          "markdown": "https://banes-lab.com/records/tension/autonomy-global-consistency.md",
          "ref": "tension:autonomy-global-consistency"
        }
      ],
      "relation": "tensions"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-shared-database",
          "json": "https://banes-lab.com/json/records/lexicon/shared-database",
          "label": "Shared Database",
          "markdown": "https://banes-lab.com/records/lexicon/shared-database.md",
          "ref": "lexicon:shared-database"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-distributed-monolith",
          "json": "https://banes-lab.com/json/records/architecture/distributed-monolith",
          "label": "Distributed Monolith",
          "markdown": "https://banes-lab.com/records/architecture/distributed-monolith.md",
          "ref": "architecture:distributed-monolith"
        }
      ],
      "relation": "violated-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-own-data-per-service",
          "json": "https://banes-lab.com/json/records/lexicon/own-data-per-service",
          "label": "Own Data per Service",
          "markdown": "https://banes-lab.com/records/lexicon/own-data-per-service.md",
          "ref": "lexicon:own-data-per-service"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-split-bounded-context",
          "json": "https://banes-lab.com/json/records/lexicon/split-bounded-context",
          "label": "Split Bounded Context",
          "markdown": "https://banes-lab.com/records/lexicon/split-bounded-context.md",
          "ref": "lexicon:split-bounded-context"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-domain-events",
          "json": "https://banes-lab.com/json/records/architecture/domain-events",
          "label": "Domain Events",
          "markdown": "https://banes-lab.com/records/architecture/domain-events.md",
          "ref": "architecture:domain-events"
        }
      ],
      "relation": "refactored-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/schema#vocabulary-severity-contextual",
          "json": "https://banes-lab.com/json/records/vocabulary/severity-contextual",
          "label": "contextual",
          "markdown": "https://banes-lab.com/records/vocabulary/severity-contextual.md",
          "ref": "vocabulary:severity-contextual"
        }
      ],
      "relation": "severity"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-category-core-modular-design",
          "json": "https://banes-lab.com/json/records/architecture-category/core-modular-design",
          "label": "Core Modular Design",
          "markdown": "https://banes-lab.com/records/architecture-category/core-modular-design.md",
          "ref": "architecture-category:core-modular-design"
        }
      ],
      "relation": "category"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-bounded-context",
          "json": "https://banes-lab.com/json/records/architecture/bounded-context",
          "label": "Bounded Context",
          "markdown": "https://banes-lab.com/records/architecture/bounded-context.md",
          "ref": "architecture:bounded-context"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-service-contract",
          "json": "https://banes-lab.com/json/records/architecture/service-contract",
          "label": "Service Contract",
          "markdown": "https://banes-lab.com/records/architecture/service-contract.md",
          "ref": "architecture:service-contract"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-choreography",
          "json": "https://banes-lab.com/json/records/architecture/choreography",
          "label": "Choreography",
          "markdown": "https://banes-lab.com/records/architecture/choreography.md",
          "ref": "architecture:choreography"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-service-oriented-architecture",
          "json": "https://banes-lab.com/json/records/architecture/service-oriented-architecture",
          "label": "Service-Oriented Architecture",
          "markdown": "https://banes-lab.com/records/architecture/service-oriented-architecture.md",
          "ref": "architecture:service-oriented-architecture"
        }
      ],
      "relation": "reinforced-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/software-architecture/principles#separate-trade-or-mitigate",
          "json": "https://banes-lab.com/json/software-architecture/principles/separate-trade-or-mitigate",
          "label": "Separate, trade, or mitigate",
          "markdown": "https://banes-lab.com/software-architecture/principles/separate-trade-or-mitigate.md",
          "ref": "chapter:/software-architecture/principles#separate-trade-or-mitigate"
        },
        {
          "href": "https://banes-lab.com/software-architecture/glossary#the-principle-architecture",
          "json": "https://banes-lab.com/json/software-architecture/glossary/the-principle-architecture",
          "label": "The principle architecture",
          "markdown": "https://banes-lab.com/software-architecture/glossary/the-principle-architecture.md",
          "ref": "chapter:/software-architecture/glossary#the-principle-architecture"
        },
        {
          "href": "https://banes-lab.com/software-architecture/glossary#architectural-principles",
          "json": "https://banes-lab.com/json/software-architecture/glossary/architectural-principles",
          "label": "Architectural rules and principles",
          "markdown": "https://banes-lab.com/software-architecture/glossary/architectural-principles.md",
          "ref": "chapter:/software-architecture/glossary#architectural-principles"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-anti-patterns",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-anti-patterns",
          "label": "Anti-patterns",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md",
          "ref": "chapter:/ontology#architecture-category-anti-patterns"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-domain-architecture",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-domain-architecture",
          "label": "Domain Architecture",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-domain-architecture.md",
          "ref": "chapter:/ontology#architecture-category-domain-architecture"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-contracts-interfaces-compatibility",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-contracts-interfaces-compatibility",
          "label": "Contracts / Interfaces / Compatibility",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-contracts-interfaces-compatibility.md",
          "ref": "chapter:/ontology#architecture-category-contracts-interfaces-compatibility"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-control-coordination-centralization",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-control-coordination-centralization",
          "label": "Control / Coordination / Centralization",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-control-coordination-centralization.md",
          "ref": "chapter:/ontology#architecture-category-control-coordination-centralization"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-core-modular-design",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-core-modular-design",
          "label": "Core Modular Design",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md",
          "ref": "chapter:/ontology#architecture-category-core-modular-design"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-error-handling-resilience",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-error-handling-resilience",
          "label": "Error Handling / Resilience",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-error-handling-resilience.md",
          "ref": "chapter:/ontology#architecture-category-error-handling-resilience"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-architecture-review-evolution-governance-artifacts",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-architecture-review-evolution-governance-artifacts",
          "label": "Architecture Review / Evolution / Governance Artifacts",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-architecture-review-evolution-governance-artifacts.md",
          "ref": "chapter:/ontology#architecture-category-architecture-review-evolution-governance-artifacts"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-security-privacy-compliance-governance",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-security-privacy-compliance-governance",
          "label": "Security / Privacy / Compliance / Governance",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-security-privacy-compliance-governance.md",
          "ref": "chapter:/ontology#architecture-category-security-privacy-compliance-governance"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-codebase-system-architecture-styles",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-codebase-system-architecture-styles",
          "label": "Codebase / System Architecture Styles",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-codebase-system-architecture-styles.md",
          "ref": "chapter:/ontology#architecture-category-codebase-system-architecture-styles"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-core-modular-design",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-core-modular-design",
          "label": "Core Modular Design",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-core-modular-design"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-core-vocabulary",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-core-vocabulary",
          "label": "Core Vocabulary",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-core-vocabulary.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-core-vocabulary"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-domain-architecture",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-domain-architecture",
          "label": "Domain Architecture",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-domain-architecture.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-domain-architecture"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-event-messaging-async",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-event-messaging-async",
          "label": "Event Messaging Async",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-event-messaging-async.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-event-messaging-async"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#the-vocabulary-severity",
          "json": "https://banes-lab.com/json/ontology/schema/the-vocabulary-severity",
          "label": "Severity levels",
          "markdown": "https://banes-lab.com/ontology/schema/the-vocabulary-severity.md",
          "ref": "chapter:/ontology/schema#the-vocabulary-severity"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#the-resolutions",
          "json": "https://banes-lab.com/json/ontology/schema/the-resolutions",
          "label": "The resolutions",
          "markdown": "https://banes-lab.com/ontology/schema/the-resolutions.md",
          "ref": "chapter:/ontology/schema#the-resolutions"
        }
      ],
      "relation": "linked-from"
    }
  ],
  "summary": "A design rule that a service or team owns its data and decisions, so it alone writes its data and others reach or change it only through its published API or events.",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/ontology#architecture-interface-segregation",
      "json": "https://banes-lab.com/json/records/architecture/interface-segregation",
      "label": "Interface Segregation Principle (ISP)",
      "markdown": "https://banes-lab.com/records/architecture/interface-segregation.md",
      "ref": "architecture:interface-segregation"
    },
    "previous": {
      "href": "https://banes-lab.com/ontology#architecture-independence",
      "json": "https://banes-lab.com/json/records/architecture/independence",
      "label": "Independence",
      "markdown": "https://banes-lab.com/records/architecture/independence.md",
      "ref": "architecture:independence"
    }
  },
  "up": {
    "href": null,
    "json": "https://banes-lab.com/json/api/records/architecture",
    "label": "Architecture principles",
    "markdown": "https://banes-lab.com/api/records/architecture.md",
    "ref": "api:records/architecture"
  },
  "aliases": [
    "Service Autonomy"
  ],
  "exemplar": {
    "after": "async function createFoo(foo: Foo) {\n  await fooStore.save(foo);\n  await outbox.append({ type: \"FooCreated\", fooId: foo.id, barId: foo.barId });\n}",
    "before": "async function createFoo(foo: Foo) {\n  const bar = await barService.get(foo.barId);\n  await bazService.validate(foo, bar);\n  return fooStore.save(foo);\n}",
    "lang": "ts",
    "medium": "code"
  },
  "formedBy": null,
  "scope": [
    "service",
    "team",
    "bounded context"
  ],
  "severity": "contextual"
}
