- The Data and Storage Services team is responsible for affirm’s data infrastructure across OLTP and OLAP systems, spanning critical online checkout databases, batch orchestration, streaming infrastructure, event-driven frameworks, BI, analytics tooling, large-scale data platforms, and agentic data tools such as semantic layers and internal platform data applications
- Our mission is to provide trustworthy, intuitive, and cost-efficient solutions for affirmers to secure, store, analyze, and transform data at exceptional scale
- The online storage team provides a set of managed databases as a platform, used to persist data for all affirm services
- Our platform enables self-service access to OLTP storage systems, including relational db(mySQL), kv(dynamoDB), distributed sql(tiDB) and cache(redis)
- 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
- These responsibilities require us to learn and gain deep expertise in various database systems
- We are looking for a talented senior software engineer who can architect, build and scale relational and distributed sql databases identifying opportunities to improve how we build, productionize, operate and improve this mission-critical infrastructure to unlock substantial value within our business
- You’ll have the opportunity to directly influence your team’s roadmap in close collaboration with your peers, share your knowledge and expertise with others and learn from some of the best on our shared mission to deliver honest financial products that improve lives
- You will build and operate the control plane for large-scale distributed sql databases such as mysql and tidb, automating provisioning, failover, backups and upgrades end to end
- You will design and execute reliability-focused schema and data migrations across multi-tenant database clusters, with zero downtime for the products that depend on them
- You will own the networking stack that connects services to storage on kubernetes, including connection proxies such as proxysql, and tune it for latency, resilience and failover
- You will be responsible for owning and delivering quarterly goals for your team, leading engineers on your team through ambiguity to solve open-ended problems, and ensuring that everyone is supported throughout delivery
- You will support your peers and stakeholders in the product development lifecycle by collaborating with product management, design & analytics by participating in ideation, articulating technical constraints, and partnering on decisions that properly consider risks and trade-offs
- You will proactively identify project, process, technology or business issues, advocate for them, and lead in solving them
- You will support the operations and availability of your team’s artifacts by creating and monitoring metrics, escalating when needed, and supporting “keep the lights on” & on-call efforts
- You will foster a culture of quality and ownership on your team by setting or improving code review and design standards for your team, and advocating for them beyond your team through your writing and tech talks
- You will help develop talent on your team by providing feedback and guidance, and leading by example
Benefits
- Compensation: We have a simple, flexible, and transparent remote-first compensation structure so you can make the best decisions for yourself and your family
- Spending wallets: Access tech, food, lifestyle, and family planning wallets for your expenses
- Supportive communities: Get involved with our employee resource groups and community groups
- Remote-first workforce: If your role is remote, you can set up shop anywhere in your home country
- Generous time off: Take the time you need when life happens
- Health benefits: Get a plan that fits your needs
- Mental healthcare: Take care of your mind with great mental health programs
- Parental leave: Birth and non-birth parents get 18 weeks’ paid leave. Plus, a 4-week return-to-work transition program, at full base pay
- Away days: We offer 20 company-wide paid days off—which help our teams collectively pause to recharge
- Learning & development: Engage in exciting learning programs to level up your growth
You have in-depth, hands-on experience with large-scale database deployments in a production environmentYou have experience defining a technical plan for the delivery of a significant feature or system component with an elegant, simple and extensible design. You write high quality code that is easily understood and used by othersYou understand kubernetes networking, service discovery and tls well enough to debug connection and failover problems between services and databasesYou have built control-plane or automation tooling for databases, such as provisioning, failover, upgrades or schema migrations, ideally on kubernetesYou have expertise in database benchmarking, load testing, and capacity planningYour experience demonstrates that you take ownership of your growth, proactively seeking feedback from your team, your manager, and your stakeholdersSolid understanding of distributed database architecture, data modeling, and performance tuning. Particularly, expertise in sql tuning and performance optimization techniquesYou have expertise in distributed databases and database technologies such as mysql(Preferred), tidb(Preferred), postgres, spanner, vitess, cockroachdb etcYou have executed zero-downtime migrations and major version upgrades on production databases, and have built cli tooling or runbooks to make those procedures repeatableYou are familiar with connection poolers and proxies such as proxysql, rds proxy, pg bouncer, pgdog etcYou are experienced in designing, developing and launching backend systems at scale technologies like python, kotlin, aws, mysql, terraform and kubernetesThis position requires either equivalent practical experience or a bachelor’s degree in a related fieldYou have strong verbal and written communication skills that support effective collaboration with our global engineering teamYou are proficient at making significant changes in a large code base, and have developed a suite of tools and practices that enable you and your team to do so safelyYou have a total of 5+ years of experience as a software engineer