Requests to the Spreedly APIs are growing by 100% every year. The merchants and marketplaces that use our platform are expecting low latency and high availability from the services we provide. Additionally, we are always working to enable Product Engineering for rapid development, innovation, and reduced human error.
We highly value:
- pragmatic solutions with an eye toward future, incremental improvements
- careful attention to detail
- testing before deployment
- communicating intent through code, commits, and documentation
Engineering at Spreedly is planning a migration of our distributed NoSQL key-value datastore to a distributed SQL database. To that end, we would like you to propose a high-level migration strategy for this project. Describe the approaches you would consider and the steps you would take to ensure a successful migration from old to new.
- We realize that the data migration from schemaless to schemaed could make up a large part of a migration plan like this. However, we would like to keep this simple so assume our NoSQL k/v data is namespaced into "buckets" and feel free to talk in broad strokes.
- Make assumptions where necessary, indicate when assumptions are made in your response, but focus mostly on the framework of the migration that does not depend on assumptions.
- We already have a plan in the works so we aren’t asking you to do our work for us. Rather, we want to understand your approach to get a sense of how you think about and address a large, complex problem, and especially how you communicate about it.
A Markdown formatted README that:
- Details your recommended strategy for migrating from NoSQL datastore to SQL database
- Describes any other approaches you considered and the possible tradeoffs
- Identifies any gaps (dependencies, further needs, areas of exploration)
Solution Format
Please do not post your solution to public Git repositories like GitHub or Gitlab. Instead please work locally:
mkdir solution && cd solution
git init
touch README.md
git commit -m "Initial commit"
- < ...hack, hack, hack... >
cd .. && git clone --mirror solution solution.repo
tar czf solution.repo.tgz solution.repo
Your commits should clearly communicate your intent and choices made while completing the task. Please reply to the work sample assignment email with your attached solution.