The Platform Behind the App “Gauss – The People Magnet”
Kit Blake
Co-founder, Gauss UG
Context
- The smartphone app communicates with the platform through HTTP and
REST/JSON service
- Platform interacts with Social Network APIs to fetch data and get realtime
updates:
- Twitter, Foursquare, Facebook
- LinkedIn next
- Platform goals:
- Store large amounts of highly connected data
- Keep data in sync
- Get notified and react to events in realtime
Application and Network
- Usual suspects: HTTP / JSON / Python, and Werkzeug (the core of Flask)
- gevent for efficient network I/O: most of the time is spent waiting for
Social Network APIs to respond
- ZeroMQ for messaging patterns: PUSH/PULL, PUBLISH/SUBSCRIBE, REQUEST/REPLY
- Allows us to break down the application into one-purpose processes:
- Less complexity
- More scalability
MongoDB
- Documents easily map to objects, fast prototyping
- Geographic indexing
Neo4j Graph Database
- Store / cache friends and interests graphs
- Gremlin traversal language for querying, traversing, filtering the graph
- Graph algorithms (e.g. shortest path)
- May switch to Orient DB
Cloud Hosting
- Rackspace Open Stack cloud (sponsorship)
- Managed with Chef: a Ruby system integration framework
and domain specific language for automating the cloud (similar to Puppet)
Thanks