Production Engineering - Database Engineer - Datastores

Shopify

Ottawa, Montreal, Toronto, Waterloo, Remote UTC -3 to UTC -7 time

Hundreds of thousands of businesses have bet their success on the reliability and performance of the Shopify platform. Uptime, resiliency and efficiency are critical to these businesses and as a result of Shopify's rapid growth and massive scale, we have many interesting and challenging infrastructure problems to solve.

At the heart of this platform are Shopify’s core database systems. These systems, where we store all merchant and customer data, are built around the MySQL ecosystem of open source tools. Over the past several years, we have been hard at work scaling and improving our database infrastructure, handling almost two million queries per second at peak. Now, we want to take it to the next level and we need your help to get us there!

Responsibilities as a Database Engineer:

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

As a Database Engineer, your day to day activities will include working closely with the support and development teams, some traditional database administration (DBA) work and some modern systems administration work (managing cloud infrastructure). As we continue to grow and scale, we need to achieve as much as possible through automation and hands-off management. We need your help, your experience, and your crazy ideas to design, build, and deploy the next generation of database management infrastructure to expand on what we have built to keep it truly world-class.

We are currently running a cloud based state-of-the-art stack on Google’s Compute Engine and Container Engine. Our next challenges involve moving all our systems, including MySQL itself, as containerized services running under Kubernetes.

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

You'll need to:

  • Have experience with the administration, operation, and performance tuning of MySQL, ideally in a Linux environment.
  • Maintain an understanding of modern solutions to deploy services at scale.
  • Be proficient in at least one programming language, and have the ability to read, write and understand scripts in languages such as Ruby, Python, or Go.
  • Have an insatiable appetite to grow and learn how to manage systems at scale.

It would be great if you:

  • Understand modern high availability (HA) designs for MySQL, and have used MySQL HA-management solutions, such as Orchestrator.
  • Have experience with MySQL proxies, such as ProxySQL.
  • Understand containerization and deployment on Linux using technologies such as Docker and Kubernetes.
  • Are up-to-speed and comfortable with cloud infrastructure, designs, and tools for Google Cloud and/or Amazon Web Services.
  • Have some familiarity with existing cloud-managed “Database as a Service” solutions, such as  Google’s Cloud SQL or Amazon’s RDS/Aurora.
  • Are competent using git for version control and especially using GitHub for pull requests, reviews, and issue management.
  • Are familiar with the ecosystem of Open Source software used in production web environments, such as Rails, Redis and memcached.

Some things you’ll be working on in your first few months:

  • Learn about Shopify’s MySQL-based database infrastructure and get comfortable working safely and efficiently in it.
  • Work on the projects that will allow us to offer to our internal customers a standardized “Database as a Service” platform which would cover absolutely all their needs, including HA, data integrity, schema migrations and changes, security, monitoring and alerts.
  • Test (and try to break) our high availability systems in interesting new ways, and work out the kinks found in the process.
  • Respond to internal support requests from other teams to help ensure their success in developing their own applications or supporting their customers.
Apply here