You're using an older version of Internet Explorer that is no longer supported. Please update your browser.

Senior Software Development Engineer - Aurora

Vancouver, BC
Full Time
You should come work with our team to help build a service that:
• Reliably manages a large fleet of databases for our customers freeing them from traditional database operations
• Guarantees best-in-class availability and failover capabilities to sustain the world's most demanding workloads
• Orchestrates and automates the complete lifecycle of a database cluster from creation to operation to scale-out and fail-over
• Has the unique opportunity to integrate closely with our engine and storage layers to build an end-to-end solution that is easy-to-use and at the same time full-fills the demanding requirements of an enterprise-grade solution
Amazon Aurora MySQL control plane does all this and more. Amazon Aurora is a cloud-native relational database which combines the scalability and performance of the best NoSQL databases paired with full compatibility to the most popular relational open source databases - MySQL and PostgreSQL. Amazon Aurora can store petabytes of customer data and can handle peaks of millions of queries per second.

As one of the fastest-growing services at the core of the AWS Cloud and also one of the largest managed database services our business, your engineering decisions have widespread impact across AWS, Amazon, and beyond. Many of the world's fastest growing businesses, such as Netflix or Pagely, as well as enterprises, such as Captial One and Autodesk, depend on the scale and performance of Amazon Aurora and its control plane to support their mission-critical workloads.

Amazon Aurora MySQL control plane orchestrates one of the largest database as a service offerings in the world, and we continue to believe it is Day 1 for the Amazon Aurora business. We are constantly improving and adding new capabilities to Amazon Aurora.

Our engineers know that building a control plane to manage large scale cloud native databases is fun and challenging. It is not just any distributed system. It is a system orchestrating a distributed storage engine operating with petabyte scale data sets, real-time node failure detection mechanisms, multi-datacenter and cross-continent replication. It is a highly concurrent orchestration and provisioning system allowing for dynamic host replacement on live clusters without losing client connections, scaling up and down clusters on demand, managing enterprise-grade security and access control, provide best in-class observability and auditability and much more. These are some of the most complex and therefore most interesting challenges in the industry, which you won't find in traditional enterprise systems. On top of these we also build next generation services and features such as automated machine-generated recommendations for optimal database usage to continuously delight our customers.

We have some of the most talented engineers working to build something incredibly innovative and we are looking for a seasoned Senior Software Engineer to join the team and help us take Amazon Aurora to the next level. The problems you face will rely a lot on exercising your intellectual curiosity. You will help lead a diverse team of intelligent individuals to deliver impactful results for customers. And you will interact with other senior SDEs and principal engineers on a daily basis, who will help you take your design and architectural skills to the next level.

Our systems have to be highly available, scalable, and efficient. We can't get away with two out of three. As a senior engineer, you will design systems to adhere to these tenets and mentor junior engineers to do the same. You will tackle hard distributed-systems problems as well as difficult resource-optimization problems.

You also will lead the delivery of new systems with customer-facing features and new internal functionality. You will play a big role in defining our new offerings in a way that takes advantage of your deep knowledge of industry trends and engineering tradeoffs. You also will be a thoughtful steward of existing systems, appropriately challenging assumptions and rearchitecting systems when necessary to allow us to scale for growth.

This is a hands-on position in which you will be asked to own everything from building reliable services to formulating strategy, evangelizing technology, and mentoring other engineers. You need to not only be an accomplished software developer with a track record of delivering on commitments, but also a strong collaborator and communicator that can lead with empathy for our customers.

If you want to have a growth opportunity and solve technical challenges you won't see anywhere else, join our team!

Your responsibilities will include:
• Translating complex functional and technical requirements into detailed architecture and design.
• Running multi-engineer, cross-team projects, and mentoring others on project management and prioritization.
• Be very hands on. Collaborate with others on the engineering team to manage day-to-day development activities and participate in designs, design reviews, code reviews, and implementation.
• Delivering quality features on time and on budget.
• Performing data analysis to identify opportunities to optimize our services.
• Working with data scientists to understand the data they need, and acting on the insights they provide.
• Maintaining current technical knowledge to support rapidly changing technology, always stay curious for new technologies and working with management and the development team to bring in new technologies when appropriate.

You must be able to work with a minimum level of technical supervision while responding efficiently to multiple priorities. You will lead engineering teams to design, optimize, and deliver a wide variety of projects using a variety of development tools and practices. In addition, you will build shared components and tools and looking for opportunities to simplify. You will evaluate the latest technologies and development trends and as a technical leader and mentor, you will set and drive best practices for the team.

We don't need you to be an expert in databases as you will have a chance to learn with your team. We are attracted to engineers who love what they do and are passionate about their work. We appreciate curiosity and craftsmanship over knowledge in certain frameworks. Our technologies include:
• Core Java 8
• RESTful microservices powered by internal RPC framework
• A lot of AWS stack - DynamoDB, Lambdas, API Gateway, CloudFormation (yes, infrastructure as a code). We eat our own dogfood all the time! Where can you learn AWS technologies better than at AWS itself?
• Ruby for infrastructure components and services

By joining the Amazon Aurora Vancouver team, you'll become part of a diverse group of individuals coming together from around the world to enjoy a creative and comfortable work environment with great family-friendly benefits, lot's of training and learning opportunities, a competitive salary and the opportunity to be part of a fast-paced and growing technology company in a vibrant and beautiful city that provides exceptional quality of living.

• A Bachelor's or Master's degree in Computer Science, Engineering, Mathematics, or a related field, or experience equivalent to a Bachelor's degree based on three or more years of work experience for every one year of education
• Five or more years of professional software development experience
• Proficiency in one or more general-purpose programming languages, such as: Java, Python or Go
• An understanding of computer science fundamentals in algorithms and data structures
• Experience designing, building, and operating large-scale distributed systems or web services
• Basic knowledge of Linux environments including shell scripting and standard Linux command line tools
• Experience with distributed version control such as Git

• A Master's degree or PhD in Computer Science, Engineering, Mathematics, or a related field
• Seven or more years of professional software development experience
• Experience with relational database systems e.g. Aurora, MySQL or PostgreSQL
• Experience core AWS services like EC2, S3, EBS, IAM, CloudFormation, CloudWatch etc.
• A track record of successfully leading the delivery of projects as part of an agile software development team
• Excellent written and verbal communication skills, with the ability to present complex technical information in a clear and concise manner to a variety of audiences
• Experience mentoring and coaching junior engineers with less experience
• Experience building and operating large-scale online services and fault-tolerant distributed systems
• Solid Linux/Unix experience. Test yourself - grep log file and show how many events of certain type per minute/second/hour are generated
• Comfortable working in agile environment and strong desire to take ownership of your work

Amazon is an equal opportunity, affirmative action employer - minority / female / disability / veteran / gender identity / sexual orientation.

Software and Programming