# Thông số kỹ thuật ## Tech Stack - **Golang 1.23.6**: Ngôn ngữ chính dùng phát triển backend - **Docker + Docker Compose**: Containerization và orchestration - **Air Tomb v1.49.0**: Hot reload cho phát triển - **Gitea v1.21.0+**: Server, Runner, Action, Secret Manager, Registry Image - **PostgreSQL 15+**: Cơ sở dữ liệu quan hệ - **Ansible 2.14+**: Tự động hóa quy trình triển khai - **Go Feature Flag v1.9.0+**: Quản lý tính năng ## Yêu cầu hệ thống - Go 1.23.6+ - Docker Engine 24.0.0+ - Docker Compose v2.20.0+ - Git 2.40.0+ - PostgreSQL 15.0+ - Make (cho các tác vụ phát triển) ## Thư viện và frameworks chính ### Web Framework - **Gin v1.10.0**: HTTP framework nhẹ, hiệu suất cao - Middleware hỗ trợ: CORS, JWT, Rate limiting - Tích hợp sẵn validator ### Database - **GORM v1.26.1**: ORM cho Go - Hỗ trợ nhiều database: PostgreSQL, MySQL, SQLite - Migration tools tích hợp - Connection pooling và retry mechanisms ### Authentication & Security - **JWT (JSON Web Tokens)** - **UUID v1.6.0**: Định danh duy nhất - **bcrypt**: Mã hóa mật khẩu ### Configuration - **Viper v1.17.0**: Quản lý cấu hình linh hoạt - Hỗ trợ nhiều định dạng (JSON, YAML, TOML, ENV) - Tích hợp với biến môi trường ### Logging - **Logrus v1.9.3**: Thư viện logging cấu trúc ```yaml logger: level: "info" # debug, info, warn, error, fatal, panic format: "json" # json hoặc text enable_caller: true # Hiển thị thông tin người gọi ``` - Hỗ trợ nhiều mức độ log - Tích hợp với các hệ thống log tập trung - JSON format cho dễ phân tích ### Testing - **Testify v1.10.0**: Framework testing cho Go - Assertions mạnh mẽ - Mock generation - Test suites - **go-sqlmock v1.5.0+**: Mock database - **testcontainers-go**: Integration testing ### Monitoring & Observability - **Prometheus**: Metrics collection - **OpenTelemetry**: Distributed tracing - **Health check endpoints** - **Pprof**: Profiling ### Development Tools - **GolangCI-Lint**: Static code analysis - **Air Tomb**: Hot reload - **Go Mod**: Quản lý dependencies - **Makefile**: Tự động hóa tác vụ ## Cấu hình môi trường ### Development - Hot reload với Air Tomb - Local Docker environment - Sample data và fixtures ### Testing - CI/CD với Gitea Actions - Automated test suites - Lint và code quality checks ### Staging - Triển khai tự động - Môi trường gần với production - Performance testing ### Production - High availability setup - Backup và disaster recovery - Security hardening ## Quản lý cấu hình ULFlow Starter Kit sử dụng một hệ thống cấu hình linh hoạt dựa trên Viper: ### Đặc điểm - Đọc cấu hình từ nhiều nguồn (file, biến môi trường) - Xác thực tự động các giá trị - Giá trị mặc định thông minh - Cấu trúc mạnh (strongly typed configuration) ### Sử dụng ```go // Khởi tạo config loader configLoader := config.NewConfigLoader() // Load cấu hình cfg, err := configLoader.Load() if err != nil { log.Fatalf("Failed to load configuration: %v", err) } // Truy cập cấu hình appName := cfg.App.Name dbHost := cfg.Database.Host ``` ## Các tệp cấu hình - `.env.example`: Template biến môi trường - `configs/config.yaml`: Cấu hình ứng dụng trong môi trường dev - `templates/config.example.yaml`: Template cấu hình ứng dụng - `docker-compose.yml`: Cấu hình container - `go.mod`, `go.sum`: Quản lý dependencies