Quản lý config như rocket science

Thay vì .env, team build cả hệ thống config riêng, UI web, DB, giờ downtime vì… config!

Một startup fintech Việt Nam, thay vì dùng .env, xây hệ thống quản lý config riêng với UI web, database PostgreSQL. Kết quả? Config tool crash, app chính không load được biến môi trường, downtime 2 giờ, khách hàng phàn nàn.


Case thực tế: Config “phức tạp hóa vấn đề”

  • Context: App ví điện tử, 10.000 giao dịch/ngày, cần config API key, DB connection. 
  • Quyết định sai: Build config tool riêng với UI, API, DB, thay vì dùng .env hoặc Vault. 
  • Vấn đề
    • Config tool crash vì DB overload, app chính không load được config. 
    • UI phức tạp, dev nhập sai giá trị, gây lỗi runtime. 
    • Team mất 2 tuần maintain config tool, hơn cả app chính.

Hậu quả

  • Downtime: App chính down 2 giờ vì config tool lỗi. 
  • Chi phí: Setup và maintain tool tốn 300 triệu. 
  • Team kiệt sức: DevOps ngập trong bug của config tool.

Phân tích: Tại sao sai?

  • Over-engineering: Config đơn giản không cần UI hay DB riêng. 
  • Không dùng tool sẵn có: Consul, Vault, hoặc .env đủ cho hầu hết use case. 
  • Thiếu PoC: Không test config tool dưới high load.

Bài học: Keep it simple

  1. Dùng tool sẵn có.env cho MVP, Consul/Vault cho hệ thống lớn. 
  2. PoC config: Test load config dưới high traffic. 
  3. Monitor config: Alert khi config không load được.

Code mẫu: Config với dotenv (Node.js)

require('dotenv').config();
const dbUrl = process.env.DB_URL;
console.log(`Connecting to ${dbUrl}`);

Quản lý config không phải “rocket science”. Dùng .env, Consul, Vault, để app không down vì config và team không maintain “cỗ máy vô dụng”!

Checklist quản lý config

  • Dùng .env cho MVP, Vault/Consul cho hệ thống lớn. 
  • Test load config dưới high traffic. 
  • Monitor và alert khi config lỗi. 
  • Document cấu trúc config rõ ràng.

🎯 Tóm lại: Build config tool riêng là “tự mua dây buộc mình”. Dùng .env, Vault, để app không down và team không debug “cỗ máy tự chế”!

Post a Comment

Mới hơn Cũ hơn