131 lines
3.6 KiB
Markdown
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
|