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:
@@ -1,6 +1,6 @@
|
||||
# Module Architecture
|
||||
|
||||
This document details the architecture of modules, how they are structured, how they interact with the core platform, and how multiple modules work together.
|
||||
This document details the architecture of modules (feature services), how they are structured as independent services, how they interact with core services, and how multiple services work together in the microservices architecture.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
@@ -52,28 +52,33 @@ graph TD
|
||||
style Service fill:#7b68ee,stroke:#5a4fcf,stroke-width:2px,color:#fff
|
||||
```
|
||||
|
||||
### Module Directory Structure
|
||||
### Service Directory Structure
|
||||
|
||||
Each module is an independent service with its own entry point:
|
||||
|
||||
```
|
||||
modules/blog/
|
||||
├── go.mod # Module dependencies
|
||||
├── module.yaml # Module manifest
|
||||
├── pkg/
|
||||
│ └── module.go # IModule implementation
|
||||
cmd/blog-service/
|
||||
└── main.go # Service entry point
|
||||
|
||||
services/blog/
|
||||
├── go.mod # Service dependencies
|
||||
├── module.yaml # Service manifest
|
||||
├── api/
|
||||
│ └── blog.proto # gRPC service definition
|
||||
├── internal/
|
||||
│ ├── api/
|
||||
│ │ └── handler.go # HTTP handlers
|
||||
│ │ └── handler.go # gRPC handlers
|
||||
│ ├── domain/
|
||||
│ │ ├── post.go # Domain entities
|
||||
│ │ └── post_repo.go # Repository interface
|
||||
│ ├── service/
|
||||
│ │ └── post_service.go # Business logic
|
||||
│ └── ent/
|
||||
│ ├── schema/
|
||||
│ │ └── post.go # Ent schema
|
||||
│ └── migrate/ # Migrations
|
||||
└── tests/
|
||||
└── integration_test.go
|
||||
│ └── database/
|
||||
│ └── client.go # Database connection
|
||||
└── ent/
|
||||
├── schema/
|
||||
│ └── post.go # Ent schema
|
||||
└── migrate/ # Migrations
|
||||
```
|
||||
|
||||
## Module Interface
|
||||
@@ -262,9 +267,9 @@ graph LR
|
||||
style Step1 fill:#50c878,stroke:#2e7d4e,stroke-width:2px,color:#fff
|
||||
```
|
||||
|
||||
## Module Communication
|
||||
## Service Communication
|
||||
|
||||
Modules (services) communicate through service client interfaces. All inter-service communication uses gRPC (primary) or HTTP (fallback).
|
||||
Modules are implemented as independent services that communicate through service client interfaces. All inter-service communication uses gRPC (primary) or HTTP (fallback) via service clients. Services discover each other through the service registry (Consul).
|
||||
|
||||
### Communication Patterns
|
||||
|
||||
@@ -301,14 +306,27 @@ graph TB
|
||||
BlogService -->|gRPC| AuthClient
|
||||
BlogService -->|gRPC| IdentityClient
|
||||
BlogService -->|gRPC| AuthzClient
|
||||
BlogService -->|gRPC| AuditClient
|
||||
BlogService -->|Publish| EventBus
|
||||
EventBus -->|Subscribe| AnalyticsService
|
||||
|
||||
AuthClient -->|Discover| Registry
|
||||
IdentityClient -->|Discover| Registry
|
||||
AuthzClient -->|Discover| Registry
|
||||
AuditClient -->|Discover| Registry
|
||||
|
||||
Registry --> AuthService
|
||||
Registry --> IdentityService
|
||||
Registry --> AuthzService
|
||||
Registry --> AuditService
|
||||
|
||||
AuthClient --> AuthService
|
||||
IdentityClient --> IdentityService
|
||||
AuthzClient --> IdentityService
|
||||
AuthzClient --> AuthzService
|
||||
AuditClient --> AuditService
|
||||
|
||||
style EventBus fill:#4a90e2,stroke:#2e5c8a,stroke-width:3px,color:#fff
|
||||
style Registry fill:#50c878,stroke:#2e7d4e,stroke-width:3px,color:#fff
|
||||
style BlogService fill:#7b68ee,stroke:#5a4fcf,stroke-width:2px,color:#fff
|
||||
style AnalyticsService fill:#7b68ee,stroke:#5a4fcf,stroke-width:2px,color:#fff
|
||||
style ServiceClients fill:#50c878,stroke:#2e7d4e,stroke-width:2px,color:#fff
|
||||
|
||||
Reference in New Issue
Block a user