Scalable Architecture · Schema
Microservice
Describes a microservice in a scalable architecture, including its service boundaries, communication contracts, resource requirements, and operational characteristics.
Cloud ArchitectureCloud NativeDistributed SystemsHigh AvailabilityInfrastructureMicroservicesPerformanceResilienceScalabilityService Mesh
Properties
| Name | Type | Description |
|---|---|---|
| name | string | Service name in kebab-case. |
| version | string | Semantic version of the service. |
| description | string | Human-readable description of the service's bounded context and responsibilities. |
| team | string | Team responsible for this service (follows domain-driven team ownership). |
| domain | string | Domain or bounded context this service belongs to. |
| api | object | Service API contract definition. |
| dependencies | array | List of upstream services this service depends on. |
| resources | object | |
| scaling | object | |
| resilience | object | |
| observability | object | |
| tags | array |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/scalable-architecture/main/json-schema/scalable-architecture-microservice-schema.json",
"title": "Microservice",
"description": "Describes a microservice in a scalable architecture, including its service boundaries, communication contracts, resource requirements, and operational characteristics.",
"type": "object",
"required": ["name", "version", "api"],
"properties": {
"name": {
"type": "string",
"description": "Service name in kebab-case.",
"pattern": "^[a-z][a-z0-9-]*$"
},
"version": {
"type": "string",
"description": "Semantic version of the service.",
"pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.]+)?$"
},
"description": {
"type": "string",
"description": "Human-readable description of the service's bounded context and responsibilities."
},
"team": {
"type": "string",
"description": "Team responsible for this service (follows domain-driven team ownership)."
},
"domain": {
"type": "string",
"description": "Domain or bounded context this service belongs to."
},
"api": {
"type": "object",
"description": "Service API contract definition.",
"required": ["protocol"],
"properties": {
"protocol": {
"type": "string",
"enum": ["HTTP/REST", "gRPC", "GraphQL", "WebSocket", "AMQP", "Kafka"],
"description": "Primary communication protocol."
},
"version": {
"type": "string",
"description": "API version (e.g., v1, v2).",
"default": "v1"
},
"baseUrl": {
"type": "string",
"format": "uri",
"description": "Base URL for the service API."
},
"healthEndpoint": {
"type": "string",
"description": "Health check endpoint path.",
"default": "/health"
},
"metricsEndpoint": {
"type": "string",
"description": "Prometheus metrics endpoint path.",
"default": "/metrics"
}
}
},
"dependencies": {
"type": "array",
"description": "List of upstream services this service depends on.",
"items": {
"type": "object",
"required": ["name", "type"],
"properties": {
"name": {"type": "string"},
"type": {
"type": "string",
"enum": ["synchronous", "asynchronous", "database", "cache", "queue"]
},
"required": {"type": "boolean", "default": true},
"circuitBreaker": {"type": "boolean", "default": false}
}
}
},
"resources": {
"$ref": "#/$defs/ResourceRequirements"
},
"scaling": {
"$ref": "#/$defs/ScalingConfig"
},
"resilience": {
"$ref": "#/$defs/ResilienceConfig"
},
"observability": {
"$ref": "#/$defs/ObservabilityConfig"
},
"tags": {
"type": "array",
"items": {"type": "string"}
}
},
"$defs": {
"ResourceRequirements": {
"type": "object",
"description": "Kubernetes-style resource requests and limits.",
"properties": {
"requests": {
"type": "object",
"properties": {
"cpu": {"type": "string", "description": "CPU request (e.g., '100m', '0.5')."},
"memory": {"type": "string", "description": "Memory request (e.g., '128Mi', '1Gi')."}
}
},
"limits": {
"type": "object",
"properties": {
"cpu": {"type": "string"},
"memory": {"type": "string"}
}
}
}
},
"ScalingConfig": {
"type": "object",
"description": "Autoscaling configuration for the service.",
"properties": {
"minReplicas": {"type": "integer", "minimum": 0, "default": 1},
"maxReplicas": {"type": "integer", "minimum": 1},
"targetCPUUtilizationPercentage": {"type": "integer", "minimum": 1, "maximum": 100},
"scaleToZero": {"type": "boolean", "default": false},
"scalingTrigger": {
"type": "string",
"enum": ["cpu", "memory", "custom-metric", "queue-depth", "event-driven"]
}
}
},
"ResilienceConfig": {
"type": "object",
"description": "Resilience patterns applied to the service.",
"properties": {
"circuitBreaker": {
"type": "object",
"properties": {
"enabled": {"type": "boolean", "default": false},
"threshold": {"type": "number", "minimum": 0, "maximum": 1},
"timeout": {"type": "integer", "description": "Recovery timeout in seconds."}
}
},
"retry": {
"type": "object",
"properties": {
"enabled": {"type": "boolean", "default": false},
"maxAttempts": {"type": "integer", "minimum": 1, "default": 3},
"backoff": {
"type": "string",
"enum": ["fixed", "exponential", "jitter"],
"default": "exponential"
}
}
},
"timeout": {
"type": "object",
"properties": {
"requestTimeoutMs": {"type": "integer", "minimum": 0},
"connectionTimeoutMs": {"type": "integer", "minimum": 0}
}
}
}
},
"ObservabilityConfig": {
"type": "object",
"description": "Observability instrumentation settings.",
"properties": {
"tracingEnabled": {"type": "boolean", "default": true},
"metricsEnabled": {"type": "boolean", "default": true},
"loggingLevel": {
"type": "string",
"enum": ["DEBUG", "INFO", "WARN", "ERROR"],
"default": "INFO"
},
"samplingRate": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Distributed trace sampling rate (0.0-1.0).",
"default": 0.1
}
}
}
}
}