edgy circle

Wie integriert man eine App zuverlässig mit Social Media Plattformen?

Es werden viele Apps entwickelt, die mit Twitter-, Facebook- und Instagram-Daten arbeiten, seien es Fotos, Status-Updates oder andere Dinge. Damit das gut funktioniert, ist es wichtig eine Architektur zu wählen, die den Grundstein für eine schnelle und robuste App legt.

Wenn man eine App entwickelt, die mit Twitter, Facebook und Instagram Daten arbeitet, gibt es verschiedene Möglichkeiten das zu realisieren.

Anhand einer Beispiel App werde ich zeigen, was man beachten sollte, wenn man mit externen Daten arbeitet. Unsere App zeigt den BesucherInnen Fotos, die über ein bestimmtes Schlagwort auf Twitter oder Instagram gefunden wurden. Die BesucherInnen können dann über diese Fotos abstimmen und ihre Stimme vergeben. Die Fotos können zusätzlich nach Beliebtheit sortiert werden. Die Beliebtheit setzt sich aus den Stimmen der BesucherInnen und der Anzahl an Retweets bei Twitter, bzw. Anzahl an Likes bei Instagram, zusammen.

Damit das alles funktioniert sieht die Architektur meist wie folgt aus: Der Besucher lädt die App in seinem Browser, die App holt sich die bereits abgegebenen Stimmen aus der Datenbank und sucht auf Twitter und Instagram nach Fotos. Wenn die Anfragen fertig sind, kombiniert die App die eigenen Daten mit den externen, bevor das Ergebnis den BesucherInnen präsentiert wird.

Abbildung 1: Die App ist direkt von externen Diensten abhängig und dadurch sehr fehleranfällig.

Eine solche Lösung ist jedoch nicht optimal, da sie stark an Twitter und Instagram gekoppelt ist. Wenn diese externen Plattformen Probleme haben, wirken sich diese auf unsere App aus. Im schlimmsten Fall sind Twitter und Instagram offline. Dadurch ist die App unbenutzbar, da sie keine Fotos finden kann.

Aber auch im besten Fall, wenn alles perfekt funktioniert, kann sich die Koppelung negativ auf die App auswirken. Jedes mal, wenn ein/e BesucherIn die App lädt, müssen im Hintergrund Twitter und Instagram nach Fotos durchsucht werden. Diese Suchanfragen dauern eine gewisse Zeit und verlangsamen daher die Ladezeit unserer App.

Wenn die App viele BesucherInnen hat ist das grundsätzlich etwas gutes, in unserem Fall kann sich das aber wieder negativ auswirken. Twitter und Instragram können unsere App aussperren, wenn wir zu viele Suchanfragen stellen. Das kann leicht passieren, da wir bei jeder BesucherIn von neuem eine Suchanfrage starten.

Wie kann man das besser machen? Am einfachsten in dem man eine Architektur wählt, die nicht so stark von Twitter und Instagram abhängt.

Damit die App auch funktioniert, wenn Instagram und Twitter offline sind, müssen die Stimmen, Fotos, Likes und Retweets in unserer eigenen Datenbank gespeichert werden. Dadurch hat die App immer Zugriff auf die Daten und funktioniert auch dann, wenn die externen Plattformen offline sind.

Um die Ladezeit der App zu verbessern muss das Suchen nach Fotos in den Hintergrund verlagert werden. Im ersten Beispiel haben wir bei jeder neuen BesucherIn auch eine neue Suchanfrage gestartet. Das machen wir jetzt nicht mehr so. Stattdessen stellen wir diese Suchanfragen jetzt automatisch im Hintergrund. In Abbildung 2 sehen wir einmal die "Twitter-Suche" und einmal die "Instagram-Suche". Diese beiden Programme suchen automatisch alle 5 Minuten mit unserem Schlagwort nach neuen Fotos auf den entsprechenden Plattformen. Neu gefundene Fotos werden in unsere Datenbank gespeichert, damit die App diese den BesucherInnen präsentieren kann.

Da sich die Abstimmung aus direkten Stimmen, sowie Likes und Retweets zusammen setzt, muss man die Likes und Retweets eines Fotos regelmässig aktualisieren. Wie bei der Suche erledigen wir diese Aufgabe regelmäßig im Hintergrund. Zuständig dafür sind die beiden Programme "Twitter-Aktualisierung" und "Instagram-Aktualisierung". Sie funktionieren genauso, wie die beiden Suchprogramme. Im 5-Minuten-Takt aktualisieren sie alle bereits gefundenen Fotos in dem sie bei Twitter und Instagram nach den neuen Like- und Retweet-Werten fragen. So wird die Abstimmung aktuell gehalten und die App kann immer eine korrekte Reihenfolge anzeigen.

Abbildung 2: Die App wird von den externen Diensten entkoppelt und ist dadurch robuster.

Diese Architektur legt den Grundstein für eine schnelle und robuste App. Im Gegensatz zum ersten Versuch funktioniert die App auch, wenn Twitter und Instagram nicht erreichbar sind. In diesem Fall kommen zwar keine neuen Fotos hinzu, aber zumindest die bestehenden können ohne Probleme betrachtet werden. Gleichzeitig ist die App schnell. Wenn ein/e BesucherIn die App lädt, müssen keinen Anfragen an andere Plattformen gestellt werden; die Daten kommen nur aus der eignen Datenbank und das funktioniert blitzschnell. Zusätzlich kommt es zu keinen Problemen, wenn die App an Popularität gewinnt. Die externen Plattformen werden nicht überbeansprucht, da die Suche und Aktualisierung unabhängig von der Besucherzahl ist.

Dieses Beispiel handelt von Twitter und Instagram. Das Prinzip lässt sich aber auf alle Apps anwenden, die mit Daten von externen Diensten arbeiten. In solch einem Fall ist es wichtig eine Architektur zu wählen, die sicherstellt, dass die App auch dann funktioniert, wenn es extern Probleme gibt.

Zurück zum Blog