Database Systems Engineer, PIE Cassandra Storage
London, Greater London, United Kingdom
Software and Services
Apple’s Platform Infrastructure Engineering organization (PIE) is seeking experienced database systems engineers to join our Cassandra Storage team. Engineers in PIE Cassandra Storage develop and contribute to Apache Cassandra, an open source distributed database powering some of Apple's most critical internet services. You will be joining a team of experts, working at the cutting edge of modern database technology, distributed systems and storage engineering. The team's work is deployed at massive scale, serving millions of queries per second over hundreds of petabytes of data across our data-centers worldwide. It also has big impact, forming the platform upon which many iCloud and other internet services at Apple are built. In PIE, your work will benefit hundreds of millions of users and is critical to the success of some of the most visible current and future Apple features.
- Demonstrated expertise developing database systems, storage engines, distributed systems, or performance engineering.
- Experience developing critical internet services and/or platform infrastructure.
- Advanced understanding of data structures and algorithms in storage and indexing.
- Familiarity with mechanisms and algorithms for achieving consensus (Paxos, Raft, gossip, two-phase commit, etc).
- Proficient in modern Java and optionally Python.
- Experience developing software in open source communities a plus.
PIE Cassandra develops storage systems that are trusted, reliable, scalable, and fast. This work requires an innovative spirit and an extraordinary degree of care and rigor in engineering. Team members contribute to all major components of Apache Cassandra, including local query execution, persistence, replication and consensus, compaction, client and internode messaging, new feature development, and all other aspects of the database. Success in this role requires expertise in several of the following: Fundamentals of system-level hardware and networking components (storage devices and controllers, network interfaces, CPU and memory layout in server-class systems). Operating systems concepts (process scheduling, disk and network I/O, performance). Datacenter architecture (networking topologies, host placement strategies, and failure modes); design of multi-datacenter systems; failure domains; and wide-area networking. Understanding of distributed systems concepts (fallacies of distributed computing, CAP, FLP, etc). Understanding of database concepts (consistency models, isolation levels, crash and recovery semantics). Advanced concepts such as failure detection, smart clients, load balancing, request pipelining, speculation / retry policies, and operational semantics of high-throughput distributed systems. Performance engineering (design concepts, profile-guided optimization). Testing concepts (fault injection, property-based testing and model checking, workload replay, quality metrics). This role also requires excellent communication, ability to partner with our DevOps and SRE teams, and a high degree of customer focus when engaging with internal platform customers. As a distributed team, ability to work effectively with colleagues based in other locations is also essential; experience in this area is a plus. Prior experience with development of distributed databases / storage systems is recommended.
Education & Experience
BS or MS in Computer Science / related fields or equivalent work experience.
- Experience designing features in distributed storage systems from concept to execution.
- Excellent written and verbal communications skills.
- Ability to lead projects with substantial scope.
- Comfort and experience operating with a high degree of autonomy.
- Organizational acumen and ability to prioritize effort accordingly.