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

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ườ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