Skip to content

Latest commit

 

History

History
24 lines (18 loc) · 2.19 KB

README.md

File metadata and controls

24 lines (18 loc) · 2.19 KB

CryptoRecommendation Service

This service is meant to provide crypto data insights

Requirements

The entire list of requirements can be checked here

Solution Overview

  1. Dynamically generate a Spring Batch Job containing
    • a series of steps for loading token data from each resource defined in application.yml - it is very scalable to add new tokens in the future (add a new token symbol and token resource, NO code changes required)
    • an additional step for creating the lookup tables used for improving the performance of future RMQ (Range Minimum/ Maximum Queries) - to understand this solution, check Medium post on Sparse Tables
  2. Create the service logic for answering the RMQ in the requirements
  3. Expose the endpoints for answering the RMQ
  4. Safeguard our API by checking for blacklisted client IPs, missing params, invalid params, constraint violations, etc. before processing any request
  5. Centralize the exception handling logic
  6. Create a documentation for our endpoints using OpenAPI 3.0
  7. Create a Postman collection for both the positive and negative scenarios - very handy for e2e manual testing/ debugging

Solution Complexity

  • Memory Complexity - M * O(NlogN), where M is the number of tokens, N is the maximum number of data points per token
  • Time Complexity - O(1), constant time for the RMQ received on any of the exposed endpoints