3.6 KiB
3.6 KiB
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
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
// 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ườngconfigs/config.yaml: Cấu hình ứng dụng trong môi trường devtemplates/config.example.yaml: Template cấu hình ứng dụngdocker-compose.yml: Cấu hình containergo.mod,go.sum: Quản lý dependencies