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
- Define the Layers: Establish a clear set of layers. A common stack includes: Presentation -> Application/Service -> Domain -> Data Access.
- Enforce Dependency Direction: Code in a given layer may only depend on the layer immediately below it. Forbid any "upward" dependencies or imports.
- Centralize Cross-Cutting Concerns: Implement concerns like logging, authentication, and validation as centralized middleware or policies, rather than duplicating this logic in each layer.
- 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.
- 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.
Concrete Components
These vocabulary items name the concrete tools and abstractions
that show up when the paradigm is implemented. They are not
required dependencies and they are not part of the skill's
tools: frontmatter (which is reserved for Claude Code tool
restrictions). Use this list to disambiguate during architecture
discussions.
dependency-validator: fails the build when a layer imports above its allowed depth
layer-enforcer: static-analysis gate that checks namespaces match layer rules
architecture-compliance-checker: diffs the implemented layer graph against the documented one
Exit Criteria
Source: athola/claude-night-market → plugins/archetypes/skills/architecture-paradigm-layered/SKILL.md
1---2name: architecture-paradigm-layered3description: Applies layered n-tier architecture with enforced boundaries. Use when designing moderate systems needing clear presentation, domain, and persistence layers.4---56## Table of Contents78- [When to Employ This Paradigm](#when-to-employ-this-paradigm)9- [When NOT to Use This Paradigm](#when-not-to-use-this-paradigm)10- [Adoption Steps](#adoption-steps)11- [Key Deliverables](#key-deliverables)12- [Technology Guidance](#technology-guidance)13- [Risks & Mitigations](#risks-mitigations)1415# The Layered (N-Tier) Architecture Paradigm1617## When to Employ This Paradigm18- When teams need clear architectural boundaries and a familiar structure for moderate-sized systems.19- When compliance or operations teams require clear separation of concerns (e.g., UI vs. domain logic vs. persistence).20- When the deployment artifact remains a monolith, but code clarity and separation are degrading.2122## When NOT To Use This Paradigm23- When high scalability demands require independent scaling of components24- When multiple teams need independent deployment cycles25- When complex business logic requires frequent cross-layer communication26- When microservices architecture is already planned or in place27- When real-time processing requirements make layered communication too slow2829## Adoption Steps301. **Define the Layers**: Establish a clear set of layers. A common stack includes: Presentation -> Application/Service -> Domain -> Data Access.312. **Enforce Dependency Direction**: Code in a given layer may only depend on the layer immediately below it. Forbid any "upward" dependencies or imports.323. **Centralize Cross-Cutting Concerns**: Implement concerns like logging, authentication, and validation as centralized middleware or policies, rather than duplicating this logic in each layer.334. **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.345. **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.3536## Key Deliverables37- An Architecture Decision Record (ADR) that captures the responsibilities of each layer, the allowed dependencies between them, and the policy for any exceptions.38- A formal dependency diagram stored with the project documentation.39- Automated architectural checks (e.g., using ArchUnit, dep-cruise, or custom scripts) to prevent rule violations from being merged.4041## Technology Guidance4243**Layer Implementation Patterns**:44- **Presentation Layer**: React/Vue/Angular (Frontend), MVC Controllers (Backend)45- **Application Layer**: Service classes, Application services, Use case orchestrators46- **Domain Layer**: Business entities, Domain services, Business rules validation47- **Data Access Layer**: Repository pattern, ORM mappers, Data access objects (DAO)4849**Architecture Enforcement Tools**:50- **Java**: ArchUnit for dependency rule testing51- **JavaScript/TypeScript**: ESLint rules with dependency tracking52- **C#**: NDepend for architectural analysis53- **Python**: Custom decorators and import analysis tools5455**Common Layer Stacks**:56- **3-Layer**: Presentation → Business Logic → Data Access57- **4-Layer**: Presentation → Application → Domain → Infrastructure58- **5-Layer**: UI → Controller → Service → Domain → Persistence5960## Real-World Examples6162**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.6364**Banking Applications**: Financial institutions employ layered architecture to maintain strict separation between customer-facing interfaces, transaction processing, and secure data storage for regulatory compliance.6566**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.6768## Risks & Mitigations69- **Excessive Rigidity and Latency**:70 - **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.71- **"Leaky" Layers**:72 - **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.7374## Concrete Components7576These vocabulary items name the concrete tools and abstractions77that show up when the paradigm is implemented. They are not78required dependencies and they are not part of the skill's79``tools:`` frontmatter (which is reserved for Claude Code tool80restrictions). Use this list to disambiguate during architecture81discussions.8283- ``dependency-validator``: fails the build when a layer imports above its allowed depth84- ``layer-enforcer``: static-analysis gate that checks namespaces match layer rules85- ``architecture-compliance-checker``: diffs the implemented layer graph against the documented one8687## Exit Criteria8889- [ ] An ADR captures the chosen layer stack (3-layer, 4-layer, or 5-layer), responsibilities90 per layer, allowed dependency direction, and the policy for cross-layer exceptions.91- [ ] A formal dependency diagram is committed to project documentation and matches the ADR's92 stated layer boundaries.93- [ ] Automated architectural checks (ArchUnit, dep-cruise, or equivalent) are wired into CI94 and fail the build on any upward dependency.95- [ ] Cross-cutting concerns (logging, auth, validation) are implemented once as middleware or96 policy and are not duplicated across layer implementations.9798---99100**Source:** [`athola/claude-night-market`](https://github.com/athola/claude-night-market) → `plugins/archetypes/skills/architecture-paradigm-layered/SKILL.md`