docs: Align documentation with true microservices architecture
Transform all documentation from modular monolith to true microservices
architecture where core services are independently deployable.
Key Changes:
- Core Kernel: Infrastructure only (no business logic)
- Core Services: Auth, Identity, Authz, Audit as separate microservices
- Each service has own entry point (cmd/{service}/)
- Each service has own gRPC server and database schema
- Services register with Consul for service discovery
- API Gateway: Moved from Epic 8 to Epic 1 as core infrastructure
- Single entry point for all external traffic
- Handles routing, JWT validation, rate limiting, CORS
- Service Discovery: Consul as primary mechanism (ADR-0033)
- Database Pattern: Per-service connections with schema isolation
Documentation Updates:
- Updated all 9 architecture documents
- Updated 4 ADRs and created 2 new ADRs (API Gateway, Service Discovery)
- Rewrote Epic 1: Core Kernel & Infrastructure (infrastructure only)
- Rewrote Epic 2: Core Services (Auth, Identity, Authz, Audit as services)
- Updated Epic 3-8 stories for service architecture
- Updated plan.md, playbook.md, requirements.md, index.md
- Updated all epic READMEs and story files
New ADRs:
- ADR-0032: API Gateway Strategy
- ADR-0033: Service Discovery Implementation (Consul)
New Stories:
- Epic 1.7: Service Client Interfaces
- Epic 1.8: API Gateway Implementation
This commit is contained in:
@@ -32,10 +32,8 @@ graph TD
|
||||
Scheduler[Scheduler]
|
||||
end
|
||||
|
||||
subgraph "Security Layer"
|
||||
Auth[Auth Service]
|
||||
Authz[Authz Service]
|
||||
Audit[Audit Service]
|
||||
subgraph "Service Registry"
|
||||
Registry[Service Registry<br/>Consul]
|
||||
end
|
||||
|
||||
subgraph "Observability Layer"
|
||||
@@ -52,17 +50,14 @@ graph TD
|
||||
DI --> Cache
|
||||
DI --> EventBus
|
||||
DI --> Scheduler
|
||||
DI --> Auth
|
||||
DI --> Authz
|
||||
DI --> Audit
|
||||
DI --> Metrics
|
||||
DI --> Health
|
||||
DI --> Tracer
|
||||
DI --> Registry
|
||||
|
||||
Auth --> DB
|
||||
Authz --> DB
|
||||
Authz --> Cache
|
||||
Audit --> DB
|
||||
Registry --> Auth
|
||||
Registry --> Authz
|
||||
Registry --> Audit
|
||||
|
||||
DB --> Tracer
|
||||
Cache --> Tracer
|
||||
@@ -73,9 +68,9 @@ graph TD
|
||||
style Auth fill:#ff6b6b,stroke:#c92a2a,stroke-width:2px,color:#fff
|
||||
```
|
||||
|
||||
## Module to Core Integration
|
||||
## Service to Service Integration
|
||||
|
||||
Modules (services) integrate with core services through service client interfaces. All communication uses gRPC or HTTP.
|
||||
Feature services integrate with core services through service client interfaces. All communication uses gRPC (primary) or HTTP (fallback). Services discover each other via the service registry (Consul).
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
@@ -86,10 +81,14 @@ graph LR
|
||||
end
|
||||
|
||||
subgraph "Service Clients"
|
||||
AuthClient[Auth Service Client]
|
||||
AuthzClient[Authz Service Client]
|
||||
IdentityClient[Identity Service Client]
|
||||
AuditClient[Audit Service Client]
|
||||
AuthClient[Auth Service Client<br/>gRPC]
|
||||
AuthzClient[Authz Service Client<br/>gRPC]
|
||||
IdentityClient[Identity Service Client<br/>gRPC]
|
||||
AuditClient[Audit Service Client<br/>gRPC]
|
||||
end
|
||||
|
||||
subgraph "Service Registry"
|
||||
Registry[Consul<br/>Service Discovery]
|
||||
end
|
||||
|
||||
subgraph "Core Services"
|
||||
@@ -117,6 +116,16 @@ graph LR
|
||||
ModuleService --> EventBusService
|
||||
ModuleService --> CacheService
|
||||
|
||||
AuthClient -->|Discover| Registry
|
||||
AuthzClient -->|Discover| Registry
|
||||
IdentityClient -->|Discover| Registry
|
||||
AuditClient -->|Discover| Registry
|
||||
|
||||
Registry --> AuthService
|
||||
Registry --> AuthzService
|
||||
Registry --> IdentityService
|
||||
Registry --> AuditService
|
||||
|
||||
AuthClient --> AuthService
|
||||
AuthzClient --> AuthzService
|
||||
IdentityClient --> IdentityService
|
||||
@@ -127,7 +136,8 @@ graph LR
|
||||
EventBusService --> QueueClient
|
||||
|
||||
style ModuleService fill:#7b68ee,stroke:#5a4fcf,stroke-width:2px,color:#fff
|
||||
style AuthService fill:#4a90e2,stroke:#2e5c8a,stroke-width:2px,color:#fff
|
||||
style Registry fill:#50c878,stroke:#2e7d4e,stroke-width:3px,color:#fff
|
||||
style AuthService fill:#ff6b6b,stroke:#c92a2a,stroke-width:2px,color:#fff
|
||||
style DBClient fill:#50c878,stroke:#2e7d4e,stroke-width:2px,color:#fff
|
||||
style ServiceClients fill:#50c878,stroke:#2e7d4e,stroke-width:2px,color:#fff
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user