Dùng công nghệ vì “thấy người ta xài” – Kafka cho 10 message/ngày

Kafka xịn, ai cũng dùng, em kéo vào cho app CRUD, giờ deploy tốn 2 tiếng!
Một startup bán hàng online Việt Nam, chỉ có 100 user/ngày, nhưng kéo Kafka, Redis, GraphQL vào app CRUD đơn giản. Kết quả? Pipeline CI/CD phức tạp, deploy chậm, team 5 dev không biết debug Kafka consumer. Công nghệ “xịn” nhưng hệ thống thì “ì ạch”.


Case thực tế: Over-engineering “đẳng cấp”

Context: App bán hàng, 100 request/ngày, team 5 dev.  
Quyết định sai: Dùng Kafka cho notification (100 message/ngày), Redis cho cache, GraphQL cho API đơn giản.  
Vấn đề:  
  • Kafka cần cluster 3 node, tốn 300USD/tháng trên AWS.  
  • GraphQL resolver phức tạp, dev mất 2 tuần học.  
  • Redis cache không cần thiết khi DB MySQL đủ nhanh.
Hậu quả:  
  • Chi phí cao: Cloud bill 500USD/tháng, dù chỉ 100 user.  
  • Deploy chậm: Pipeline build 30 phút vì Kafka setup.  
  • Team kiệt sức: Dev không quen công nghệ, debug mò mẫm.

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

  • Chạy theo hype: Kafka, GraphQL “xịn” nhưng không cần cho workload nhỏ.  
  • Không đánh giá use case: 100 message/ngày không cần Kafka, cron job là đủ.  
  • Thiếu PoC: Không thử nghiệm công nghệ trước khi áp dụng.

Bài học: Công nghệ phải giải quyết vấn đề

  • Đánh giá workload: Dùng MySQL cho CRUD, cron job cho notification nếu <1000 message/ngày.  
  • PoC trước: Test Kafka/GraphQL trên môi trường staging.  
  • Dùng công nghệ đơn giản: REST API, MySQL đủ cho MVP nhỏ.

Code mẫu: Cron job thay Kafka

// app/Console/Commands/SendNotification.php
namespace App\Console\Commands;
use Illuminate\Console\Command;

class SendNotification extends Command {
    public function handle() {
        // Gửi notification qua email/SMS
    }
}

Góc nhìn CTO

Công nghệ “xịn” không làm bạn “đẳng cấp” nếu không giải quyết vấn đề. Startup nhỏ, cứ làm đơn giản với REST, MySQL. Chỉ dùng Kafka, GraphQL khi workload thực sự đòi hỏi, để không biến hệ thống thành “trò chơi lắp ghép công nghệ”!

Checklist chọn công nghệ:  
  • Đánh giá workload (request/day, user scale).  
  • PoC trước khi áp dụng công nghệ mới.  
  • Ưu tiên giải pháp đơn giản cho MVP.  
  • Audit chi phí và effort vận hành.

🎯 Tóm lại: Dùng Kafka cho 10 message/ngày là “mua voi lấy ngà”. Chọn công nghệ đúng use case, để deploy không chậm và team không “toang”!

Post a Comment

Mới hơn Cũ hơn