Letzte Woche bin ich auf eine sehr interessante Präsentation von Twitter gestoßen, die ein paar Zahlen aus deren Ökosystem preisgibt. Wenn man die sich so anschaut, kann man nur sagen: wow!
Vor allem die technischen Anforderungen übersteigen bei weitem das Vorstellungsvermögen selbst von IT Spezialisten – sofern man solch große Systeme noch nie gesehen hat. Doch, kommen wir zu den Fakten:
Twitter ist ein sog. Microblogging Dienst, der Kurznachrichten (Tweets) von bis zu 140 Zeichen zulässt. Hat man vorher per RSS bei Blogs mitgelesen, ist man bei Twitter ein Follower, genausogut kann man aber auch selbst Follower haben. Loggt man sich bei Twitter ein, so sieht man seine Timeline, also alle Tweets, die man selbst und die Leute, denen man folgt, abgesendet haben. Man könnte einen Tweet als eine Art SMS an alle meine Freunde sehen.
Klingt erstmal von den Daten her nicht viel und man könnte meinen, dass die anfallende Menge locker von ein paar Servern abgefangen werden kann. Bedenkt man aber, dass Twitter derzeit ca. 150 Millionen registrierte User hat, welche am Tag ca. 70 Millionen Tweets (ca. 800/Sekunde) hinterlassen, dann sieht die Welt schon etwas anders aus. Das tägliche Datenvolumen, welches alleine durch die Tweets erzeugt wird, umfasst derzeit um die 12 Gigabyte (800 Tweets / s = 160Kb/s = 9MB/h = 12GB / 24h). Täglich kommen ca. 8 Terrabyte an Daten zusammen. Zum Vergleich: Die Börse generiert am Tag ca. 1Terrabyte an Daten.
Für die Relationen zwischen den Usern (Following) kommt flockdb zum Einsatz, welches auf extrem schnelle CRUD (Create, Read, Update, Delete) Operationen getrimmt ist und vor allem sehr gut mit komplexen Datenstrukturen klar kommt – Stichwort: Joins. MySQL kommt zwar für einen Großteil der Daten zum Einsatz, kann aber sehr schlecht horizontal skalieren (Clustering) und auch nicht schnell genug neue IDs erzeugen. Die Twitter-Eigenentwicklung Gizzard stellt ein Framework für fehlertolerante und verteilte Datenbanken zur Verfügung, welches stark auf horizontale Skalierung ausgelegt ist. Gizzard ist im Prinzip ein Manager für DBMS (Database Management System), der es ermöglicht, mit sehr vielen Datastores zu arbeiten. Da dieses System selbst keine IDs erzeugen kann, hat Twitter zusätzlich Snowflake entwickelt, welches sehr viele unique IDs innerhalb kürzester Zeit erstellen kann. Die Problematik an der Stelle war, dass Tweets, die etwa zur selben Zeit erzeugt werden, auch eine ziemlich nah beieinander liegende ID erhalten sollten, da diese für die Sortierung bei Twitter und auch bei den meisten Clients verwendet wird. Um diesem Umstand gerecht zu werden, verwendet man für die IDs eine Kombination aus Timestamp, Worker-ID und Sequenz.
Doch die wenigsten nutzen ausschließlich die Twitter-Homepage. Den eigentlichen Erfolg konnte Twitter über seine sehr früh vorhandene offene API erreichen. Jedem ist es möglich, seinen eigenen Client oder sein eigenes Mashup zu generieren, wovon auch viele Leute Gebrauch machen. Und so kommt es nicht von ungefähr, dass Twitter am Tag ca. 6 Milliarden API-Aufrufe, also 70.000/s, erreichen. Interessant ist, dass Twitter im April “nur” 3 Milliarden tägliche API-Aufrufe verzeichnen konnte – Innerhalb von 5 Monaten hat sich diese also verdoppelt. Um diese Last tragen zu können hat HOSEbird, die Twitter Streaming API entwickelt, welche die komplexen Datenanfragen sowohl von den Clients als auch von Twitter selbst einfach und sehr performant abhandelt.
Wie auch Facebook kann Twitter die enormen Daten nur verarbeiten, weil es die nötigen Systeme einfach selbst schreibt. Der Benefit der Allgemeinheit dabei ist die Offenheit dieser Unternehmen, da sie fast alle dieser Entwicklungen per Open Source ins Netz stellen, damit diese auch von der Community weiter entwickelt werden können. Hier können die großen Player wie Microsoft, Apple, Oracle, SAP und co. noch viel lernen.
Aber, wohin entwickelt sich das Unternehmen Twitter bzw. was ist sein Ziel? Die derzeit 150 Millionen User sollen 6 Milliarden ansteigen, sodass jeder zweite Mensch Twitter verwendet. Sicher ein ehrgeiziges Ziel, aber bei dem derzeitigen Wachstum sollten sie zumindest nah an diesen Wert herankommen. Die Probleme, die auf dem Weg dahin liegen, sind Echtzeit, Datenbanken, Speicher, Skalierbarkeit und Effizienz. Ich wünsche ihnen dafür viel Glück 😉
via techcrunch.com