Skip to content

mattgathu/finder-app

Repository files navigation

Finder Application

Challenge: Design a system which can store and index a large number of places

Prototype

Prototype built using:

To get up and running, run:

docker-compose up

The web interface will be availabe at http://localhost:8000

The seed_db_with_random_places.py script is used to populate redis with random data, the command to run is:

docker-compose run app python seed_db_with_random_places.py

Design considerations

  • High performance throughput
  • data oriented as key-value

Assumptions made

  • Data store size remains relatively constant (slow growth)
  • API's radius units are in meters.

Future improvements

  • Use a production grade HTTP server such as Nginx infront of Gunicorn
  • Disable Transparent Huge Tables for redis - better performance
  • Tune redis's fsync settings
  • Explore docker networking stack - default setting may not be ideal

Performance report

Used locust for benchmarking. Results are availabe in the benchmarks folder including screenshots.

About

A simple prototype of using Redis + Falcon

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages