Back to list
chandima

patterns

by chandima

0🍴 0📅 Jan 21, 2026

SKILL.md


name: patterns description: System design and architecture patterns. Covers layered architecture, clean architecture, microservices vs monolith decisions, event-driven patterns, and trade-off analysis frameworks.

Architecture Patterns

System design patterns and frameworks for building scalable, maintainable software.

Core Principles

  1. Simplicity First - Simplest solution that meets requirements. Avoid speculative generality.
  2. Separation of Concerns - Single, well-defined responsibility per component.
  3. Design for Failure - Graceful degradation, error handling, observability.
  4. Make It Testable - DI, clear interfaces, pure functions.
  5. Evolve, Don't Revolution - Incremental over big-bang. Strangler pattern.

Trade-off Analysis Framework

FactorQuestions
ComplexityHow much does this add? Is it justified?
ScalabilityWill this work at 10x, 100x scale?
MaintainabilityCan new developers understand this?
PerformanceWhat are latency/throughput characteristics?
CostInfrastructure and development costs?
RiskWhat could go wrong? How to mitigate?
TimeImplementation time? Opportunity cost?

Layered Architecture

┌─────────────────────────────────┐
│         Presentation            │  ← UI, API endpoints
├─────────────────────────────────┤
│         Application             │  ← Use cases, orchestration
├─────────────────────────────────┤
│           Domain                │  ← Business logic, entities
├─────────────────────────────────┤
│        Infrastructure           │  ← Database, external services
└─────────────────────────────────┘

Key Rule: Dependencies flow downward. Lower layers don't know about upper layers.

Clean Architecture

              ┌─────────────────┐
              │    Entities     │  ← Enterprise business rules
              ├─────────────────┤
              │   Use Cases     │  ← Application business rules
              ├─────────────────┤
              │   Adapters      │  ← Controllers, gateways
              ├─────────────────┤
              │  Frameworks     │  ← DB, web, external
              └─────────────────┘
              
Dependencies point INWARD →

Principles:

  • Domain at center, no external dependencies
  • Use cases orchestrate domain logic
  • Adapters connect to external world
  • Dependency inversion via interfaces

Microservices vs Monolith

MonolithMicroservices
Simple deploymentIndependent scaling
Easy debuggingTechnology diversity
Shared databaseService isolation
Team coordinationTeam autonomy
Lower latency (in-process)Network overhead
Start hereEvolve to this

Decision Guide

Stay Monolith When:

  • Team < 10 developers
  • Domain not well understood
  • Scaling needs are uniform
  • Debugging/tracing complexity matters

Consider Microservices When:

  • Independent scaling requirements
  • Different tech stacks needed
  • Team autonomy is priority
  • Domain boundaries are clear

Event-Driven Architecture

When to Use

  • Loose coupling between services
  • Eventual consistency acceptable
  • Need audit trail / event sourcing
  • Complex workflows across services

Patterns

PatternUse Case
Event Notification"Something happened" - fire and forget
Event-Carried StateInclude data, reduce queries
Event SourcingAudit trail, replay capability
CQRSSeparate read/write models

API Design Patterns

REST Resource Design

GET    /users           # List
POST   /users           # Create
GET    /users/:id       # Read
PUT    /users/:id       # Replace
PATCH  /users/:id       # Partial update
DELETE /users/:id       # Delete

Versioning Strategies

StrategyExamplePros/Cons
URL path/v1/usersClear, easy routing
HeaderAccept: application/vnd.api+json;v=1Cleaner URLs, harder discovery
Query param?version=1Simple, but ugly

Caching Patterns

PatternDescriptionUse Case
Cache-AsideApp manages cache explicitlyGeneral purpose
Read-ThroughCache handles miss automaticallySimplified app logic
Write-ThroughWrite to cache and DB synchronouslyConsistency critical
Write-BehindWrite to cache, async to DBHigh write throughput

Cache Levels

  1. Browser/Client - HTTP caching headers
  2. CDN/Edge - Static assets, public API
  3. Application - Redis, Memcached
  4. Database - Query cache, materialized views

Database Patterns

Choosing a Database

TypeBest ForExamples
RelationalTransactions, complex queriesPostgreSQL, MySQL
DocumentFlexible schema, JSONMongoDB, CouchDB
Key-ValueCaching, sessionsRedis, DynamoDB
GraphRelationshipsNeo4j, Neptune
Time-SeriesMetrics, logsInfluxDB, TimescaleDB

Scaling Patterns

  • Read Replicas - Scale reads, async replication
  • Sharding - Horizontal partitioning by key
  • CQRS - Separate read/write stores

Analysis Framework

Evaluating Existing Architecture

  1. Current State - Structure, pain points, tech debt
  2. Requirements - Functional + non-functional (scalability, latency)
  3. Gap Analysis - Where current falls short
  4. Recommendations - Prioritized, with trade-offs

Designing New Systems

  1. Understand Problem - Users, use cases, success metrics
  2. Define Constraints - Technical, business, team
  3. Explore Options - Multiple approaches, trade-offs
  4. Document Decision - ADR, diagrams, guidelines

Architecture Decision Record (ADR)

# ADR-001: [Title]

## Status
[Proposed | Accepted | Deprecated | Superseded]

## Context
[What problem are we solving? What constraints?]

## Decision
[What we decided to do]

## Consequences
[What are the results? Positive and negative]

Anti-Patterns

Anti-PatternProblemSolution
Big Ball of MudNo structureIntroduce boundaries gradually
Golden HammerOne solution for everythingRight tool for the job
Premature OptimizationComplexity without needMeasure first, optimize second
Distributed MonolithMicroservices without benefitsDefine clear boundaries
Anemic Domain ModelLogic in services, not entitiesRich domain objects

Score

Total Score

45/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

0/5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon