ADR_010 Implement the Recommendation Engine as a Batch System
Date: 11/1
accepted
The recommendation engine will make product recommendations to customers based on multiple pieces of information such as:
- User purchase history
- User meal reviews
- User health/dietary goals
- many more...
This system could be implemented in two main ways:
Every so often throughout the day/week, gather all necessary data to make recommendations to a user (or set of users), and send out those recommendations.
Pros:
- Simpler to implement in the current proposed architecture.
Monitor events throughout the system, and make on-the-fly recommendations to users based on data as it is seen moving about.
Pros:
- Recommendations are able to be made based on real-time data so that users can receive recommendations in time-sensitive contexts
We have decided to use a batch system for the recommendation engine.
Choosing meals based on dietary and health recommendations will likely not be affected by data that changes on an hour-by-hour basis. People's dietary goals rarely make wild changes over the course of the day, so a real-time recommendation system is not necessary.
By using a batch system, it will make it easier for Farmacyfoods employees to tweak the recommendation algorithm and see aggregate changes to recommendations to customers. Running offline experiments on recommendations becomes easier when the recommendations are not based on on-demand events.