Production Engineering - Datastores - Senior Software Engineer

Ottawa, Montreal, Toronto, Waterloo, Remote UTC -4 to UTC -7 time
Production Engineering
More than 600,000 businesses have bet their success on the reliability and performance of the Shopify platform. Hundreds of additional integrations with the Shopify platform have been built to serve our merchants’ needs. Uptime and efficiency are critical to our customers’ businesses. Shopify's rapid growth means that we have many interesting and challenging problems to solve – most critically in operations.

Managing Shopify's databases requires a team of elite infrastructure engineers with varied skills, and a focus on MySQL. We support Shopify’s growth by building and managing scalable systems and keep them online using high-availability systems, configuration management, and extensive automation.

Shopify’s core database systems – where we store all merchant and customer data – are built on the MySQL database and its ecosystem of Open Source tools. MySQL has been a natural fit for us: it is solid, mature, and fast. We have been hard at work scaling and improving our database infrastructure – handling almost one million queries per second – and we want to take it to the next level.

We are working to evolve Shopify’s database platform into the next generation best-of-breed platform; one that our customers (and their customers) deserve. We need you to help us get there!

Responsibilities as a Senior Software Engineer:

As a member of Shopify’s Production Engineering organization and the Datastores team, you'll be directly responsible for the scalability, performance, and availability of the Shopify database infrastructure.

As a Senior Software Engineer, your day-to-day activities will include collecting requirements from across the organization, designing, and building world-class software to support Shopify’s database requirements. We are a small team, so we need you to jump into reading, writing, and reviewing code in whatever language is necessary for the task, but most new code we’re writing is in Ruby or Go. Because you’re senior, we’ll expect that you can contribute your experience to designing and building tricky brand-new systems from the ground up, and we’ll trust you to take on big challenges and do it well.

Our work is frequently either directly working with and contributing to, or ourselves developing Open Source projects. Participating in and building a healthy Open Source community is important to us.

All members of Production Engineering, including leads, also participate in an on call rotation.

You'll need to:

    • Have truly awesome programming skills. We usually work with Ruby and Go, so experience in either (or both) is helpful, but we’re sure you can learn the languages you need.
    • Have experience with databases (but not necessarily with MySQL), especially SQL-based relational databases.
    • Be very competent with version control, code/patch review, and modern development practices.

It would be great if you:

    • Have extensive experience with MySQL in a high scale environment.
    • Understand containerization and deployment on Linux using technologies such as Docker and Kubernetes.
    • Have previously developed monitoring, tooling and alerting for high scale, high availability systems.
    • Are competent using git for version control and especially using GitHub for pull requests, reviews, and issue management.
    • Have experience with database proxies, HA and clustering solutions.
    • Participate in one or more Open Source projects and have experience working with Open Source communities, licensing, and contribution.

Some things you'll likely be doing in the first few months:

    • Building and scaling Shopify’s distributed cloud-based data storage systems.
    • Building self-service tooling for engineers to automate the configuration and monitoring of the MySQL infrastructure.
    • Making provisioning of a new MySQL cluster as easy as typing a command.
    • Defining our next generation configuration management system.
    • Building tools for tracking and improving query performance.
    • Investigating and resolving production issues.
We know that applying to a new role takes a lot of work and we truly value your time. We are looking forward to reading your application. Please take some time to tell us why you’d be an awesome addition to our team and how this role would be a fit for you!