Skip to content

Latest commit

 

History

History
39 lines (24 loc) · 1.55 KB

adr_010.md

File metadata and controls

39 lines (24 loc) · 1.55 KB

ADR_010 Implement the Recommendation Engine as a Batch System

Date: 11/1

Status

accepted

Context

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:

Batch System

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.

Real-Time System

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

Decision

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.

Consequences

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.