Senior Software Engineer (Online Storage)
Remote Canada
Affirm is reinventing credit to make it more honest and friendly, giving consumers the flexibility to buy now and pay later without any hidden fees or compounding interest.
At Affirm, data is fundamental to everything we do. Our data and storage solutions empower machine learning, artificial intelligence, cloud-based technologies, and other modern tools to create differential and scalable products. We prioritize building our own technology and investing in engineering talent, as we believe these are enduring competitive advantages that are difficult to replicate.
The Online Storage team provides a set of managed databases as a platform, used to persist data for all Affirm services. Our platform automates operations and development on services on top of storage systems like AWS Aurora (MySQL), DynamoDB, and S3. As a team, we are responsible for various data and access patterns, including but not limited to mission-critical financial transactional data, data science models, and any new persistence use case requiring us to learn and gain deep expertise in various database systems.
Affirm is growing fast and we want you to enable us to scale our products to 10x and beyond through building world-class systems which enable Affirm in its mission to provide honest financial products which improve lives.
Role
As a member of the Online Storage team, you will combine a strong understanding of application architecture, smooth developer experiences and fast-paced execution to deliver a powerful self-serve system to help Affirm scale easily.
What you’ll do
- Lead projects towards improving our database architecture, focusing on scalability, reliability, performance, and cost efficiency.
- Work with engineers managing Affirm’s distributed database technologies, particularly AWS Aurora MySQL, Distributed SQL, and eventually expanding to DynamoDB and Caching.
- Design, build and highly durable and strongly consistent database as service architecture.
- Design and build solutions at scale for challenges such as multi-region, active resharding and globally available services.
- Work closely with product teams to understand business requirements and translate them into robust database solutions.
- Assist partners achieve better query performance by suggesting better query optimizations and effective schemas.
- Develop and enforce best practices in database design and management, ensuring data integrity, security, and optimal performance.
- Stay abreast of industry trends and emerging technologies in transactional databases to continually enhance our systems and processes.
- Participate in an on-call rotation and collaborate with other teams, such as SRE, to solve production issues.
- Lead and mentor engineers to define and execute on roadmap aligned with stakeholder needs.
What we look for
- Bachelors or Masters degree in Computer Science with 5+ years of experience as a software engineer with leadership exposure and experience mentoring junior engineers.
- In-depth, hands-on experience with large-scale database deployments in a production environment.
- Expertise in distributed databases and database technologies such as MySQL InnoDB storage (Preferred), Postgres, Spanner, Vitess, TiDB, CockroachDB etc.
- Solid understanding of distributed database architecture, data modeling, and performance tuning.
- Expertise in Database/Table and backup-recovery management.
- Proficiency in Python or Kotlin or both.
- Experience with AWS and Kubernetes.
- Exceptional communication skills with the ability to engage effectively with both technical and non-technical stakeholders.
What you’ll learn
Join us as we build a beloved, lasting financial services company predicated on honesty and trust. In this role, you’ll understand the exciting challenges of helping a fast-growing company move towards a service-oriented architecture.
Apply for this job
* indicates a required field