iCloud 2.0: CloudKit

Erste CloudKit-Implementierung mit Apache Cassandra

Probleme in der Praxis

FoundationDB als Lösung

Weitere Komponente von CloudKit als Open-Source-Projekt verfügbar

Limitierungen noch nicht beseitigt

Im Jahr 2011 stellte Steve Jobs den Nachfolger des gescheiterten MobileMe vor – ein Satz blieb bei der letzten Präsentation von Jobs im Gedächtnis: "It just works". iCloud sollte schnell und einfach Daten zwischen Macs und iOS-Geräten synchron halten und dabei für den Nutzer fast unbemerkt im Hintergrund arbeiten. Zwar war die erste iCloud-Umsetzung im Vergleich zu MobileMe ein deutlicher Schritt nach vorne – "It just works" war aber besonders bei der Umsetzung der Dateisynchronisation nicht zutreffend. Im ersten Jahr klagten Nutzer über verloren gegangene Dateien, außerordentlich langsamer Upload und Download von Dateien und vielen Verbindungsproblemen.2014 stellte Apple auf der Worldwide Developers Conference CloudKit vor – eine neue, von Apple bereitgestellte Datenbanktechnologie, welche Apple auch für Dritthersteller in den meisten Fällen ohne Mehrkosten bereitstellte. Die erste Implementierung der Dateisynchronisierung von iCloud beerdigte Apple im Oktober 2014 und migrierte diese zu CloudKit – iCloud Drive war geboren und die Umsetzung erwies sich als erheblich stabiler und schneller als die 2011 erschienene Lösung. Apple nutzt CloudKit für diverse weitere eigene iCloud-Dienste: Die iCloud Photo Library wie auch Nachrichten, Erinnerungen und Notizen synchronisieren über CloudKit.Für die erste CloudKit-Umsetzung verwendete Apple Apache Cassandra – dies führte aber zu einigen Skalierungsproblemen: So können nur einzelne Datensätze gleichzeitig innerhalb eines logischen Aufteilungsbereiches modifiziert werden, was in der Praxis zu Geschwindigkeitsproblemen führte. Außerdem musste Apple die Zahl der Datensätze beschränken, wenn mehrere Nutzer sich einen Aufteilungsbereich teilen wollten – ein praktisches Beispiel hierfür sind geteilte Notizen über iCloud.Synium, Betreiber von MacTechNews, setzt in den Apps MacStammbaum und MobileFamilyTree ebenfalls CloudKit zum Synchronisieren und Teilen von Stammbäumen ein. Durch die Limitierungen der CloudKit-Grundlage Cassandra war Apple gezwungen, die Anzahl von Datensätzen in Aufteilungsbereichen auf 5.000 zu beschränken, wenn mehrere Nutzer darauf Zugriff haben. Dadurch ist es derzeitig nicht möglich, mit anderen Nutzern an Stammbäumen zu arbeiten, die über mehr als 5.000 Personen verfügen.Auch Apple stößt bei eigenen Diensten schnell an dieses Limit: So ist es zum Beispiel nicht möglich, einen Foto-Stream mit mehr als 5.000 Bildern mit anderen Nutzern zu teilen.2015 kaufte Apple das Unternehmen FoundationDB, welches im Jahr 2009 gegründet wurde. Laut einem von Apple und FoundationDB publizierten Dokument ist Apple derzeit im Prozess, Cassandra durch FoundationDB zu ersetzen und CloudKit auf die neue Technologie umzustellen . FoundationDB soll laut Apple die Nadelöhre von Cassandra beheben – schon im April 2018 veröffentlichte Apple FoundationDB als Open-Source-Projekt Apple hat nun den FoundationDB Record Layer auf GitHub als Open-Source-Projekt veröffentlicht – hierbei handelt es sich um ein Java-basierendes API, welches Apple zur Steuerung und Verwaltung der FoundationDB-Datenbanken selbst einsetzt.Der Record Layer ist dafür verantwortlich, Datenbank-Schemas und Datenbank-Indexe zu verwalten und komplexere Anfragen an die FoundationDB-Datenbank weiterzuleiten. Apple gibt an, dass FoundationDB und der FoundationDB Record Layer bei Apple für die Verwaltung von Milliarden Datenbanken von hunderten Millionen Kunden eingesetzt wird.Derzeit ist noch nicht klar, ob Apple schon die gesamte CloudKit-Infrastruktur migriert hat. Im Oktober 2016 reichte Synium bei Apple ein Feature-Request bezüglich der Limitierungen beim Teilen von Datenbanken auf 5.000 Einträge ein – dieser wurde vor wenigen Tagen als Abgeschlossen markiert. Ein Test ergab allerdings, dass derzeit die Limitierung auf 5.000 Einträge noch besteht – entweder wird Apple dies in einer neuen CloudKit-Version zur WWDC 2019 aufheben oder nach und nach Nutzer auf die neue, auf FoundationDB basierende Lösung umstellen.