diff --git a/docs/vi/architecture/event-driven-architecture.md b/docs/vi/architecture/event-driven-architecture.md index c62a8eb3..05d3fdbd 100644 --- a/docs/vi/architecture/event-driven-architecture.md +++ b/docs/vi/architecture/event-driven-architecture.md @@ -27,8 +27,12 @@ graph TD Topics -->|Subscribe| Consumer1 Topics -->|Subscribe| Consumer2 + style IAM fill:#5E35B1,stroke:#4527A0,color:#ffffff + style Service1 fill:#5E35B1,stroke:#4527A0,color:#ffffff style Kafka fill:#1E88E5,stroke:#1565C0,color:#ffffff style Topics fill:#FB8C00,stroke:#EF6C00,color:#ffffff + style Consumer1 fill:#43A047,stroke:#2E7D32,color:#ffffff + style Consumer2 fill:#43A047,stroke:#2E7D32,color:#ffffff ``` ## Mô tả Kiến trúc @@ -214,7 +218,7 @@ C4Context - Automatic deletion sau retention period - Compliance với GDPR (right to erasure) -## Triển khai / Deployment +## Triển khai ```mermaid graph TD @@ -264,25 +268,29 @@ graph TD style Broker2 fill:#1E88E5,stroke:#1565C0,color:#ffffff style Broker3 fill:#1E88E5,stroke:#1565C0,color:#ffffff style ZK fill:#8E24AA,stroke:#7B1FA2,color:#ffffff + style IAM fill:#5E35B1,stroke:#4527A0,color:#ffffff + style ServiceA fill:#5E35B1,stroke:#4527A0,color:#ffffff + style Notification fill:#43A047,stroke:#2E7D32,color:#ffffff + style Audit fill:#43A047,stroke:#2E7D32,color:#ffffff ``` -### Chiến lược Triển khai / Deployment Strategy +### Chiến lược Triển khai -**Cấu hình Kafka Cluster / Kafka Cluster Configuration**: +**Cấu hình Kafka Cluster**: - **Brokers**: 3 brokers minimum (5 for production) - **Replication Factor**: 3 (for fault tolerance) - **Min In-Sync Replicas**: 2 (ensure data durability) - **Partitions**: 3-10 per topic (based on throughput needs) - **Zookeeper**: 3-node ensemble (for coordination) -**Phân bổ Tài nguyên / Resource Allocation**: +**Phân bổ Tài nguyên**: | Component | CPU | Memory | Disk | |-----------|-----|--------|------| | **Kafka Broker** | 2 cores | 4GB RAM | 100GB SSD | | **Zookeeper** | 1 core | 2GB RAM | 20GB SSD | | **Schema Registry** | 500m | 1GB RAM | 10GB | -**Cấu hình Topic / Topic Configuration**: +**Cấu hình Topic**: ```yaml user.created: partitions: 3 @@ -303,15 +311,15 @@ audit.events: compression-type: lz4 ``` -**Tính Sẵn sàng Cao / High Availability**: -- Multiple brokers với partition replication / Multiple brokers with partition replication -- Automatic leader election khi broker fails / Automatic leader election when broker fails +**Tính Sẵn sàng Cao**: +- Multiple brokers với partition replication +- Automatic leader election khi broker fails - Consumer group rebalancing -- Monitoring và alerting cho broker health / Monitoring and alerting for broker health +- Monitoring và alerting cho broker health -## Giám sát & Khả năng quan sát / Monitoring & Observability +## Giám sát & Khả năng quan sát -### Chỉ số Chính / Key Metrics +### Chỉ số Chính **Kafka Broker Metrics**: - `kafka_server_brokertopicmetrics_messagesinpersec` - Messages in/sec @@ -332,7 +340,7 @@ audit.events: **Application Metrics**: ```typescript -// Custom metrics cho event processing / Custom metrics for event processing +// Custom metrics cho event processing const eventPublished = new Counter({ name: 'events_published_total', help: 'Total events published', @@ -353,7 +361,7 @@ const eventProcessingDuration = new Histogram({ }); ``` -**Quy tắc Cảnh báo / Alerting Rules**: +**Quy tắc Cảnh báo**: ```yaml # High consumer lag - alert: HighConsumerLag @@ -395,9 +403,9 @@ const eventProcessingDuration = new Histogram({ - Consumer Performance (lag, throughput, errors) - Topic Metrics (messages/sec, bytes/sec, retention) -**Logging / Ghi nhật ký**: +**Logging**: ```typescript -// Structured logging cho events / Structured logging for events +// Structured logging cho events logger.info('Event published', { eventId: event.eventId, eventType: event.eventType, @@ -415,21 +423,21 @@ logger.info('Event consumed', { ``` -## Tài liệu Liên quan / Related Documentation +## Tài liệu Liên quan -- [System Design](./system-design.md) - Kiến trúc tổng thể / Overall architecture -- [IAM Architecture](./iam-proposal.md) - Triển khai Event sourcing / Event sourcing implementation +- [System Design](./system-design.md) - Kiến trúc tổng thể +- [IAM Architecture](./iam-proposal.md) - Triển khai Event sourcing --- -**Cập nhật Lần cuối / Last Updated**: 2026-01-07 -**Tác giả / Authors**: GoodGo Architecture Team +**Cập nhật Lần cuối**: 2026-01-07 +**Tác giả**: GoodGo Architecture Team -## Quick Tips / Mẹo Nhanh +## Mẹo Nhanh -### Mermaid Diagram Color Palette +### Bảng Màu Mermaid -| Node Type | Fill Color | Stroke Color | Text Color | Usage | +| Loại Node | Màu Nền | Màu Viền | Màu Chữ | Sử dụng | |-----------|------------|--------------|------------|-------| | **Core/Broker** | `#1E88E5` (Blue) | `#1565C0` | `#ffffff` | Kafka Brokers, Main Components | | **Topic/Data** | `#FB8C00` (Orange) | `#EF6C00` | `#ffffff` | Topics, Queues, Data Stores | @@ -437,10 +445,10 @@ logger.info('Event consumed', { | **Error/Danger** | `#E53935` (Red) | `#C62828` | `#ffffff` | Errors, DLQ, Critical issues | | **Coordination** | `#8E24AA` (Purple) | `#7B1FA2` | `#ffffff` | Zookeeper, Orchestrators | -### Visual Indicators / Các Chỉ báo Trực quan +### Các Chỉ báo Trực quan -- 🔄 **Retry Loop**: Indicates automatic retries (Chỉ báo thử lại tự động) -- ⚠️ **DLQ/Warning**: Indicates error handling path (Đường dẫn xử lý lỗi) -- 📝 **Log/Audit**: Indicates logging point (Điểm ghi log) -- 🔐 **Lock/Auth**: Indicates security check (Kiểm tra bảo mật) +- 🔄 **Retry Loop**: Chỉ báo thử lại tự động +- ⚠️ **DLQ/Warning**: Đường dẫn xử lý lỗi +- 📝 **Log/Audit**: Điểm ghi log +- 🔐 **Lock/Auth**: Kiểm tra bảo mật diff --git a/services/_template/ARCHITECTURE.en.md b/services/_template_nodejs/ARCHITECTURE.en.md similarity index 100% rename from services/_template/ARCHITECTURE.en.md rename to services/_template_nodejs/ARCHITECTURE.en.md diff --git a/services/_template/ARCHITECTURE.vi.md b/services/_template_nodejs/ARCHITECTURE.vi.md similarity index 100% rename from services/_template/ARCHITECTURE.vi.md rename to services/_template_nodejs/ARCHITECTURE.vi.md diff --git a/services/_template/Dockerfile b/services/_template_nodejs/Dockerfile similarity index 100% rename from services/_template/Dockerfile rename to services/_template_nodejs/Dockerfile diff --git a/services/_template/README.md b/services/_template_nodejs/README.md similarity index 100% rename from services/_template/README.md rename to services/_template_nodejs/README.md diff --git a/services/_template/eslint.config.js b/services/_template_nodejs/eslint.config.js similarity index 100% rename from services/_template/eslint.config.js rename to services/_template_nodejs/eslint.config.js diff --git a/services/_template/jest.config.ts b/services/_template_nodejs/jest.config.ts similarity index 100% rename from services/_template/jest.config.ts rename to services/_template_nodejs/jest.config.ts diff --git a/services/_template/package.json b/services/_template_nodejs/package.json similarity index 100% rename from services/_template/package.json rename to services/_template_nodejs/package.json diff --git a/services/_template/prisma/prisma.config.ts b/services/_template_nodejs/prisma/prisma.config.ts similarity index 100% rename from services/_template/prisma/prisma.config.ts rename to services/_template_nodejs/prisma/prisma.config.ts diff --git a/services/_template/prisma/schema.prisma b/services/_template_nodejs/prisma/schema.prisma similarity index 100% rename from services/_template/prisma/schema.prisma rename to services/_template_nodejs/prisma/schema.prisma diff --git a/services/_template/prisma/seed.ts b/services/_template_nodejs/prisma/seed.ts similarity index 100% rename from services/_template/prisma/seed.ts rename to services/_template_nodejs/prisma/seed.ts diff --git a/services/_template/src/__tests__/feature.e2e.ts b/services/_template_nodejs/src/__tests__/feature.e2e.ts similarity index 100% rename from services/_template/src/__tests__/feature.e2e.ts rename to services/_template_nodejs/src/__tests__/feature.e2e.ts diff --git a/services/_template/src/__tests__/health.e2e.ts b/services/_template_nodejs/src/__tests__/health.e2e.ts similarity index 100% rename from services/_template/src/__tests__/health.e2e.ts rename to services/_template_nodejs/src/__tests__/health.e2e.ts diff --git a/services/_template/src/__tests__/setupTests.ts b/services/_template_nodejs/src/__tests__/setupTests.ts similarity index 100% rename from services/_template/src/__tests__/setupTests.ts rename to services/_template_nodejs/src/__tests__/setupTests.ts diff --git a/services/_template/src/config/app.config.ts b/services/_template_nodejs/src/config/app.config.ts similarity index 100% rename from services/_template/src/config/app.config.ts rename to services/_template_nodejs/src/config/app.config.ts diff --git a/services/_template/src/config/database.config.ts b/services/_template_nodejs/src/config/database.config.ts similarity index 100% rename from services/_template/src/config/database.config.ts rename to services/_template_nodejs/src/config/database.config.ts diff --git a/services/_template/src/config/redis.config.ts b/services/_template_nodejs/src/config/redis.config.ts similarity index 100% rename from services/_template/src/config/redis.config.ts rename to services/_template_nodejs/src/config/redis.config.ts diff --git a/services/_template/src/docs/__tests__/swagger.test.ts b/services/_template_nodejs/src/docs/__tests__/swagger.test.ts similarity index 100% rename from services/_template/src/docs/__tests__/swagger.test.ts rename to services/_template_nodejs/src/docs/__tests__/swagger.test.ts diff --git a/services/_template/src/docs/swagger.ts b/services/_template_nodejs/src/docs/swagger.ts similarity index 100% rename from services/_template/src/docs/swagger.ts rename to services/_template_nodejs/src/docs/swagger.ts diff --git a/services/_template/src/errors/__tests__/error-codes.test.ts b/services/_template_nodejs/src/errors/__tests__/error-codes.test.ts similarity index 100% rename from services/_template/src/errors/__tests__/error-codes.test.ts rename to services/_template_nodejs/src/errors/__tests__/error-codes.test.ts diff --git a/services/_template/src/errors/__tests__/http-error.test.ts b/services/_template_nodejs/src/errors/__tests__/http-error.test.ts similarity index 100% rename from services/_template/src/errors/__tests__/http-error.test.ts rename to services/_template_nodejs/src/errors/__tests__/http-error.test.ts diff --git a/services/_template/src/errors/error-codes.ts b/services/_template_nodejs/src/errors/error-codes.ts similarity index 100% rename from services/_template/src/errors/error-codes.ts rename to services/_template_nodejs/src/errors/error-codes.ts diff --git a/services/_template/src/errors/http-error.ts b/services/_template_nodejs/src/errors/http-error.ts similarity index 100% rename from services/_template/src/errors/http-error.ts rename to services/_template_nodejs/src/errors/http-error.ts diff --git a/services/_template/src/errors/index.ts b/services/_template_nodejs/src/errors/index.ts similarity index 100% rename from services/_template/src/errors/index.ts rename to services/_template_nodejs/src/errors/index.ts diff --git a/services/_template/src/main.ts b/services/_template_nodejs/src/main.ts similarity index 100% rename from services/_template/src/main.ts rename to services/_template_nodejs/src/main.ts diff --git a/services/_template/src/middlewares/__tests__/auth.middleware.test.ts b/services/_template_nodejs/src/middlewares/__tests__/auth.middleware.test.ts similarity index 100% rename from services/_template/src/middlewares/__tests__/auth.middleware.test.ts rename to services/_template_nodejs/src/middlewares/__tests__/auth.middleware.test.ts diff --git a/services/_template/src/middlewares/__tests__/correlation.middleware.test.ts b/services/_template_nodejs/src/middlewares/__tests__/correlation.middleware.test.ts similarity index 100% rename from services/_template/src/middlewares/__tests__/correlation.middleware.test.ts rename to services/_template_nodejs/src/middlewares/__tests__/correlation.middleware.test.ts diff --git a/services/_template/src/middlewares/__tests__/validation.middleware.test.ts b/services/_template_nodejs/src/middlewares/__tests__/validation.middleware.test.ts similarity index 100% rename from services/_template/src/middlewares/__tests__/validation.middleware.test.ts rename to services/_template_nodejs/src/middlewares/__tests__/validation.middleware.test.ts diff --git a/services/_template/src/middlewares/auth.middleware.ts b/services/_template_nodejs/src/middlewares/auth.middleware.ts similarity index 100% rename from services/_template/src/middlewares/auth.middleware.ts rename to services/_template_nodejs/src/middlewares/auth.middleware.ts diff --git a/services/_template/src/middlewares/correlation.middleware.ts b/services/_template_nodejs/src/middlewares/correlation.middleware.ts similarity index 100% rename from services/_template/src/middlewares/correlation.middleware.ts rename to services/_template_nodejs/src/middlewares/correlation.middleware.ts diff --git a/services/_template/src/middlewares/error.middleware.ts b/services/_template_nodejs/src/middlewares/error.middleware.ts similarity index 100% rename from services/_template/src/middlewares/error.middleware.ts rename to services/_template_nodejs/src/middlewares/error.middleware.ts diff --git a/services/_template/src/middlewares/logger.middleware.ts b/services/_template_nodejs/src/middlewares/logger.middleware.ts similarity index 100% rename from services/_template/src/middlewares/logger.middleware.ts rename to services/_template_nodejs/src/middlewares/logger.middleware.ts diff --git a/services/_template/src/middlewares/metrics.middleware.ts b/services/_template_nodejs/src/middlewares/metrics.middleware.ts similarity index 100% rename from services/_template/src/middlewares/metrics.middleware.ts rename to services/_template_nodejs/src/middlewares/metrics.middleware.ts diff --git a/services/_template/src/middlewares/validation.middleware.ts b/services/_template_nodejs/src/middlewares/validation.middleware.ts similarity index 100% rename from services/_template/src/middlewares/validation.middleware.ts rename to services/_template_nodejs/src/middlewares/validation.middleware.ts diff --git a/services/_template/src/modules/common/cache.service.ts b/services/_template_nodejs/src/modules/common/cache.service.ts similarity index 100% rename from services/_template/src/modules/common/cache.service.ts rename to services/_template_nodejs/src/modules/common/cache.service.ts diff --git a/services/_template/src/modules/common/circuit-breaker.ts b/services/_template_nodejs/src/modules/common/circuit-breaker.ts similarity index 100% rename from services/_template/src/modules/common/circuit-breaker.ts rename to services/_template_nodejs/src/modules/common/circuit-breaker.ts diff --git a/services/_template/src/modules/common/repository.ts b/services/_template_nodejs/src/modules/common/repository.ts similarity index 100% rename from services/_template/src/modules/common/repository.ts rename to services/_template_nodejs/src/modules/common/repository.ts diff --git a/services/_template/src/modules/feature/__tests__/feature.repository.test.ts b/services/_template_nodejs/src/modules/feature/__tests__/feature.repository.test.ts similarity index 100% rename from services/_template/src/modules/feature/__tests__/feature.repository.test.ts rename to services/_template_nodejs/src/modules/feature/__tests__/feature.repository.test.ts diff --git a/services/_template/src/modules/feature/__tests__/feature.service.test.ts b/services/_template_nodejs/src/modules/feature/__tests__/feature.service.test.ts similarity index 100% rename from services/_template/src/modules/feature/__tests__/feature.service.test.ts rename to services/_template_nodejs/src/modules/feature/__tests__/feature.service.test.ts diff --git a/services/_template/src/modules/feature/feature.controller.ts b/services/_template_nodejs/src/modules/feature/feature.controller.ts similarity index 100% rename from services/_template/src/modules/feature/feature.controller.ts rename to services/_template_nodejs/src/modules/feature/feature.controller.ts diff --git a/services/_template/src/modules/feature/feature.dto.ts b/services/_template_nodejs/src/modules/feature/feature.dto.ts similarity index 100% rename from services/_template/src/modules/feature/feature.dto.ts rename to services/_template_nodejs/src/modules/feature/feature.dto.ts diff --git a/services/_template/src/modules/feature/feature.module.ts b/services/_template_nodejs/src/modules/feature/feature.module.ts similarity index 100% rename from services/_template/src/modules/feature/feature.module.ts rename to services/_template_nodejs/src/modules/feature/feature.module.ts diff --git a/services/_template/src/modules/feature/feature.repository.ts b/services/_template_nodejs/src/modules/feature/feature.repository.ts similarity index 100% rename from services/_template/src/modules/feature/feature.repository.ts rename to services/_template_nodejs/src/modules/feature/feature.repository.ts diff --git a/services/_template/src/modules/feature/feature.service.ts b/services/_template_nodejs/src/modules/feature/feature.service.ts similarity index 100% rename from services/_template/src/modules/feature/feature.service.ts rename to services/_template_nodejs/src/modules/feature/feature.service.ts diff --git a/services/_template/src/modules/feature/index.ts b/services/_template_nodejs/src/modules/feature/index.ts similarity index 100% rename from services/_template/src/modules/feature/index.ts rename to services/_template_nodejs/src/modules/feature/index.ts diff --git a/services/_template/src/modules/health/__tests__/health.controller.test.ts b/services/_template_nodejs/src/modules/health/__tests__/health.controller.test.ts similarity index 100% rename from services/_template/src/modules/health/__tests__/health.controller.test.ts rename to services/_template_nodejs/src/modules/health/__tests__/health.controller.test.ts diff --git a/services/_template/src/modules/health/health.controller.ts b/services/_template_nodejs/src/modules/health/health.controller.ts similarity index 100% rename from services/_template/src/modules/health/health.controller.ts rename to services/_template_nodejs/src/modules/health/health.controller.ts diff --git a/services/_template/src/modules/metrics/metrics.controller.ts b/services/_template_nodejs/src/modules/metrics/metrics.controller.ts similarity index 100% rename from services/_template/src/modules/metrics/metrics.controller.ts rename to services/_template_nodejs/src/modules/metrics/metrics.controller.ts diff --git a/services/_template/src/routes/index.ts b/services/_template_nodejs/src/routes/index.ts similarity index 100% rename from services/_template/src/routes/index.ts rename to services/_template_nodejs/src/routes/index.ts diff --git a/services/_template/tsconfig.json b/services/_template_nodejs/tsconfig.json similarity index 100% rename from services/_template/tsconfig.json rename to services/_template_nodejs/tsconfig.json