Skip to content

Architecture rules

Total rules: 26

Rules

ECO-ARC-ARCH-001 — Over-provisioned compute

Sustained low utilization suggests oversized instances or replicas.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-002 — Always-on low-traffic service

Services running 24/7 with low utilization create baseline waste.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-003 — Long synchronous dependency chain

Synchronous call chains amplify latency and failure propagation.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-004 — No autoscaling policy

Without scaling policies, systems drift into waste or fragility.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-005 — No resource limits in containers

Missing CPU/memory limits causes noisy-neighbor waste and instability.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-006 — Unbounded message queues

Queues without bounds hide backpressure and create runaway cost.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-007 — Batch jobs run too frequently

Over-scheduling batch jobs wastes compute and increases cost.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-008 — Hot storage used for cold data

Keeping cold data in hot tiers wastes storage spend and energy.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-009 — Duplicate services performing the same work

Duplicate services increase operational load and waste compute.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-010 — No observability on utilization

Without utilization metrics, waste is invisible and persistent.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-011 — Excessive replica counts

Too many replicas increase baseline waste.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-012 — No graceful degradation strategy

Without degradation, overload becomes failure and waste.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-013 — No caching layer for high-read workloads

High-read systems without caching waste CPU and DB capacity.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-014 — Stateful services blocking scaling

Stateful designs make scaling expensive and fragile.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-015 — Tight coupling across bounded contexts

Coupling increases coordination cost and failure propagation.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-016 — Multi-tenant workloads without isolation

Lack of isolation causes noisy-neighbor waste and instability.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-017 — Inefficient container image size

Large images increase pull time and wasted storage/transfer.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-018 — No cold-start optimization

Cold starts inflate latency and may force overprovisioning.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-019 — Overly aggressive autoscaling thresholds

Aggressive scaling can cause thrash and wasted churn.

  • Category: ARC
  • Family: ARCH

ECO-ARC-ARCH-020 — Underutilized GPU/accelerator resources

Accelerators running idle waste significant power and cost.

  • Category: ARC
  • Family: ARCH

ECO-CMP-JAVA-003 — Thread pool misconfiguration

Incorrect thread pool sizing can waste CPU or cause latency collapse.

  • Category: CMP
  • Family: JAVA

ECO-CMP-JAVA-006 — Missing connection pooling

No pooling increases connection churn and DB overhead.

  • Category: CMP
  • Family: JAVA

ECO-CMP-JAVA-009 — Large heap allocation spikes

Heap spikes increase GC pauses and tail latency.

  • Category: CMP
  • Family: JAVA

ECO-CMP-PY-016 — No connection pooling

Lack of pooling increases connection churn, latency, and DB load.

  • Category: CMP
  • Family: PY

ECO-INF-DOCKER-002 — Oversized base image

Heavy base images increase transfer, storage, and patching footprint without improving runtime value.

  • Category: Infrastructure
  • Family: Docker

ECO-INF-K8S-004 — Heavy or redundant sidecars

Sidecars add useful capabilities, but they also add CPU, memory, storage, and network overhead.

  • Category: Infrastructure
  • Family: Kubernetes