- Added request/response flow diagrams to api-design and api-gateway-advanced skills for better visualization of processes. - Introduced configuration loading flow in configuration-management skill to clarify the configuration process. - Included error propagation flow in error-handling-patterns skill to illustrate error handling across layers. - Enhanced various skills with additional diagrams to improve understanding of complex concepts. These updates aim to provide clearer guidance and improve the overall documentation experience for developers.
4.3 KiB
Quản Lý Cấu Hình (Configuration Management)
Configuration management patterns for GoodGo microservices including feature flags, dynamic configuration reloading, environment-specific configurations, and secrets management.
Các patterns quản lý cấu hình cho GoodGo microservices bao gồm feature flags, dynamic configuration reloading, environment-specific configurations, và secrets management.
Tổng Quan
Configuration management patterns enable flexible, secure, and environment-aware configuration handling with feature flags, dynamic reloading, and secrets management.
Các patterns quản lý cấu hình cho phép xử lý cấu hình linh hoạt, an toàn và nhận biết environment với feature flags, dynamic reloading, và quản lý secrets.
Khi Nào Sử Dụng
Use this skill when implementing feature flags, managing configurations, or handling secrets.
Sử dụng skill này khi implement feature flags, quản lý configurations, hoặc xử lý secrets.
Các Patterns Chính
Configuration Loading Flow / Luồng Tải Cấu Hình
Quá trình tải cấu hình lấy configuration từ nhiều nguồn, validate và hỗ trợ dynamic reloading:
flowchart TD
Start([Application Startup]) --> LoadConfig[Load Configuration]
LoadConfig --> FetchSource{Fetch from Source}
FetchSource --> |Environment Variables| EnvVars[Read Env Vars]
FetchSource --> |Config Files| ConfigFiles[Read JSON/YAML]
FetchSource --> |Database| Database[Query Config Table]
FetchSource --> |External Service| ExternalService[Call Config API]
EnvVars --> Validate[Validate with Zod Schema]
ConfigFiles --> Validate
Database --> Validate
ExternalService --> Validate
Validate --> |Valid| StoreConfig[Store in Memory Map]
Validate --> |Invalid| LogError[Log Validation Error]
LogError --> ThrowError[Throw Error]
ThrowError --> End([Application Fails to Start])
StoreConfig --> CheckChange{Value Changed?}
CheckChange --> |Yes| EmitEvent[Emit 'config-changed' Event]
CheckChange --> |No| SkipEvent[Skip Event]
EmitEvent --> Ready[Configuration Ready]
SkipEvent --> Ready
Ready --> End
Ready --> AutoReload{Auto-Reload Enabled?}
AutoReload --> |Yes| SetInterval[Set Interval Timer]
AutoReload --> |No| End
SetInterval --> Wait[Wait Interval]
Wait --> LoadConfig
Feature Flag Evaluation Flow / Luồng Đánh Giá Feature Flag
Feature flags hỗ trợ nhiều chiến lược đánh giá bao gồm global flags, user-specific flags, và percentage-based rollouts:
flowchart TD
Start([Check Feature Flag]) --> GetFlag[Get Flag by Key]
GetFlag --> FlagExists{Flag Exists?}
FlagExists --> |No| ReturnFalse[Return false]
ReturnFalse --> End([End])
FlagExists --> |Yes| CheckEnabled{Flag Enabled?}
CheckEnabled --> |No| ReturnFalse
CheckEnabled --> |Yes| HasUserId{User ID Provided?}
HasUserId --> |No| ReturnTrue[Return true]
ReturnTrue --> End
HasUserId --> |Yes| CheckUserSpecific{User-Specific Flag?}
CheckUserSpecific --> |Yes| MatchUser{User ID Matches?}
MatchUser --> |Yes| ReturnTrue
MatchUser --> |No| CheckPercentage
CheckUserSpecific --> |No| CheckPercentage{Percentage Rollout?}
CheckPercentage --> |No| ReturnTrue
CheckPercentage --> |Yes| HashUser[Hash User ID]
HashUser --> CalcHash[Calculate Hash % 100]
CalcHash --> CompareHash{Hash < Percentage?}
CompareHash --> |Yes| ReturnTrue
CompareHash --> |No| ReturnFalse
Feature Flags / Feature Flags
// EN: Check if feature is enabled
// VI: Kiểm tra xem feature có được bật không
const enabled = await featureFlagService.isEnabled('new-feature', userId);
Dynamic Configuration / Configuration Động
// EN: Auto-reload configuration
// VI: Tự động tải lại configuration
await configService.load();
configService.startAutoReload(60000);
Best Practices / Thực Hành Tốt
- Always validate configuration / Luôn validate configuration
- Never commit secrets / Không bao giờ commit secrets
- Use feature flags for rollouts / Sử dụng feature flags cho rollouts
Tài Nguyên
- Skill Source:
.cursor/skills/configuration-management/SKILL.md