Skip to content

Instantly share code, notes, and snippets.

@abtreece
Last active May 5, 2021 01:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abtreece/0cbaa3ebb58e8f24872457fa63ac5741 to your computer and use it in GitHub Desktop.
Save abtreece/0cbaa3ebb58e8f24872457fa63ac5741 to your computer and use it in GitHub Desktop.

Spreedly Senior Database Reliability Engineer Work Sample

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.

Our Technical Values

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

The Task

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.

Caveats

  • 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.

Deliverables

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:

  1. mkdir solution && cd solution
  2. git init
  3. touch README.md
  4. git commit -m "Initial commit"
  5. < ...hack, hack, hack... >
  6. cd .. && git clone --mirror solution solution.repo
  7. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment