Working with other engineers to build distributed systems that can handle data at scale
Debugging production issues across multiple services and all levels of our infrastructure stack
Ensuring reliability and uptime of the services you're responsible for
Keeping an eye on how much your service costs every month and removing inefficiencies wherever possible
Improving engineering standards and holding a high bar for code quality and simplicity
Pushing the boundaries on how our customers analyze their product data
Requirements
Most of the systems in our stack provide at least once semantics. As a result, we risk duplicating events that flow through them. To overcome this limitation, we added support for event deduplication that can work at our scale. Typical approaches for deduplication don't perform well on large amounts of data, so we had to do something highly custom for our stack. We wrote about this on our engineering blog here.
Back in 2019, we migrated our ingestion API service from Python to Golang for better performance and type safety. We had to do this while ensuring that both systems handle data the same way. Because we had to compare, both, HTTP responses and transformed payloads, nothing out of the box worked for us. This blog post talks about how we did the actual migration without any customer visible downtime.
In 2021, as our traffic grew almost 100%, the cost of storing data became untenable. Our engineers worked on an incremental way to eventually realize almost $30000 in savings per month.
If projects like the ones listed above excite you, the Distributed Systems engineering team will be a great fit.
We're Looking For Someone Who Has
We have openings across multiple distributed systems teams. We're looking for engineers who have:
A strong grasp of computer science fundamentals when it comes to dealing with distributed systems and networks. You'll routinely run into issues where "one in a million" chances actually happen in production
A knack for problem-solving and thinking from first principles. You don't shy away from any problem, no matter the scale or impact
A bias towards shipping early and iterating. We believe in making small incremental changes to existing systems instead of large multi-quarter undertakings
Experience building distributed systems or is eager to build that skillset
Additional Resources
Engineering Life Page
Tracking events at millisecond granularity
Ensuring Data Consistency Across Replicas
Saving $30000 a month by improving Garbage Collection
Strategies For Effective Data Compaction
Monitoring Apache Kafka with JMX Exporter and Kafka Exporter
Resharding petabytes of data to improve performance for our largest customers
#LI-RemoteCompensation
The amount listed below is the total target cash compensation (TTCC) and includes base compensation and variable compensation in the form of either a company bonus or commissions. Variable compensation type is determined by your role and level. In addition to the cash compensation provided, this position is also eligible for equity consideration and other benefits including medical, vision, and dental insurance coverage. You can view our benefits offerings here.Our salary ranges are determined by role and level and are benchmarked to the SF Bay Area Technology data cut released by Radford, a global compensation database. The range displayed represents the minimum and maximum TTCC for new hire salaries for the position across all of our US locations. To stay on top of market conditions, we refresh our salary ranges twice a year so these ranges may change in the future. Within the range, individual pay is determined by experience, job-related skills, qualifications, and other factors. If you have questions about the specific range, your recruiter can share this information.Mixpanel Compensation Range$229,500—$280,500 USDBenefits and Perks
Senior Software Engineer, Distributed Systems at Mixpanel