---
# System prepended metadata

title: KHTN - recommendation system
tags: [KHTN khtn recommendation system]

---

---
title: KHTN - recommendation system
tags: KHTN khtn recommendation system
description: 
---
SRS - Recommendation system
===

## System Features and Requirements
### Functional Requirements
- https://docs.google.com/document/d/13c8IMFfJzWr5aTdXISyPdwFnSRNHm9Wp/edit#
(section 1)
### External Interface Requirements
#### Hardware Interfaces
- We have two options to deploy web server
    - Google App Engine (Flexible)
        - Easy to scale up
        - Can scale down to zero instances so it can reduce cost if no incoming requests
        - Fast to have a demo
        - CONS:
            - Limited resource
            - Hard to install some python libraries
    - Compute Engine
        - Can handle complex preprocessing process
        - Usually has more power than GAE
        - CONS:
            - Cost more
            - Need more effort to deploy and maintenace (DevOps)
- Operation system: Linux
#### Software Interfaces
- Using Flask/Tornado (micro python framework) to create web api
- Database: TBD
#### Communications Interface
- gRPC client: send request to Tensorflow serving
- Rest API: end point for client to query recommendation result
### System Features
### Nonfunctional Requirements
- Performance
    - Do we have soft or hard timing constraints?
- Safety
    - Limit number of request from an IP to prevent DDoS
- Security
    - Do we need to support HTTPS?
    - Which authentication method we should use?
    - Do we store any information of users? If yes do we need to hash those information?
- Quality
    - Support to run multi version of recommendation system at the same time. Have benefit if we want to do a/b testing.

## Q&A
- Q: Do we support online learning?

## Reference
https://online.visual-paradigm.com/diagrams/templates/google-cloud-platform-diagram/recommendation-engines/

https://online.visual-paradigm.com/diagrams/templates/google-cloud-platform-diagram/recommendation-engines/
