Notification Service

Câu hỏi:

- Nếu phải build một "basic" Notification Service để send out emails, sms, push notification cho toàn e-com system thì nên build thế nào?

- Usecase: trong e-commerce system bạn cần send out emails: order placed, order cancelled, delivery window changed. Sms & push notifications: order ready to pickup, order on the way, order left at door, etc. 

Question: các service khác giao tiếp với notification service như thế nào và service nào chịu trách nhiệm build msg content.

Gợi ý:

- Phải có 1 thằng message queue,

- Liệt kê ra những loại events nào sẽ publish messages đến queue. Có những loại event từ client đến, từ system khác bắn vào, từ data change (cái này có thể dùng Redis in memory cached DB để subscribe ra queue), 

từ persistent data (ví dụ tới ngày sinh nhật customer...) thì phải có 1 business service riêng chạy theo scheduled để check.

- Sau đó xác định những loại subscriber service để đẩy notifications đi: mail service, sms service, web socket service...

- Cứ dùng RabbitMQ build nó như 1 message bus. Ưu điểm RabbitMQ là nhanh, reliable, đủ các yếu tố để scale: như phần out messages, processing, persistence message etc. 

Cũng có thể thay thế nó bằng 1 cloud message bus cũng tương đối dễ dàng. Mặc dù scale trên nó cũng khá nhọc nhằn nhưng nhìn chung nó vẫn có thể scale dễ dàng 

Ngoài ra cũng có thể apply Sagas pattern cho luồng processing từ order, payment, delivery với Masstransit hay tự làm cũng khá ok với RabbitMQ

Tham khảo từ cộng đồng Việt Nam Microservices Group