Apple

Apple

Atlanta, GA

Apple Cloud Services - Database Systems Engineer (Cassandra Storage)

Apple’s Cloud Services organization is seeking expert database systems engineers to join our Cassandra Storage team! Engineers in ACI 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 specialists, working at the groundbreaking of modern database technology, distributed systems and storage engineering. The team's work is deployed at extensive scale, serving millions of queries per second over hundreds of petabytes of data across our data-centers worldwide. It also has huge impact, forming the platform upon which many iCloud and other internet services at Apple are built. In Apple Cloud Infrastructure, your work will benefit hundreds of millions of users and is critical to the success of some of the most transparent current and future Apple features!

Apple Cloud Infrastructure 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). Sophisticated 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 large degree of customer focus when engaging with internal platform customers. As a distributed team, ability to work optimally with colleagues based in other locations is also crucial; experience in this area is a plus. Prior experience with development of distributed databases / storage systems is recommended.