Stripe System Design Interview: Feature Flag Platform
Based on a candidate's reported Stripe interview
The interviewer opens
Hi, and thanks for joining. Welcome to your interview for the Staff Software Engineer role at Stripe. We'll design a system together, with you sketching on the whiteboard on the right as you talk, and you can pause at any time with the Pause button at the top right if you need a break.
The problem is a feature flag platform for Stripe's backend services, and it's up in the Problem tab now. Please read through it and ask anything you'd like clarified before you start drawing.
The problem
Design a feature flag system for Stripe's engineering organization that lets engineers turn features on or off and gradually roll them out to a percentage of merchants or users, with explicit include and exclude lists, across all of Stripe's backend services.
Must do
- Engineers create, edit and delete flags with an on/off or multi-variant value
- Roll a flag out to a percentage of units, such as merchant accounts or users
- Force specific units on (allow list) or off (block list)
- Services check a flag's value for a given unit inside request handling
- Every flag change is recorded with who made it and when
Must hold
- Checking a flag must never slow down or break payment processing
- Flag changes reach the whole fleet quickly and predictably