Senior Software Engineer, Distributed Systems
Mixpanel, San Francisco, CA, United States
We are actively recruiting for multiple Software Engineers across different levels for our org!
About the Role
Mixpanel is powered by a custom distributed database. This system ingests more than 1 Trillion user-generated events every month while ensuring end-to-end latencies of under a minute and queries typically scan more than 1 Quadrillion events over the span of a month. As our existing customers grow in volume and we add new ones, we expect this growth in traffic to continue. The Distributed Systems engineering teams are responsible for adding new capabilities and ensuring the smooth operation of the underlying systems.
Responsibilities
Mixpanel's infrastructure runs on Google Cloud Platform. We rely on Kubernetes and Docker for orchestration and containerization of our services. We primarily use Golang for writing services and all internal communication happens via GRPC. We use a combination of C and C++ wherever Golang doesn't meet our performance goals.
As an engineer on the Distributed Systems teams, you'll be responsible for:
- 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
A typical project requires a thorough understanding of how not just your service works but also how it interacts with other components. Here are some projects we've worked on in the past to give you an idea of what to expect:
- 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.
- 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.
- 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.
- A knack for problem-solving and thinking from first principles.
- A bias towards shipping early and iterating.
- Experience building distributed systems or is eager to build that skillset.