1 điểm bởi GN⁺ 2024-06-10 | 2 bình luận | Chia sẻ qua WhatsApp

Thiệt hại hơn 10.000 USD chỉ vì một sai sót của ChatGPT

Quá trình kiếm tiền 🛣️

  • Bối cảnh: Bắt đầu triển khai kiếm tiền ở giai đoạn đầu của startup.
  • Định giá: Đặt ở mức 40 USD/tháng theo lời khuyên của một group partner tại YC.
  • Ngăn xếp công nghệ: Di chuyển từ NextJS sang Python/FastAPI. Đã tích hợp xong Stripe.

Nguyên nhân gây thiệt hại 10.000 USD 💰

  • Sự cố phát sinh: Chức năng đăng ký bị lỗi vòng quay tải vô hạn.
  • Cách phát hiện vấn đề: Sau 5 ngày phân tích vô số email và log, cuối cùng đã tìm ra lỗi.
  • Nguyên nhân: Trong đoạn mã do ChatGPT tạo ra có lỗi ở cách tạo ID. Nó dùng một chuỗi ID cố định, dẫn đến xung đột ID.

Săn lỗi 🐛

  • Mô tả vấn đề: Việc dùng chuỗi ID cố định gây ra xung đột ID. Do nhiều instance chạy trên AWS ECS nên ban ngày không có vấn đề, nhưng ban đêm thì xung đột xảy ra.
  • Cách khắc phục: Dùng hàm tạo UUID thay cho ID cố định. Sau khi sửa, hệ thống đã ổn định.

Kết luận 🤖

  • Bài học: Thừa nhận những sai lầm như thiếu kiểm thử, sao chép-dán mã, và commit thẳng lên nhánh chính.
  • Trải nghiệm: Dù là một trải nghiệm đau đớn, đây vẫn là khoảnh khắc quan trọng của startup.

Ý kiến của GN⁺

  • Tầm quan trọng của kiểm thử: Cần có đủ kiểm thử đơn vị và kiểm thử tích hợp.
  • Code review: Thay vì sao chép-dán mã, việc review và xác minh mã là rất quan trọng.
  • Chiến lược triển khai: Thay vì commit trực tiếp lên nhánh chính, nên dùng nhánh riêng và đi qua quy trình code review.
  • Năng lực giải quyết vấn đề: Khả năng nhanh chóng xác định và xử lý vấn đề là rất quan trọng.
  • Lựa chọn ngăn xếp công nghệ: Việc thay đổi ngăn xếp công nghệ cần được lên kế hoạch cẩn thận và kiểm thử kỹ.

2 bình luận

 
znjadong 2024-06-11

Ủa, code được AI tự động tạo ra thì nhất định phải review chứ, sao lại dùng nguyên xi như vậy.

 
GN⁺ 2024-06-10
Ý kiến trên Hacker News
  • Ý kiến thứ nhất: Đã phát hiện lỗi ngay lập tức. Nguyên nhân là do đội ngũ thiếu chuyên môn. Nếu dùng giải pháp giám sát thì có lẽ đã phát hiện rất dễ dàng.
  • Ý kiến thứ hai: Nhờ ChatGPT mà ứng dụng đã tạo ra doanh thu. Việc thiếu kỹ năng coding, debugging, logging và monitoring mới là nguyên nhân gây thiệt hại $10,000.
  • Ý kiến thứ ba: Thiếu monitoring là nguyên nhân gây thiệt hại $10,000. Đã xảy ra exception ở cơ sở dữ liệu nhưng không có cảnh báo. Nếu có cảnh báo thì có lẽ chỉ mất 5 phút để xử lý.
  • Ý kiến thứ tư: Chỉ ra vấn đề với chiến lược đánh giá đối số mặc định của Python. Chúng được đánh giá tại thời điểm định nghĩa hàm. Có thể đây là chủ đích để tăng hiệu quả. Cách Python tạo list cũng bị xem là có vấn đề.
  • Ý kiến thứ năm: Con người cũng thường mắc cùng kiểu lỗi này. Đặc biệt trong React/TypeScript/JavaScript, nhiều người hay quên dùng lambda. Người này cho rằng bài blog chưa giải thích đúng gốc rễ của vấn đề.
  • Ý kiến thứ sáu: Sai sót kiểu này rất dễ xảy ra. Tuy nhiên, không thể hiểu vì sao sau lần thất bại đầu tiên nó vẫn không bị phát hiện. Tự hỏi liệu có phải không hề có logging hay không.
  • Ý kiến thứ bảy: Việc công khai vấn đề này tạo cảm giác khá ngây thơ. ChatGPT không có lý do gì để bị chỉ trích. Điều này gợi nhớ đến ý tưởng về một dịch vụ code review.
  • Ý kiến thứ tám: Đây là vấn đề phát sinh do áp lực thời gian. Chính những ràng buộc như vậy khiến người này sợ phần mềm thuê bao.
  • Ý kiến thứ chín: Không hiểu nổi các startup lại biện minh cho việc rewrite toàn bộ khi còn chưa có cả khách hàng.
  • Ý kiến thứ mười: Kỹ năng sử dụng LLMs nằm ở việc biết khi nào và dùng như thế nào. Câu trả lời của ChatGPT là hợp lý, nhưng khi thấy khuyến nghị xóa toàn bộ người dùng ở một dòng cụ thể thì đã rút ra một bài học lớn.

Mỗi ý kiến đưa ra một góc nhìn khác nhau về các vấn đề có thể phát sinh trong quá trình phát triển phần mềm và cách giải quyết chúng. Điều này có thể mang lại những insight hữu ích cho các kỹ sư phần mềm mới vào nghề.