Software Engineer, Distributed Systems, Quicksilver
- London, United Kingdom
About the Department
We also build and run the internal tools that builds and runs our software. The Engineering Team is split into two groups: one handles product development and the other handles operations. Product development covers both new features and functionality and scaling our existing software to meet the challenges of a massively growing customer base. The operations team handles one of the world’s largest networks with data centers in 102 cities worldwide.
What you'll do
Quicksilver is Cloudflare’s replicated key-value store. It replicates our data all around the world, over thousands and thousands of servers and over 120 data centers. It handles all kinds of network conditions and is queried multiple times whenever a request crosses our network. In this role, you can expect to see challenges like unexpected network issues, hardware failures, kernel bugs and still have to deliver the data to the edge in a fast and reliable way. Along with the rest of the team, you will own and support the whole stack: the code base, the unit and integration test, deployment and rollback plans, operations, monitoring, alerting and debugging. Quicksilver is written in Go and C for the storage engine, uses protobuf and our clusters have to deal with an average of 10 million read requests a second. If working at this scale excites you and you are intrigued by very tricky bugs, rather than being scared by them, you might be a match for this role.
Examples of desirable skills, knowledge and experience
- You are someone who is comfortable chasing problems through multiple layers of our software stack.You can be flexible and you are very curious.
- You are flexible and very autonomous. You won’t be micromanaged in this role and will be looked to for thinking out of the box and coming up with simple and smart design for complex issues.
- You care about writing robust systems, code quality, performance and technical debt. You understand the trade offs that doing rigorous engineering requires.
- You have a passion for storage systems, peer to peer systems, distributed systems or simply system programming in general.
- You are pragmatic and believe in the value of design elegance -- a simple solution is often better than a more complex one.
- You equally enjoy low-level and high-level programming. You have a taste for programming languages.
- You enjoy being a part of a team that critiques each others’ designs -- you are good at taking and giving constructive criticism with a goal of producing the best solution.
- If you enjoyed what you have read so far, this is the time for you to apply!
Back to top