How the Spool technology stack works
- When a user interacts with one of our clients (Android, iOS, browser add-ons, HTML5 webapp), data requests are sent to our servers.
- In Redis, we save key-value pairs. The values are all JSON strings. So Redis just returns JSON to Node.js
- Node.js receives this JSON and passes it down to the client that requested it.
- The HTML5 web client uses backbone.js so we keep the JSON data structures we passed down and quickly & easily generate views from these models.
- The entire stack is extremely fast because there is no difference between data and objects. Everything is JSON. We store JSON, process JSON, and transmit JSON from our REST API. There is no ORM layer and no conversion from ruby/php/python objects to JSON (or vice versa).
- It’s easy to jump between frontend and backend because the data structures being used are the same JSON
- Our APIs are extremely flexible and we can iterate on them quickly. We can just change what we store and we’ll return the right thing because we just return the JSON we store. If we realize we need to add fields to what we’re returning or remove fields we can make changes quickly.
- Analyizing data requires writing scripts to extract and manipulate JSON.
- Unlike SQL engines, most engineers/analysts/ product managers are not well versed in the Redis data model and will need to reorient themselves.
- The ecosystem is nascent. There is not deep documentation available, there are not many robust tools, and it’s entirely possible you run into bugs or edge cases.