Get the FREE Ultimate OpenClaw Setup Guide →

architecture-paradigm-layered

npx machina-cli add skill athola/claude-night-market/architecture-paradigm-layered --openclaw
Files (1)
SKILL.md
5.7 KB

Table of Contents

The Layered (N-Tier) Architecture Paradigm

When to Employ This Paradigm

  • When teams need clear architectural boundaries and a familiar structure for moderate-sized systems.
  • When compliance or operations teams require clear separation of concerns (e.g., UI vs. domain logic vs. persistence).
  • When the deployment artifact remains a monolith, but code clarity and separation are degrading.

When NOT To Use This Paradigm

  • When high scalability demands require independent scaling of components
  • When multiple teams need independent deployment cycles
  • When complex business logic requires frequent cross-layer communication
  • When microservices architecture is already planned or in place
  • When real-time processing requirements make layered communication too slow

Adoption Steps

  1. Define the Layers: Establish a clear set of layers. A common stack includes: Presentation -> Application/Service -> Domain -> Data Access.
  2. Enforce Dependency Direction: Code in a given layer may only depend on the layer immediately below it. Forbid any "upward" dependencies or imports.
  3. Centralize Cross-Cutting Concerns: Implement concerns like logging, authentication, and validation as centralized middleware or policies, rather than duplicating this logic in each layer.
  4. Test Each Layer Appropriately: Apply testing strategies suitable for each layer, such as unit tests for the domain layer, service-layer tests for orchestration logic, and integration tests for persistence adapters.
  5. Document and Enforce Interactions: Maintain up-to-date dependency diagrams and use automated architecture tests to prevent developers from creating "shortcut" dependencies that violate the layering rules.

Key Deliverables

  • An Architecture Decision Record (ADR) that captures the responsibilities of each layer, the allowed dependencies between them, and the policy for any exceptions.
  • A formal dependency diagram stored with the project documentation.
  • Automated architectural checks (e.g., using ArchUnit, dep-cruise, or custom scripts) to prevent rule violations from being merged.

Technology Guidance

Layer Implementation Patterns:

  • Presentation Layer: React/Vue/Angular (Frontend), MVC Controllers (Backend)
  • Application Layer: Service classes, Application services, Use case orchestrators
  • Domain Layer: Business entities, Domain services, Business rules validation
  • Data Access Layer: Repository pattern, ORM mappers, Data access objects (DAO)

Architecture Enforcement Tools:

  • Java: ArchUnit for dependency rule testing
  • JavaScript/TypeScript: ESLint rules with dependency tracking
  • C#: NDepend for architectural analysis
  • Python: Custom decorators and import analysis tools

Common Layer Stacks:

  • 3-Layer: Presentation → Business Logic → Data Access
  • 4-Layer: Presentation → Application → Domain → Infrastructure
  • 5-Layer: UI → Controller → Service → Domain → Persistence

Real-World Examples

Enterprise ERP Systems: SAP and Oracle ERP use layered architecture to separate user interfaces from business logic and database operations, enabling different frontend applications to share the same business rules.

Banking Applications: Financial institutions employ layered architecture to maintain strict separation between customer-facing interfaces, transaction processing, and secure data storage for regulatory compliance.

E-commerce Platforms: Traditional e-commerce sites use layered architecture to separate product catalogs, shopping cart logic, order processing, and payment handling into distinct layers.

Risks & Mitigations

  • Excessive Rigidity and Latency:
    • Mitigation: For features that span multiple layers, strict adherence can lead to excessive "pass-through" code and increased latency. In such cases, consider using a Façade pattern to provide a more direct interface where appropriate.
  • "Leaky" Layers:
    • Mitigation: Developers may be tempted to bypass architectural rules for expediency, which degrades the architecture. Treat all architectural violations as build-breaking failures or critical issues in code review.

Troubleshooting

Common Issues

Command not found Ensure all dependencies are installed and in PATH

Permission errors Check file permissions and run with appropriate privileges

Unexpected behavior Enable verbose logging with --verbose flag

Source

git clone https://github.com/athola/claude-night-market/blob/master/plugins/archetypes/skills/architecture-paradigm-layered/SKILL.mdView on GitHub

Overview

The Layered (N-Tier) paradigm guides implementing layered patterns and enforcing layer boundaries in traditional apps. It promotes separation of concerns across Presentation, Application/Service, Domain, and Data Access, supporting compliant, maintainable code in monoliths and moderate-sized teams.

How This Skill Works

Define a four-layer stack (Presentation -> Application/Service -> Domain -> Data Access), and enforce that each layer only depends on the one below. Centralize cross-cutting concerns (logging, authentication, validation) and apply per-layer tests, while documenting interactions with ADRs and dependency diagrams; use automated architecture checks to prevent violations.

When to Use It

  • When teams need clear architectural boundaries for moderate-sized systems.
  • When compliance or operations require clear separation of UI, domain logic, and persistence.
  • When the deployment artifact remains a monolith but code clarity and separation are degrading.
  • When you prefer familiar, well-understood patterns over microservices for governance and risk management.
  • When legacy systems can benefit from modernization without a full shift to microservices.

Quick Start

  1. Step 1: Define Layers – Establish Presentation, Application/Service, Domain, and Data Access and assign responsibilities.
  2. Step 2: Enforce Dependencies – Configure rules so a layer cannot depend upward; only downward is allowed.
  3. Step 3: Centralize and Verify – Implement cross-cutting concerns in one place and set up ADRs plus automated architecture tests.

Best Practices

  • Define a clear Presentation -> Application/Service -> Domain -> Data Access stack.
  • Enforce dependency direction: a layer may only depend on the layer immediately below it.
  • Centralize cross-cutting concerns (logging, authentication, validation) as centralized middleware or policies.
  • Test each layer appropriately (unit tests for domain, service-layer tests for orchestration, integration tests for persistence).
  • Document and enforce interactions with ADRs and automated architectural checks (ArchUnit, dep-cruise, etc.).

Example Use Cases

  • Monolith e-commerce app with distinct UI, domain, and data access layers.
  • Legacy CRM modernization aimed at improving maintainability while staying monolithic.
  • Compliance-heavy banking app enforcing separation of concerns across layers.
  • Content management system with layered UI, orchestration, domain, and persistence layers.
  • Enterprise SaaS with centralized auditing and automated architecture checks.

Frequently Asked Questions

Add this skill to your agents

Related Skills

Sponsor this space

Reach thousands of developers