Webare là một dự án cá nhân của mình, phát triển version đầu tiên là một random chat bot trên discord, sau nhiều kinh nghiệm học được khi phát triển và chạy version này, mình tiếp tục phát triển v2 và v3, lần này với mục tiêu lớn hơn, là một chatbot giúp kết nối nhưng cuộc trò chuyện ngẫu nhiên từ nhiều platform khác nhau, thay vì ép người dùng phải gia nhập thêm một platform nữa để sử dụng bot. Sau đây là recap của version 3, sau khi đã hoạt động được 4 tháng:
- 1214 users từ Discord và Facebook đã sử dụng bot - 110083 messages đã delivery thành công - trung bình mỗi ngày có 77 new matches

Những vấn đề ghi nhận được trong quá trình hoạt động:

- Mặc dù tỉ lệ này là dưới 1%, nhưng vẫn có những messenger message bị fail khi gửi, vì thiết kế hiện tại của hệ thống nên không có cơ chế retry khi xảy ra lỗi ở các gateways - Vì phải thông qua các socket connection dẫn đến message phải routing qua nhiều layer trước khi xác định được điểm đến, điều này làm tăng lượng query lên Redis nhiều hơn mức cần thiết, đồng thời cũng tăng mưc độ complex của code.

Moving to V4

Nhận thấy vấn đề đến từ tech-stack, mình sẽ thay đổi 1 số tech, lần này sẽ distribute nhỏ hơn, đồng thời sử dụng AMQP là phương thức liên lạc giữa các service, mô hình về cơ bản có thể được hiểu thông qua sơ đồ này:
Webare V4 flow chart
Webare V4 flow chart
Bằng việc ack hoặc unack nhưng relist, mình có thể giải quyết được vấn đề retry khi các gateways thất bại trong việc gửi các message, đồng thời giảm thiệu lượng routing mà các messages phải thông qua trước khi có thể xác định được địa chỉ người nhận. Cảm ơn bạn đã đọc đến đây, sau cùng là một số link về project: