Geschwindigkeit als Wettbewerbsvorteil: Das leuchtet ein, aber wie optimiert man eine webbasierte Anwendung abgesehen vom Code? Usekit setzt auf Content Distribution Networks, COO Eric Fischer erklärt warum.
Von Eric Fischer, Usekit
Ein Thema, welches uns bei der Entwicklung von useKit immer wieder beschäftigt, ist die Geschwindigkeit und der Ressourcenhunger der Plattform. Wir sehen die Geschwindigkeit als einen sehr wichtigen Faktor in Bezug auf die Nutzbarkeit der Plattform und damit als einen wichtigen Wettbewerbsvorteil.
Neben dem permanenten Optimieren und Überarbeiten des Codes gehört dazu auch die optimale Verteilung von Dateien und statischen Inhalten. Als dynamische Anwendung mit einem hohen Anteil von nutzergenerierten Inhalten ist das bei uns natürlich nur ein Teil des kumulierten Traffics. Aber es hat sich gezeigt, dass man an allen Enden optimieren muss, um ein solides Ergebnis zu bekommen.
CDNs als Ausweg
Eine wichtige Frage in diesem Zusammenhang war: Wie verteilen wir statische Dateien und wie sorgen wir dafür, dass sie immer up to date sind?
Für diese Aufgabenstellung bieten sich „content distribution networks“ (CDNs) an. Diese bestehen aus einem großen Netzwerk von Servern, auf denen die Inhalte gespiegelt vorliegen. Ein „Request-Routing-System“ sorgt dann dafür, dass Anfragen immer bei Maschinen landen, die im Moment freie Ressourcen haben und möglichst in geographischer Nähe sind. Dies führt auf der einen Seite dazu, dass die Anfragen möglichst schnell beantwortet werden und auf der anderen Seite dazu, dass sie möglichst wenig Bandbreite benötigen. Für uns besteht der Vorteil darin, dass die Geschwindigkeit optimiert und die Kosten reduziert werden.
Bei unserem CDN Provider (Simplecdn) basiert das Verteilen der Datenpakete (buckets) auf den Servern auf dem Prinzip der „mirror buckets“, das heisst wir müssen die buckets nicht explizit auf den Server laden sondern die Server von Simplecdn ziehen sie direkt von unseren Servern.
Wechselnde Versionsnummern als Update-Signal
Eine weitere Schwierigkeit sind verschiedene Versionen von Dateien. Bei Updates sind nicht automatisch auch die Daten beim Nutzer up-to-date, da sie z.B. beim Nutzer gecachet werden. Für die Lösung dieses Problems verwenden wir Versionsnummern, es ändert sich die URL zu den Dateien und damit werden die neuen Versionen und nicht eine alte, gecachte, verwendet.