# Codebase / System Architecture Styles

> Every principle in this category is listed as a record.

Page: Ontology · Principles
Canonical: https://banes-lab.com/ontology#arch-category-codebase-system-architecture-styles

Every principle in this category is listed as a record. Each record carries its kind, its severity, the scopes it applies at and the layer it lives in, then the edge relations that join it to other records, the records that point back at it, the contracts that answer to it and the tensions it takes part in. The descriptors say how it is violated, detected, measured, repaired and enforced. Where the record carries one, an exemplar shows the shape before and after the principle is applied.

Relations diagram

The relations inside this category.

```mermaid
flowchart LR
n_ports_and_adapters_architecture["Ports and Adapters Architecture"]
n_hexagonal_architecture["Hexagonal Architecture"]
n_clean_architecture["Clean Architecture"]
n_layered_architecture["Layered Architecture"]
n_component_based_architecture["Component-Based Architecture"]
n_package_by_feature["Package by Feature"]
n_microservices["Microservices"]
n_monolith_architecture["Monolith Architecture"]
n_pipes_and_filters["Pipes and Filters"]
n_service_oriented_architecture["Service-Oriented Architecture"]
n_space_based_architecture["Space-Based Architecture"]
n_hexagonal_architecture --> n_clean_architecture
```

### Ports and Adapters Architecture

- Kind: [style](https://banes-lab.com/records/kind/style.md)
- Severity: recommended
- Scope: application, service, component
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Requires
[Ports](https://banes-lab.com/records/lex/ports.md), [Adapters](https://banes-lab.com/records/lex/adapters.md), [Dependency Inversion Principle (DIP)](https://banes-lab.com/records/arch/dependency-inversion.md)

Reinforces
[Replaceability](https://banes-lab.com/records/arch/replaceability.md), [Testability](https://banes-lab.com/records/arch/testability.md)

Enables
[Infrastructure Independence](https://banes-lab.com/records/lex/infrastructure-independence.md)

In tension with
[Boilerplate](https://banes-lab.com/records/lex/boilerplate.md)

Conflicts with
[Infrastructure-Centric Design](https://banes-lab.com/records/lex/infrastructure-centric-design.md), [Framework Leakage](https://banes-lab.com/records/arch/framework-leakage.md)

Tensions
[Ports and Adapters Architecture Boilerplate](https://banes-lab.com/records/tension/boilerplate-ports-and-adapters-architecture.md)

Violated by
domain/application importing infrastructure

Detected by
inward/outward dependency violations

Measured by
adapter coverage, boundary purity

Refactored by
Introduce Port, Extract Adapter

Enforced by
layer dependency rules

Before

```typescript
class FooService {
save(foo: Foo) { return sql.query("insert into foo values (?)", foo); }
}
```

After

```typescript
interface SaveFooPort { save(foo: Foo): Promise<void>; }
class FooService {
constructor(private readonly port: SaveFooPort) {}
save(foo: Foo) { return this.port.save(foo); }
}
class SqlFooAdapter implements SaveFooPort { save(foo: Foo) { return sqlFooStore.save(foo); } }
```

### Hexagonal Architecture

- Kind: [style](https://banes-lab.com/records/kind/style.md)
- Severity: recommended
- Scope: application, service
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Requires
[Ports and Adapters](https://banes-lab.com/records/lex/ports-and-adapters.md), [Domain Core](https://banes-lab.com/records/lex/domain-core.md)

Reinforces
[Clean Architecture](https://banes-lab.com/records/arch/clean-architecture.md), [Testability](https://banes-lab.com/records/arch/testability.md)

Enables
[External System Isolation](https://banes-lab.com/records/lex/external-system-isolation.md)

In tension with
[Initial Complexity](https://banes-lab.com/records/lex/initial-complexity.md)

Conflicts with
[Framework-Centric Core](https://banes-lab.com/records/lex/framework-centric-core.md)

Tensions
[Hexagonal Architecture Initial Complexity](https://banes-lab.com/records/tension/hexagonal-architecture-initial-complexity.md)

Violated by
framework/data types in core

Detected by
dependency direction violations

Measured by
core purity score

Refactored by
Move Framework Outward, Add Ports

Enforced by
architecture tests

Before

```typescript
app.post("/foo", async request => sqlFooStore.save(await request.json()));
```

After

```typescript
class CreateFooUseCase {
constructor(private readonly foos: FooRepository, private readonly events: EventPublisher) {}
execute(input: CreateFoo) { return createFooCore(input, this.foos, this.events); }
}
httpAdapter.bind("POST", "/foo", input => useCase.execute(input));
```

### Clean Architecture

- Kind: [style](https://banes-lab.com/records/kind/style.md)
- Severity: recommended
- Scope: application, system
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Requires
[Dependency Rule](https://banes-lab.com/records/lex/dependency-rule.md), [Use Cases](https://banes-lab.com/records/lex/use-cases.md), [Boundaries](https://banes-lab.com/records/lex/boundaries.md)

Reinforces
[Dependency Inversion Principle (DIP)](https://banes-lab.com/records/arch/dependency-inversion.md), [Testability](https://banes-lab.com/records/arch/testability.md)

Enables
[Framework Independence](https://banes-lab.com/records/lex/framework-independence.md)

In tension with
[Boilerplate](https://banes-lab.com/records/lex/boilerplate.md)

Conflicts with
[Layer Leakage](https://banes-lab.com/records/lex/layer-leakage.md)

Referenced by
[Hexagonal Architecture](https://banes-lab.com/records/arch/hexagonal-architecture.md), [Dependency Inversion Principle (DIP)](https://banes-lab.com/records/arch/dependency-inversion.md)

Tensions
[Clean Architecture Boilerplate](https://banes-lab.com/records/tension/boilerplate-clean-architecture.md)

Violated by
outer layers imported by inner layers

Detected by
dependency rule violations

Measured by
inward dependency compliance

Refactored by
Move Logic Inward, Extract Interface, Add Adapter

Enforced by
dependency graph rules

Before

```typescript
class FooController {
async create(request: Request) { return orm.foo.create(await request.json()); }
}
```

After

```typescript
interface CreateFooGateway { save(foo: Foo): Promise<void>; }
class CreateFooInteractor {
constructor(private readonly gateway: CreateFooGateway) {}
execute(input: CreateFooInput) { return this.gateway.save(Foo.create(input)); }
}
class FooController { constructor(private readonly useCase: CreateFooInteractor) {} }
```

### Layered Architecture

- Kind: [style](https://banes-lab.com/records/kind/style.md)
- Severity: contextual
- Scope: application, system
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Requires
[Layer Separation](https://banes-lab.com/records/lex/layer-separation.md)

Reinforces
[Separation of Concerns](https://banes-lab.com/records/arch/separation-of-concerns.md)

Enables
[Structured Code Organization](https://banes-lab.com/records/lex/structured-code-organization.md)

In tension with
[Anemic Layers](https://banes-lab.com/records/lex/anemic-layers.md)

Conflicts with
[Layer Skipping](https://banes-lab.com/records/lex/layer-skipping.md)

Referenced by
[Separation of Concerns](https://banes-lab.com/records/arch/separation-of-concerns.md)

Tensions
[Layered Architecture Anemic Layers](https://banes-lab.com/records/tension/anemic-layers-layered-architecture.md)

Violated by
presentation accessing persistence directly

Detected by
forbidden layer imports

Measured by
layer violation count

Refactored by
Move Logic, Introduce Service/Repository Boundary

Enforced by
layer rules

Before

```typescript
function createFoo(request: Request) {
return sql.query("insert into foo values (?)", JSON.parse(request.body));
}
```

After

```typescript
class FooController { constructor(private readonly service: FooService) {} }
class FooService { constructor(private readonly repository: FooRepository) {} }
class SqlFooRepository implements FooRepository { save(foo: Foo) { return fooTable.insert(foo); } }
```

### Component-Based Architecture

- Kind: [style](https://banes-lab.com/records/kind/style.md)
- Severity: recommended
- Scope: component, system
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Requires
[Component Boundaries](https://banes-lab.com/records/lex/component-boundaries.md), [Contracts](https://banes-lab.com/records/lex/contracts.md)

Reinforces
[Modularity](https://banes-lab.com/records/arch/modularity.md), [Composability](https://banes-lab.com/records/arch/composability.md)

Enables
[Reuse](https://banes-lab.com/records/lex/reuse.md), [Replaceability](https://banes-lab.com/records/arch/replaceability.md)

In tension with
[Integration Overhead](https://banes-lab.com/records/lex/integration-overhead.md)

Conflicts with
[Big Ball of Mud](https://banes-lab.com/records/arch/big-ball-of-mud.md)

Tensions
[Component-Based Architecture Integration Overhead](https://banes-lab.com/records/tension/component-based-architecture-integration-overhead.md)

Violated by
component internals accessed externally

Detected by
boundary import violations

Measured by
component cohesion/coupling

Refactored by
Extract Component, Define Contract

Enforced by
component ownership rules

Before

```typescript
const app = {
createFoo,
createBar,
renderFoo,
saveBar,
publishBaz,
};
```

After

```typescript
const fooComponent = defineComponent({
name: "foo",
exports: { createFoo, FooView },
requires: { FooStore, EventBus },
});
```

### Package by Feature

- Kind: [principle](https://banes-lab.com/records/kind/principle.md)
- Severity: recommended
- Scope: package, module
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Requires
[Feature Cohesion](https://banes-lab.com/records/lex/feature-cohesion.md)

Reinforces
[Modularity](https://banes-lab.com/records/arch/modularity.md), [Bounded Context](https://banes-lab.com/records/arch/bounded-context.md)

Enables
[Locality of Change](https://banes-lab.com/records/lex/locality-of-change.md)

In tension with
[Shared Technical Concerns](https://banes-lab.com/records/lex/shared-technical-concerns.md)

Conflicts with
[Package by Technical Layer Only](https://banes-lab.com/records/lex/package-by-technical-layer-only.md)

Tensions
[Package by Feature Shared Technical Concerns](https://banes-lab.com/records/tension/package-by-feature-shared-technical-concerns.md)

Violated by
feature logic scattered across technical folders

Detected by
change sets spanning many layer packages

Measured by
change locality

Refactored by
Repackage by Feature, Move Classes

Enforced by
package conventions

Before

```typescript
src/controllers/foo.ts
src/controllers/bar.ts
src/services/foo.ts
src/services/bar.ts
src/repositories/foo.ts
src/repositories/bar.ts
```

After

```typescript
src/foo/controller.ts
src/foo/service.ts
src/foo/repository.ts
src/bar/controller.ts
src/bar/service.ts
src/bar/repository.ts
```

### Microservices

- Kind: [style](https://banes-lab.com/records/kind/style.md)
- Severity: contextual
- Scope: system, service, deployment
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Requires
[Service Autonomy](https://banes-lab.com/records/arch/service-autonomy.md), [Independent Deployment](https://banes-lab.com/records/lex/independent-deployment.md)

Reinforces
[Scalability](https://banes-lab.com/records/arch/scalability.md), [Bounded Context](https://banes-lab.com/records/arch/bounded-context.md)

Enables
[Decentralized Ownership](https://banes-lab.com/records/lex/decentralized-ownership.md)

In tension with
[Operational Complexity](https://banes-lab.com/records/lex/operational-complexity.md), [Consistency](https://banes-lab.com/records/arch/consistency.md)

Conflicts with
[Distributed Monolith](https://banes-lab.com/records/arch/distributed-monolith.md)

Referenced by
[Decentralization](https://banes-lab.com/records/arch/decentralization.md), [Autonomy](https://banes-lab.com/records/arch/autonomy.md), [Bounded Context](https://banes-lab.com/records/arch/bounded-context.md), [Service Autonomy](https://banes-lab.com/records/arch/service-autonomy.md)

Tensions
[Microservices Operational Complexity](https://banes-lab.com/records/tension/microservices-operational-complexity.md), [Microservices Consistency](https://banes-lab.com/records/tension/consistency-microservices.md)

Violated by
shared databases, synchronous service chains

Detected by
deployment coupling, cross-service transactions

Measured by
deploy independence, coupling metrics

Refactored by
Split Service, [Own Data](https://banes-lab.com/records/lex/own-data.md), Add Events

Enforced by
service ownership, API contracts

Before

```typescript
class SharedApplication {
createFoo(foo: Foo) { return sharedDb.insert("foo", foo); }
createBar(bar: Bar) { return sharedDb.insert("bar", bar); }
}
```

After

```typescript
class FooService {
constructor(private readonly fooStore: FooStore, private readonly outbox: Outbox) {}
create(foo: Foo) { return transact(() => [this.fooStore.save(foo), this.outbox.append(fooCreated(foo))]); }
}
class BarService { constructor(private readonly barStore: BarStore) {} }
```

### Monolith Architecture

- Kind: [style](https://banes-lab.com/records/kind/style.md)
- Severity: contextual
- Scope: application, deployment
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Requires
[Unified Deployment Boundary](https://banes-lab.com/records/lex/unified-deployment-boundary.md)

Reinforces
[Operational Simplicity](https://banes-lab.com/records/lex/operational-simplicity.md)

Enables
[Transactional Simplicity](https://banes-lab.com/records/lex/transactional-simplicity.md)

In tension with
[Team Autonomy](https://banes-lab.com/records/lex/team-autonomy.md), [Independent Scaling](https://banes-lab.com/records/lex/independent-scaling.md)

Conflicts with
[Unbounded Big Ball of Mud](https://banes-lab.com/records/lex/unbounded-big-ball-of-mud.md)

Tensions
[Monolith Architecture Team Autonomy](https://banes-lab.com/records/tension/monolith-architecture-team-autonomy.md), [Monolith Architecture Independent Scaling](https://banes-lab.com/records/tension/independent-scaling-monolith-architecture.md)

Violated by
unclear internal boundaries

Detected by
cyclic packages, high global coupling

Measured by
module boundary health

Refactored by
Modularize Internally, Add Boundaries

Enforced by
modular monolith rules

Before

```typescript
await http.post("foo-service", foo);
await http.post("bar-service", bar);
await http.post("baz-service", baz);
```

After

```typescript
class ModularMonolith {
constructor(readonly foo: FooModule, readonly bar: BarModule, readonly baz: BazModule) {}
}
await app.foo.create(foo);
await app.bar.create(bar);
```

### Pipes and Filters

- Kind: [style](https://banes-lab.com/records/kind/style.md)
- Severity: recommended
- Scope: application, data processing, composition
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Requires
[Uniform Stage Interface](https://banes-lab.com/records/lex/uniform-stage-interface.md)

Reinforces
[Single Responsibility Principle (SRP)](https://banes-lab.com/records/arch/single-responsibility.md), [Composability](https://banes-lab.com/records/arch/composability.md)

Enables
[Reorderable Stages](https://banes-lab.com/records/lex/reorderable-stages.md), [Independent Stage Testing](https://banes-lab.com/records/lex/independent-stage-testing.md)

In tension with
[End-to-End Traceability](https://banes-lab.com/records/lex/end-to-end-traceability.md)

Conflicts with
[Monolithic Transform Function](https://banes-lab.com/records/lex/monolithic-transform-function.md)

Tensions
[Pipes and Filters End-to-End Traceability](https://banes-lab.com/records/tension/end-to-end-traceability-pipes-and-filters.md)

Violated by
one function performing every transform step inline

Detected by
long sequential transform bodies

Measured by
transform-step count per function

Refactored by
Extract Filters, Connect via Pipeline

Enforced by
[design review](https://banes-lab.com/records/arch/design-review.md)

Before

```typescript
function processFoo(raw: string) {
const parsed = parseFoo(raw);
const cleaned = cleanFoo(parsed);
return enrichFoo(cleaned);
}
```

After

```typescript
const filters: FooFilter[] = [parseFoo, cleanFoo, enrichFoo];
const fooPipeline = connect(filters);
fooPipeline.run(raw);
```

### Service-Oriented Architecture

- Kind: [style](https://banes-lab.com/records/kind/style.md)
- Severity: contextual
- Scope: application, service, integration
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Requires
[Service Contract](https://banes-lab.com/records/arch/service-contract.md)

Reinforces
[Service Autonomy](https://banes-lab.com/records/arch/service-autonomy.md), [Low Coupling](https://banes-lab.com/records/arch/low-coupling.md)

Enables
[Contract-Governed Service Reuse](https://banes-lab.com/records/lex/contract-governed-service-reuse.md)

In tension with
[Operational Overhead](https://banes-lab.com/records/lex/operational-overhead.md)

Conflicts with
[Shared Monolithic Application](https://banes-lab.com/records/lex/shared-monolithic-application.md)

Tensions
[Service-Oriented Architecture Operational Overhead](https://banes-lab.com/records/tension/operational-overhead-service-oriented-architecture.md)

Violated by
capabilities bundled in one application object

Detected by
unrelated operations sharing one class/module

Measured by
capability cohesion per module

Refactored by
Expose Capabilities as Contracted Services

Enforced by
[architecture review](https://banes-lab.com/records/arch/architecture-review.md)

Before

```typescript
class Application {
createFoo() {}
createBar() {}
createBaz() {}
}
```

After

```typescript
const fooService = registerService("FooService", { create: createFoo }, { contract: FooServiceContract });
serviceBus.expose(fooService);
```

### Space-Based Architecture

- Kind: [style](https://banes-lab.com/records/kind/style.md)
- Severity: contextual
- Scope: application, scalability, distributed state
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Requires
[Replicated In-Memory State](https://banes-lab.com/records/lex/replicated-in-memory-state.md)

Reinforces
[Horizontal Scaling](https://banes-lab.com/records/arch/horizontal-scaling.md), [Elasticity](https://banes-lab.com/records/arch/elasticity.md)

Enables
[Database-Bottleneck Removal](https://banes-lab.com/records/lex/database-bottleneck-removal.md)

In tension with
[Consistency](https://banes-lab.com/records/arch/consistency.md)

Conflicts with
[Central Database Bottleneck](https://banes-lab.com/records/lex/central-database-bottleneck.md)

Tensions
[Space-Based Architecture Consistency](https://banes-lab.com/records/tension/consistency-space-based-architecture.md)

Violated by
all reads/writes funneled through one central database

Detected by
single datastore as the scaling limit

Measured by
central-datastore contention rate

Refactored by
Adopt a Replicated Data Space

Enforced by
[architecture review](https://banes-lab.com/records/arch/architecture-review.md)

Before

```typescript
const foo = await centralDatabase.find(id);
```

After

```typescript
const foo = await fooSpace.read(id);
fooSpace.on("write", replicateToPeers);
```

## Links to

- [style](https://banes-lab.com/records/kind/style.md)
- [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
- [Ports](https://banes-lab.com/records/lex/ports.md)
- [Adapters](https://banes-lab.com/records/lex/adapters.md)
- [Dependency Inversion Principle (DIP)](https://banes-lab.com/records/arch/dependency-inversion.md)
- [Replaceability](https://banes-lab.com/records/arch/replaceability.md)
- [Testability](https://banes-lab.com/records/arch/testability.md)
- [Infrastructure Independence](https://banes-lab.com/records/lex/infrastructure-independence.md)
- [Boilerplate](https://banes-lab.com/records/lex/boilerplate.md)
- [Infrastructure-Centric Design](https://banes-lab.com/records/lex/infrastructure-centric-design.md)
- [Framework Leakage](https://banes-lab.com/records/arch/framework-leakage.md)
- [Ports and Adapters Architecture / Boilerplate](https://banes-lab.com/records/tension/boilerplate-ports-and-adapters-architecture.md)
- [Ports and Adapters](https://banes-lab.com/records/lex/ports-and-adapters.md)
- [Domain Core](https://banes-lab.com/records/lex/domain-core.md)
- [Clean Architecture](https://banes-lab.com/records/arch/clean-architecture.md)
- [External System Isolation](https://banes-lab.com/records/lex/external-system-isolation.md)
- [Initial Complexity](https://banes-lab.com/records/lex/initial-complexity.md)
- [Framework-Centric Core](https://banes-lab.com/records/lex/framework-centric-core.md)
- [Hexagonal Architecture / Initial Complexity](https://banes-lab.com/records/tension/hexagonal-architecture-initial-complexity.md)
- [Dependency Rule](https://banes-lab.com/records/lex/dependency-rule.md)
- [Use Cases](https://banes-lab.com/records/lex/use-cases.md)
- [Boundaries](https://banes-lab.com/records/lex/boundaries.md)
- [Framework Independence](https://banes-lab.com/records/lex/framework-independence.md)
- [Layer Leakage](https://banes-lab.com/records/lex/layer-leakage.md)
- [Hexagonal Architecture](https://banes-lab.com/records/arch/hexagonal-architecture.md)
- [Clean Architecture / Boilerplate](https://banes-lab.com/records/tension/boilerplate-clean-architecture.md)
- [Layer Separation](https://banes-lab.com/records/lex/layer-separation.md)
- [Separation of Concerns](https://banes-lab.com/records/arch/separation-of-concerns.md)
- [Structured Code Organization](https://banes-lab.com/records/lex/structured-code-organization.md)
- [Anemic Layers](https://banes-lab.com/records/lex/anemic-layers.md)
- [Layer Skipping](https://banes-lab.com/records/lex/layer-skipping.md)
- [Layered Architecture / Anemic Layers](https://banes-lab.com/records/tension/anemic-layers-layered-architecture.md)
- [Component Boundaries](https://banes-lab.com/records/lex/component-boundaries.md)
- [Contracts](https://banes-lab.com/records/lex/contracts.md)
- [Modularity](https://banes-lab.com/records/arch/modularity.md)
- [Composability](https://banes-lab.com/records/arch/composability.md)
- [Reuse](https://banes-lab.com/records/lex/reuse.md)
- [Integration Overhead](https://banes-lab.com/records/lex/integration-overhead.md)
- [Big Ball of Mud](https://banes-lab.com/records/arch/big-ball-of-mud.md)
- [Component-Based Architecture / Integration Overhead](https://banes-lab.com/records/tension/component-based-architecture-integration-overhead.md)
- [principle](https://banes-lab.com/records/kind/principle.md)
- [Feature Cohesion](https://banes-lab.com/records/lex/feature-cohesion.md)
- [Bounded Context](https://banes-lab.com/records/arch/bounded-context.md)
- [Locality of Change](https://banes-lab.com/records/lex/locality-of-change.md)
- [Shared Technical Concerns](https://banes-lab.com/records/lex/shared-technical-concerns.md)
- [Package by Technical Layer Only](https://banes-lab.com/records/lex/package-by-technical-layer-only.md)
- [Package by Feature / Shared Technical Concerns](https://banes-lab.com/records/tension/package-by-feature-shared-technical-concerns.md)
- [Service Autonomy](https://banes-lab.com/records/arch/service-autonomy.md)
- [Independent Deployment](https://banes-lab.com/records/lex/independent-deployment.md)
- [Scalability](https://banes-lab.com/records/arch/scalability.md)
- [Decentralized Ownership](https://banes-lab.com/records/lex/decentralized-ownership.md)
- [Operational Complexity](https://banes-lab.com/records/lex/operational-complexity.md)
- [Consistency](https://banes-lab.com/records/arch/consistency.md)
- [Distributed Monolith](https://banes-lab.com/records/arch/distributed-monolith.md)
- [Decentralization](https://banes-lab.com/records/arch/decentralization.md)
- [Autonomy](https://banes-lab.com/records/arch/autonomy.md)
- [Microservices / Operational Complexity](https://banes-lab.com/records/tension/microservices-operational-complexity.md)
- [Microservices / Consistency](https://banes-lab.com/records/tension/consistency-microservices.md)
- [Own Data](https://banes-lab.com/records/lex/own-data.md)
- [Unified Deployment Boundary](https://banes-lab.com/records/lex/unified-deployment-boundary.md)
- [Operational Simplicity](https://banes-lab.com/records/lex/operational-simplicity.md)
- [Transactional Simplicity](https://banes-lab.com/records/lex/transactional-simplicity.md)
- [Team Autonomy](https://banes-lab.com/records/lex/team-autonomy.md)
- [Independent Scaling](https://banes-lab.com/records/lex/independent-scaling.md)
- [Unbounded Big Ball of Mud](https://banes-lab.com/records/lex/unbounded-big-ball-of-mud.md)
- [Monolith Architecture / Team Autonomy](https://banes-lab.com/records/tension/monolith-architecture-team-autonomy.md)
- [Monolith Architecture / Independent Scaling](https://banes-lab.com/records/tension/independent-scaling-monolith-architecture.md)
- [Uniform Stage Interface](https://banes-lab.com/records/lex/uniform-stage-interface.md)
- [Single Responsibility Principle (SRP)](https://banes-lab.com/records/arch/single-responsibility.md)
- [Reorderable Stages](https://banes-lab.com/records/lex/reorderable-stages.md)
- [Independent Stage Testing](https://banes-lab.com/records/lex/independent-stage-testing.md)
- [End-to-End Traceability](https://banes-lab.com/records/lex/end-to-end-traceability.md)
- [Monolithic Transform Function](https://banes-lab.com/records/lex/monolithic-transform-function.md)
- [Pipes and Filters / End-to-End Traceability](https://banes-lab.com/records/tension/end-to-end-traceability-pipes-and-filters.md)
- [Design Review](https://banes-lab.com/records/arch/design-review.md)
- [Service Contract](https://banes-lab.com/records/arch/service-contract.md)
- [Low Coupling](https://banes-lab.com/records/arch/low-coupling.md)
- [Contract-Governed Service Reuse](https://banes-lab.com/records/lex/contract-governed-service-reuse.md)
- [Operational Overhead](https://banes-lab.com/records/lex/operational-overhead.md)
- [Shared Monolithic Application](https://banes-lab.com/records/lex/shared-monolithic-application.md)
- [Service-Oriented Architecture / Operational Overhead](https://banes-lab.com/records/tension/operational-overhead-service-oriented-architecture.md)
- [Architecture Review](https://banes-lab.com/records/arch/architecture-review.md)
- [Replicated In-Memory State](https://banes-lab.com/records/lex/replicated-in-memory-state.md)
- [Horizontal Scaling](https://banes-lab.com/records/arch/horizontal-scaling.md)
- [Elasticity](https://banes-lab.com/records/arch/elasticity.md)
- [Database-Bottleneck Removal](https://banes-lab.com/records/lex/database-bottleneck-removal.md)
- [Central Database Bottleneck](https://banes-lab.com/records/lex/central-database-bottleneck.md)
- [Space-Based Architecture / Consistency](https://banes-lab.com/records/tension/consistency-space-based-architecture.md)

## Linked from

- [The layer topology](https://banes-lab.com/ontology/schema/the-layer-topology.md)
- [The membership](https://banes-lab.com/ontology/schema/the-membership.md)
