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 deeply technical, team-first software development engineer to help us take Amazon Aurora to the next level. Amazon Aurora engineers are constantly challenged to think of unique and innovative solutions. As an engineer here, you will work on the hardest engineering problems in distributed systems at a massive scale and on multiple dimensions. This is a hands-on position in which you will have the opportunity to influence and own everything from end to end: requirements gathering, designs, design reviews, implementations, code reviews, incremental feature launches, operations, mentoring and driving continuous improvement. You will exercise your intellectual curiosity, collaborate with motivated teams of smart individuals and get insightful guidance from senior and principal engineers. All to deliver impactful results for our customers and to help you take your software engineering skills to the next level.
We don’t need you to be an expert in databases or distributed systems 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.
Amazon is an equal opportunity, affirmative action employer – minority / female / disability / veteran / gender identity / sexual orientation.
· A Master’s degree or PhD in Computer Science, Engineering, Mathematics, or a related field
· Four or more years of professional software development experience
· Experience designing, building and operating large-scale distributed systems or web services
· Experience with relational database systems e.g. Aurora, MySQL or PostgreSQL
· Experience with core AWS services like EC2, S3, EBS, IAM, CloudFormation, CloudWatch etc.
· Experience delivering projects as part of an agile software development team
· Excellent written and verbal communication skills
· Experience mentoring and coaching junior engineers with less experience
· 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
Ideal candidate profile
· 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
· Two 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
· Basic knowledge of Linux environments including shell scripting and standard Linux command line tools
· Experience with distributed version control such as Git