27 KiB
System Design / Thiết kế Hệ thống
EN: Comprehensive system architecture for the GoodGo Microservices Platform VI: Kiến trúc hệ thống toàn diện cho GoodGo Microservices Platform
System Overview / Tổng quan Hệ thống
graph TD
subgraph "Client Layer / Tầng Client"
WebApp[Web Application<br/>Next.js 14+]
MobileApp[Mobile Application<br/>Flutter/React Native]
end
subgraph "API Gateway Layer / Tầng API Gateway"
Traefik[Traefik Gateway<br/>Load Balancer + Routing]
end
subgraph "Services Layer / Tầng Services"
IAM[IAM Service<br/>Authentication & Authorization]
Template[Template Service<br/>Example Microservice]
Future1[Future Service 1<br/>TBD]
Future2[Future Service 2<br/>TBD]
end
subgraph "Data Layer / Tầng Dữ liệu"
PostgreSQL[(PostgreSQL 14+<br/>Primary Database)]
Redis[(Redis 6+<br/>Cache & Sessions)]
end
subgraph "Observability / Khả năng quan sát"
Prometheus[Prometheus<br/>Metrics Collection]
Grafana[Grafana<br/>Metrics Visualization]
Loki[Loki<br/>Log Aggregation]
Jaeger[Jaeger<br/>Distributed Tracing]
end
WebApp --> Traefik
MobileApp --> Traefik
Traefik --> IAM
Traefik --> Template
Traefik --> Future1
Traefik --> Future2
IAM --> PostgreSQL
Template --> PostgreSQL
Future1 --> PostgreSQL
Future2 --> PostgreSQL
IAM --> Redis
Template --> Redis
Future1 --> Redis
Future2 --> Redis
IAM -.->|Metrics| Prometheus
Template -.->|Metrics| Prometheus
Prometheus --> Grafana
IAM -.->|Logs| Loki
Template -.->|Logs| Loki
IAM -.->|Traces| Jaeger
Template -.->|Traces| Jaeger
style Traefik fill:#e1f5ff
style PostgreSQL fill:#f0e1ff
style Redis fill:#fff4e1
style Prometheus fill:#d4edda
EN: Architecture Principles
The GoodGo Microservices Platform follows these core principles:
-
Service Independence: Each microservice:
- Has its own database schema (database per service pattern)
- Can be deployed independently without affecting others
- Owns its data and exposes APIs for data access
- Uses standardized communication patterns
-
API Gateway Pattern: Traefik provides:
- Single entry point for all client requests
- Path-based routing to appropriate services
- Load balancing across service instances
- SSL/TLS termination
- Rate limiting and security headers
-
Shared Infrastructure: Common concerns handled by:
- Shared packages (@goodgo/logger, @goodgo/types, @goodgo/http-client)
- Centralized observability stack
- Distributed caching layer (Redis)
- Common monitoring and alerting
-
Infrastructure as Code: All configurations versioned:
- Docker Compose for local development
- Kubernetes manifests for production
- Traefik dynamic configuration
- Database migrations with Prisma
-
Observability First: Built-in monitoring:
- Prometheus metrics from all services
- Structured logging with correlation IDs
- Distributed tracing with OpenTelemetry
- Health check endpoints (liveness/readiness)
VI: Nguyên tắc Kiến trúc
GoodGo Microservices Platform tuân theo các nguyên tắc cốt lõi sau:
-
Độc lập Service: Mỗi microservice:
- Có schema database riêng (pattern database per service)
- Có thể deploy độc lập mà không ảnh hưởng đến các service khác
- Sở hữu dữ liệu của mình và expose APIs để truy cập dữ liệu
- Sử dụng patterns giao tiếp chuẩn hóa
-
Pattern API Gateway: Traefik cung cấp:
- Điểm vào duy nhất cho tất cả client requests
- Routing dựa trên path tới các service phù hợp
- Load balancing giữa các service instances
- SSL/TLS termination
- Rate limiting và security headers
-
Infrastructure Chia sẻ: Các concerns chung được xử lý bởi:
- Shared packages (@goodgo/logger, @goodgo/types, @goodgo/http-client)
- Stack observability tập trung
- Tầng caching phân tán (Redis)
- Monitoring và alerting chung
-
Infrastructure as Code: Tất cả cấu hình được version:
- Docker Compose cho local development
- Kubernetes manifests cho production
- Traefik dynamic configuration
- Database migrations với Prisma
-
Observability First: Monitoring tích hợp sẵn:
- Prometheus metrics từ tất cả services
- Structured logging với correlation IDs
- Distributed tracing với OpenTelemetry
- Health check endpoints (liveness/readiness)
Detailed Component Architecture / Kiến trúc Component Chi tiết
1. Client Layer / Tầng Client
graph LR
User((User)) --> WebBrowser[Web Browser]
User --> MobileDevice[Mobile Device]
WebBrowser --> NextJS[Next.js App<br/>Port 3000]
MobileDevice --> Flutter[Flutter App<br/>iOS/Android]
NextJS --> APIClient[@goodgo/http-client]
Flutter --> HTTPPackage[HTTP Package]
APIClient --> Gateway[API Gateway<br/>localhost or api.goodgo.com]
HTTPPackage --> Gateway
style User fill:#e1f5ff
style Gateway fill:#d4edda
EN Components:
-
Web Application: Next.js 14+ with App Router
- Server-side rendering (SSR)
- Static site generation (SSG)
- API routes for BFF pattern
- Uses
@goodgo/http-clientfor API calls
-
Mobile Application: Flutter or React Native
- Cross-platform (iOS + Android)
- Offline-first architecture (future)
- Native HTTP client
VI Thành phần:
-
Web Application: Next.js 14+ với App Router
- Server-side rendering (SSR)
- Static site generation (SSG)
- API routes cho BFF pattern
- Sử dụng
@goodgo/http-clientcho API calls
-
Mobile Application: Flutter hoặc React Native
- Cross-platform (iOS + Android)
- Kiến trúc offline-first (tương lai)
- Native HTTP client
2. API Gateway Layer / Tầng API Gateway
graph TD
Client[Client Request] --> Traefik
subgraph "Traefik API Gateway"
Traefik[Traefik Router] --> Middlewares
subgraph Middlewares
M1[CORS]
M2[Rate Limiting]
M3[Headers]
M4[Compression]
end
Middlewares --> Router[Dynamic Router]
Router --> LB[Load Balancer]
end
LB --> Service1[Service Instance 1]
LB --> Service2[Service Instance 2]
LB --> Service3[Service Instance 3]
style Traefik fill:#e1f5ff
style Router fill:#fff4e1
style LB fill:#d4edda
EN: Traefik Configuration
Static Configuration (infra/traefik/traefik.yml):
- Entry points (HTTP: 80, HTTPS: 443)
- Docker provider for service discovery
- Certificate resolvers (Let's Encrypt)
- Dashboard configuration (port 8080)
Dynamic Configuration (infra/traefik/dynamic/):
- Middlewares (CORS, rate limiting, security headers)
- Routes (defined via Docker labels or YAML files)
- Services (load balancing strategies)
Routing Pattern:
http:
routers:
iam-service:
rule: "PathPrefix(`/api/v1/auth`)"
service: iam-service
middlewares:
- cors
- rate-limit
- secure-headers
Service Discovery: Automatic via Docker labels:
labels:
- "traefik.enable=true"
- "traefik.http.routers.iam.rule=PathPrefix(`/api/v1/auth`)"
- "traefik.http.services.iam.loadbalancer.server.port=3001"
- "traefik.http.services.iam.loadbalancer.healthcheck.path=/health/live"
VI: Cấu hình Traefik
Cấu hình Tĩnh (infra/traefik/traefik.yml):
- Entry points (HTTP: 80, HTTPS: 443)
- Docker provider cho service discovery
- Certificate resolvers (Let's Encrypt)
- Cấu hình dashboard (port 8080)
Cấu hình Động (infra/traefik/dynamic/):
- Middlewares (CORS, rate limiting, security headers)
- Routes (định nghĩa qua Docker labels hoặc YAML files)
- Services (chiến lược load balancing)
Pattern Routing:
http:
routers:
iam-service:
rule: "PathPrefix(`/api/v1/auth`)"
service: iam-service
middlewares:
- cors
- rate-limit
- secure-headers
Service Discovery: Tự động qua Docker labels:
labels:
- "traefik.enable=true"
- "traefik.http.routers.iam.rule=PathPrefix(`/api/v1/auth`)"
- "traefik.http.services.iam.loadbalancer.server.port=3001"
- "traefik.http.services.iam.loadbalancer.healthcheck.path=/health/live"
3. Services Layer / Tầng Services
Microservice Template Structure / Cấu trúc Template Microservice
graph TD
subgraph "Microservice (Template Pattern)"
HTTP[HTTP Request] --> MW[Middleware Stack]
MW --> Routes[Routes]
subgraph "Feature Module"
Routes --> Controller
Controller --> Service
Service --> Repository
Repository --> Prisma[Prisma ORM]
end
Service --> Cache[Cache Service]
Cache --> Redis[(Redis)]
Prisma --> DB[(PostgreSQL)]
MW --> Metrics[Metrics Middleware]
Metrics --> Prom[Prometheus]
end
style MW fill:#e1f5ff
style Service fill:#f0e1ff
style Cache fill:#fff4e1
EN: Standard Microservice Structure
Each microservice follows this pattern (from services/_template/):
src/
├── config/ # Configuration with Zod validation
│ ├── app.config.ts
│ ├── database.config.ts
│ └── redis.config.ts
├── core/ # Core utilities (IAM service only)
│ ├── cache/ # Multi-layer caching
│ ├── events/ # Event sourcing
│ └── security/ # Zero-trust validator
├── middlewares/ # Express middlewares
│ ├── correlation.middleware.ts
│ ├── logger.middleware.ts
│ ├── metrics.middleware.ts
│ └── error.middleware.ts
├── modules/ # Feature modules
│ ├── common/ # Shared (BaseRepository)
│ ├── feature/ # Example feature
│ ├── health/ # Health checks
│ └── metrics/ # Prometheus metrics
├── routes/ # Route definitions
│ └── index.ts
└── main.ts # Application entry point
Middleware Execution Order:
- Correlation ID → 2. Logger → 3. Metrics → 4. CORS → 5. Rate Limit → 6. Body Parser → 7. Routes → 8. Error Handler
VI: Cấu trúc Microservice Chuẩn
Mỗi microservice tuân theo pattern này (từ services/_template/):
src/
├── config/ # Configuration với Zod validation
│ ├── app.config.ts
│ ├── database.config.ts
│ └── redis.config.ts
├── core/ # Core utilities (chỉ IAM service)
│ ├── cache/ # Multi-layer caching
│ ├── events/ # Event sourcing
│ └── security/ # Zero-trust validator
├── middlewares/ # Express middlewares
│ ├── correlation.middleware.ts
│ ├── logger.middleware.ts
│ ├── metrics.middleware.ts
│ └── error.middleware.ts
├── modules/ # Feature modules
│ ├── common/ # Shared (BaseRepository)
│ ├── feature/ # Example feature
│ ├── health/ # Health checks
│ └── metrics/ # Prometheus metrics
├── routes/ # Route definitions
│ └── index.ts
└── main.ts # Application entry point
Thứ tự Thực thi Middleware:
- Correlation ID → 2. Logger → 3. Metrics → 4. CORS → 5. Rate Limit → 6. Body Parser → 7. Routes → 8. Error Handler
4. Data Layer / Tầng Dữ liệu
Database Architecture / Kiến trúc Database
graph TD
subgraph "Database Per Service Pattern"
Service1[IAM Service] --> Schema1[(iam_db<br/>30+ tables)]
Service2[Template Service] --> Schema2[(template_db<br/>Example tables)]
Service3[Future Service] --> Schema3[(future_db<br/>TBD)]
end
subgraph "Shared Infrastructure"
Schema1 -.->|Connection Pool| PG[PostgreSQL 14+<br/>Neon Cloud]
Schema2 -.->|Connection Pool| PG
Schema3 -.->|Connection Pool| PG
end
subgraph "Cache Layer"
Service1 --> L1_1[L1: Memory<br/>60s TTL]
Service2 --> L1_2[L1: Memory<br/>60s TTL]
L1_1 --> L2[L2: Redis<br/>5-15min TTL]
L1_2 --> L2
L2 -.->|Cache Miss| Schema1
L2 -.->|Cache Miss| Schema2
end
style PG fill:#f0e1ff
style L2 fill:#fff4e1
style L1_1 fill:#d4edda
style L1_2 fill:#d4edda
EN: Data Management
Database per Service:
- Each service has its own database schema
- Services own their data exclusively
- Cross-service data access via APIs only
- Independent scaling and optimization
Multi-Layer Caching (IAM Service):
Request → L1 (Memory, 60s) → L2 (Redis, 5-15min) → L3 (Database)
Cache Hit Rates:
- L1: ~40-50% (hot data)
- L2: ~80-90% (permissions, user data)
- L3: 10-20% (cache miss, fetch from DB)
Database Technology:
- Provider: Neon (Serverless PostgreSQL)
- Version: PostgreSQL 14+
- ORM: Prisma
- Connection Pooling: Prisma (10 connections default)
- Migrations: Prisma Migrate
VI: Quản lý Dữ liệu
Database per Service:
- Mỗi service có schema database riêng
- Services sở hữu dữ liệu độc quyền
- Truy cập dữ liệu cross-service chỉ qua APIs
- Scaling và optimization độc lập
Multi-Layer Caching (IAM Service):
Request → L1 (Memory, 60s) → L2 (Redis, 5-15min) → L3 (Database)
Tỷ lệ Cache Hit:
- L1: ~40-50% (hot data)
- L2: ~80-90% (permissions, user data)
- L3: 10-20% (cache miss, fetch từ DB)
Công nghệ Database:
- Provider: Neon (Serverless PostgreSQL)
- Version: PostgreSQL 14+
- ORM: Prisma
- Connection Pooling: Prisma (10 connections mặc định)
- Migrations: Prisma Migrate
Communication Patterns / Patterns Giao tiếp
Request Flow / Luồng Request
sequenceDiagram
participant Client
participant Traefik as Traefik Gateway
participant Service
participant Cache as Redis Cache
participant DB as PostgreSQL
Client->>Traefik: HTTP Request
Traefik->>Traefik: Apply Middlewares<br/>(CORS, Rate Limit)
Traefik->>Service: Forward Request
Service->>Cache: Check Cache
alt Cache Hit
Cache-->>Service: Cached Data
Service-->>Traefik: Response (from cache)
else Cache Miss
Cache-->>Service: null
Service->>DB: Query Database
DB-->>Service: Data
Service->>Cache: Store in Cache
Service-->>Traefik: Response (from DB)
end
Traefik-->>Client: HTTP Response
EN: Communication Patterns
-
Synchronous (HTTP/REST):
- Request-response pattern
- RESTful API design
- JSON payload format
- Standard HTTP status codes
-
Service-to-Service:
- Internal HTTP calls via
@goodgo/http-client - Service authentication with internal API keys
- Circuit breaker pattern for resilience
- Correlation ID propagation
- Internal HTTP calls via
-
Service Discovery:
- Local: Docker DNS (
http://service-name:port) - Kubernetes: Service DNS (
http://service-name.namespace.svc.cluster.local) - Traefik: Dynamic configuration via labels
- Local: Docker DNS (
-
Asynchronous (Future):
- Message queues (RabbitMQ/Kafka)
- Event-driven architecture
- Pub/Sub patterns
VI: Patterns Giao tiếp
-
Đồng bộ (HTTP/REST):
- Pattern request-response
- Thiết kế RESTful API
- Format payload JSON
- HTTP status codes chuẩn
-
Service-to-Service:
- Internal HTTP calls qua
@goodgo/http-client - Service authentication với internal API keys
- Circuit breaker pattern cho resilience
- Correlation ID propagation
- Internal HTTP calls qua
-
Service Discovery:
- Local: Docker DNS (
http://service-name:port) - Kubernetes: Service DNS (
http://service-name.namespace.svc.cluster.local) - Traefik: Dynamic configuration qua labels
- Local: Docker DNS (
-
Bất đồng bộ (Tương lai):
- Message queues (RabbitMQ/Kafka)
- Event-driven architecture
- Pub/Sub patterns
Security Architecture / Kiến trúc Bảo mật
graph TD
Request[Client Request] --> TLS[TLS/HTTPS]
TLS --> RateLimit[Rate Limiting]
RateLimit --> JWT[JWT Validation]
JWT --> RBAC[RBAC Authorization]
RBAC --> ZeroTrust[Zero-Trust Validation]
ZeroTrust --> Service[Service Logic]
Service --> Encrypt[Data Encryption<br/>AES-256-GCM]
Encrypt --> DB[(Encrypted Data<br/>at Rest)]
Service --> Audit[Audit Logging<br/>Event Sourcing]
Audit --> AuditDB[(Audit Trail<br/>7-year retention)]
style TLS fill:#d4edda
style JWT fill:#e1f5ff
style Encrypt fill:#f8d7da
style Audit fill:#fff4e1
EN: Security Layers
-
Network Security:
- TLS 1.2+ for all communications
- HTTPS enforcement
- CORS configuration
- Rate limiting (Redis-backed, distributed)
-
Authentication:
- JWT tokens (15min access, 7 days refresh)
- bcrypt password hashing (cost 12)
- Refresh token rotation
- Multi-factor authentication (TOTP)
-
Authorization:
- Role-Based Access Control (RBAC)
- Attribute-Based Access Control (ABAC)
- Permission model:
resource:action:scope - Permission caching (5min TTL)
-
Data Protection:
- AES-256-GCM encryption for PII
- Token hashing (SHA-256)
- Secrets management (environment variables, K8s secrets)
-
Zero-Trust:
- Device fingerprinting
- IP address validation
- Behavioral analysis
- Session binding
-
Audit & Compliance:
- Event sourcing for all auth events
- 7-year retention (GDPR, SOC2)
- Correlation ID tracking
- Compliance reporting (GDPR, SOC2, ISO27001, HIPAA)
VI: Các Tầng Bảo mật
-
Network Security:
- TLS 1.2+ cho mọi giao tiếp
- HTTPS enforcement
- Cấu hình CORS
- Rate limiting (Redis-backed, phân tán)
-
Authentication:
- JWT tokens (15min access, 7 ngày refresh)
- bcrypt password hashing (cost 12)
- Refresh token rotation
- Multi-factor authentication (TOTP)
-
Authorization:
- Role-Based Access Control (RBAC)
- Attribute-Based Access Control (ABAC)
- Permission model:
resource:action:scope - Permission caching (5min TTL)
-
Data Protection:
- AES-256-GCM encryption cho PII
- Token hashing (SHA-256)
- Secrets management (environment variables, K8s secrets)
-
Zero-Trust:
- Device fingerprinting
- IP address validation
- Behavioral analysis
- Session binding
-
Audit & Compliance:
- Event sourcing cho tất cả auth events
- 7-year retention (GDPR, SOC2)
- Correlation ID tracking
- Compliance reporting (GDPR, SOC2, ISO27001, HIPAA)
Observability Stack / Stack Khả năng quan sát
graph LR
subgraph "Services"
S1[IAM Service]
S2[Template Service]
end
subgraph "Metrics"
S1 -->|/metrics| Prom[Prometheus]
S2 -->|/metrics| Prom
Prom --> Grafana[Grafana Dashboard]
end
subgraph "Logging"
S1 -->|JSON Logs| Loki[Loki]
S2 -->|JSON Logs| Loki
Loki --> GrafanaLog[Grafana Explore]
end
subgraph "Tracing"
S1 -->|Spans| Jaeger[Jaeger]
S2 -->|Spans| Jaeger
Jaeger --> JaegerUI[Jaeger UI]
end
style Prom fill:#d4edda
style Loki fill:#fff4e1
style Jaeger fill:#e1f5ff
EN: Three Pillars of Observability
-
Metrics (Prometheus):
- HTTP request duration (histogram)
- HTTP request count (counter)
- Active requests (gauge)
- Cache hit/miss ratio
- Database query duration
- Custom business metrics
-
Logging (Winston + Loki):
- Structured JSON logs
- Correlation IDs in every log
- Request/response logging
- Error stack traces (dev only)
- Log levels: error, warn, info, debug
-
Tracing (OpenTelemetry + Jaeger):
- Distributed tracing across services
- HTTP request spans
- Database query spans
- Cache operation spans
- End-to-end latency tracking
Health Checks:
/health- Overall health status/health/live- Liveness probe (K8s)/health/ready- Readiness probe (K8s, checks DB + Redis)
VI: Ba Trụ cột của Khả năng quan sát
-
Metrics (Prometheus):
- HTTP request duration (histogram)
- HTTP request count (counter)
- Active requests (gauge)
- Cache hit/miss ratio
- Database query duration
- Custom business metrics
-
Logging (Winston + Loki):
- Structured JSON logs
- Correlation IDs trong mọi log
- Request/response logging
- Error stack traces (chỉ dev)
- Log levels: error, warn, info, debug
-
Tracing (OpenTelemetry + Jaeger):
- Distributed tracing giữa các services
- HTTP request spans
- Database query spans
- Cache operation spans
- End-to-end latency tracking
Health Checks:
/health- Overall health status/health/live- Liveness probe (K8s)/health/ready- Readiness probe (K8s, kiểm tra DB + Redis)
Deployment Architecture / Kiến trúc Triển khai
Local Development / Phát triển Local
graph TD
subgraph "Docker Compose (deployments/local)"
Traefik[Traefik<br/>Port 80, 8080]
IAM[IAM Service<br/>Port 3001]
Template[Template Service<br/>Port 5000]
PostgreSQL[PostgreSQL<br/>Port 5432]
Redis[Redis<br/>Port 6379]
Traefik --> IAM
Traefik --> Template
IAM --> PostgreSQL
IAM --> Redis
Template --> PostgreSQL
Template --> Redis
end
Dev[Developer] -->|localhost| Traefik
Dev -->|:8080| TraefikDash[Traefik Dashboard]
style Traefik fill:#e1f5ff
style PostgreSQL fill:#f0e1ff
style Redis fill:#fff4e1
Production Deployment / Triển khai Production
graph TD
subgraph "Kubernetes Cluster"
Ingress[Ingress Controller<br/>Traefik]
subgraph "IAM Service"
IAM1[IAM Pod 1]
IAM2[IAM Pod 2]
IAM3[IAM Pod 3]
end
subgraph "Template Service"
T1[Template Pod 1]
T2[Template Pod 2]
end
Ingress --> IAM1
Ingress --> IAM2
Ingress --> IAM3
Ingress --> T1
Ingress --> T2
end
subgraph "Managed Services"
Neon[(Neon PostgreSQL<br/>Serverless)]
RedisCloud[(Redis Cloud)]
end
IAM1 --> Neon
IAM2 --> Neon
IAM3 --> Neon
T1 --> Neon
T2 --> Neon
IAM1 --> RedisCloud
IAM2 --> RedisCloud
T1 --> RedisCloud
T2 --> RedisCloud
style Ingress fill:#e1f5ff
style Neon fill:#f0e1ff
style RedisCloud fill:#fff4e1
EN: Deployment Environments
-
Local (Docker Compose):
- All services run in Docker containers
- Shared network for service communication
- Local PostgreSQL and Redis
- Traefik for routing
- Hot reload for development
-
Staging (Kubernetes):
- Kubernetes cluster in cloud (GKE/EKS/AKS)
- 2 replicas per service
- Managed PostgreSQL (Neon)
- Managed Redis (Redis Cloud)
- Horizontal Pod Autoscaling (HPA)
-
Production (Kubernetes):
- Production K8s cluster
- 3+ replicas per service
- Managed databases with backups
- Auto-scaling (HPA + VPA)
- Blue-green deployments
- Rolling updates with health checks
VI: Môi trường Triển khai
-
Local (Docker Compose):
- Tất cả services chạy trong Docker containers
- Shared network cho service communication
- Local PostgreSQL và Redis
- Traefik cho routing
- Hot reload cho development
-
Staging (Kubernetes):
- Kubernetes cluster trên cloud (GKE/EKS/AKS)
- 2 replicas mỗi service
- Managed PostgreSQL (Neon)
- Managed Redis (Redis Cloud)
- Horizontal Pod Autoscaling (HPA)
-
Production (Kubernetes):
- Production K8s cluster
- 3+ replicas mỗi service
- Managed databases với backups
- Auto-scaling (HPA + VPA)
- Blue-green deployments
- Rolling updates với health checks
Performance Characteristics / Đặc điểm Hiệu suất
EN: Performance Targets
| Metric | Target | Notes |
|---|---|---|
| API Response Time (P95) | < 100ms | Excluding cold starts |
| API Response Time (P99) | < 200ms | |
| Throughput | 1000 req/s | Per service instance |
| Cache Hit Rate | > 80% | Redis cache |
| Database Query Time (P95) | < 50ms | Simple queries |
| Memory Usage | < 512MB | Per service instance |
| CPU Usage | < 60% | Under normal load |
Optimization Strategies:
- Multi-layer caching (L1: Memory, L2: Redis)
- Database connection pooling
- Query optimization with indexes
- Horizontal scaling with HPA
- CDN for static assets
VI: Mục tiêu Hiệu suất
| Metric | Mục tiêu | Ghi chú |
|---|---|---|
| API Response Time (P95) | < 100ms | Không bao gồm cold starts |
| API Response Time (P99) | < 200ms | |
| Throughput | 1000 req/s | Mỗi service instance |
| Cache Hit Rate | > 80% | Redis cache |
| Database Query Time (P95) | < 50ms | Queries đơn giản |
| Memory Usage | < 512MB | Mỗi service instance |
| CPU Usage | < 60% | Ở normal load |
Chiến lược Tối ưu:
- Multi-layer caching (L1: Memory, L2: Redis)
- Database connection pooling
- Query optimization với indexes
- Horizontal scaling với HPA
- CDN cho static assets
Related Documentation / Tài liệu Liên quan
- Service Communication - EN: Detailed inter-service communication patterns / VI: Patterns giao tiếp giữa services chi tiết
- IAM Proposal - EN: IAM service architecture and features / VI: Kiến trúc và tính năng IAM service
- Deployment Guide - EN: Step-by-step deployment instructions / VI: Hướng dẫn triển khai từng bước
- Local Development - EN: Setting up local environment / VI: Thiết lập môi trường local
- Project Rules - EN: Project structure and conventions / VI: Cấu trúc dự án và quy ước
Last Updated / Cập nhật lần cuối: 2026-01-06
Authors / Tác giả: DevOps Team
Reviewers / Người review: Architecture Team