starter-kit/docs/spec.md
2025-05-21 12:39:40 +07:00

131 lines
3.6 KiB
Markdown

# 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