Files
pos-system/docs/vi/skills/configuration-management.md
Ho Ngoc Hai 2640b351c3 Enhance documentation with detailed diagrams and structured flows
- 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.
2026-01-01 23:22:54 +07:00

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

  1. Always validate configuration / Luôn validate configuration
  2. Never commit secrets / Không bao giờ commit secrets
  3. Use feature flags for rollouts / Sử dụng feature flags cho rollouts

Tài Nguyên

  • Skill Source: .cursor/skills/configuration-management/SKILL.md