Aspekte von mobilen Architekturen

9. Mai 2011

Der Markt für mobile Clients, den Apps für Smartphones und Tablet PCs, boomt und viele stehen vor der Entscheidung eine bestehende Anwendung in Bestandteilen oder vollständig auf einer mobilen Plattform zur Verfügung zu stellen.

Doch neben der reinen Portierung der eigentlichen fachlichen Inhalte und der Anpassungsarbeiten für die jeweilige mobile Plattform ergeben sich hinsichtlich der Client-Architektur und der Anbindung an ein ggf. vorhandenes Backend-System einige neue Herausforderungen:

  • Man bewegt sich außerhalb der physikalisch und logisch gesicherten Grenzen des Unternehmens
  • Es muss stets mit einer nicht vorhandenen bzw. eingeschränkten Konnektivität des Clients gerechnet werden
  • Es existieren ggf. bei öffentlichen Anwendungen auf einmal eine Vielzahl von Clients, die gleichzeitig bedient werden müssen
  • Eine bestimmte Software-Version bei allen Clients kann nicht sichergestellt werden

MobileAspekte

 

Diese Herausforderungen bedeuten, dass man hinsichtlich der Client- und Backend-Architektur bei mobilen Clients einige neue oder vorhandene Aspekte eindringlicher beachten muss.

Die im nebenstehenden Diagramm aufgeführten Themengebiete geben einen Anhaltspunkt, welche Dinge beim Design eines mobilen Clients eine gesonderte Rolle spielen und daher ausführlicher betrachtet werden sollten.

 

Lokale Datenhaltung

Eine mobile Anwendung verfügt nicht immer über eine Datenverbindung und diese kann während der Laufzeit unterbrochen werden. Deshalb ist beim Design der Datenhaltung zu entscheiden, ob man seine Daten vollständig oder partiell lokal speichern möchte und diese dann zu einem gegebenen Zeitpunkt mit dem Backend-System synchronisiert.

Gerade für Anwendungen die große Datenmengen (z.B. multimediale Daten, wie Bilder, Videos usw.) anzeigen oder eine Liste von Daten beim Starten präsentieren (z.B. News-Liste) sind darüber hinaus sinnvolle Caching-Mechanismen zu berücksichtigen. So ist es zur besseren Usability oft besser zunächst einmal alte Daten anzuzeigen und in einem Hintergrund-Prozess diese zu aktualisieren, anstatt den Benutzer warten zu lassen bis die Datenliste vollständig neu vom Backend-System angefordert wurde. Auch bedingen mache Navigationskonzepte und das Lifecycle-Management einer mobilen Anwendung die Verwendung von lokalen Daten-Caching. Damit wird verhindert, dass nicht bei jedem Kontextwechsel die Daten nochmals vom Backend-System neu angefordert werden müssen. Die Caching-Mechanismen beziehen sich aber nicht nur auf das Vorhalten der bereits einmal gelesen Daten. Intelligente Caching-Verfahren treffen eine Vorhersage, welche Daten als nächstes vom Benutzer benötigt werden könnten und beschaffen diese Daten im Hintergrund zur aktuellen Verarbeitung.

Diagnose

Bei einer mobilen Anwendung, gerade wenn man diese öffentlich zur Verfügung stellt, ist es wichtig Informationen über die Nutzung von Systemteilen zu sammeln. Da man in der Regel bei einer App kein direktes Feedback von den Endbenutzern erhält, sollte man solche Monitoring-Funktionen nicht vernachlässigen. Die gesammelten Informationen liefern dann wichtige Ausgangsdaten für die Weiterentwicklung der mobilen Anwendung oder einen Anhaltspunkt für fehlerhafte Funktionen. Für solche Monitoring-Funktionen können eigene Web-Services entwickelt oder auf Standard-Verfahren wie Google Analytics (http://code.google.com/intl/de/mobile/analytics/docs/) zurückgegriffen werden, wo dann das entsprechende Auswertungs-Front-End schon direkt zur Verfügung steht.

Weitere wichtige Komponenten für eine mobile Anwendung sind geeignete Funktionen um ein Fehler-Logging lokal durchzuführen. Wegen der mangelnden oder nicht vorhandenen Datenverbindung ist die lokale Sammlung der Fehlerinformationen mit anschließender Synchronisation einem direkten Fehler-Logging über einen Web-Service vorzuziehen. Wichtig ist bei den Fehlerinformationen, dass alle Mobile-spezifischen Informationen wie Gerät, Betriebssystem-Version und Version der mobilen Anwendung mit übertragen werden.

Security

Mit mobilen Clients bewegt man sich außerhalb der physikalischen und logischen Grenzen des Unternehmensnetzwerks, so dass die normal üblichen Authentifizierung- und Autorisierungsverfahren oft nicht einsetzbar sind oder einfach den Anforderungen nicht entsprechen. Bei der Planung und Konzeption einer mobilen Anwendung muss man daher oft die Komponenten für die Zugangsverwaltung und die Berechtigung neu entwickeln. Lösungen bieten hier Federated Identity Management und Standard-Authentifizierungsprotokolle wie OAuth. Dieses Thema ist hinreichend komplex und sollte bei der Umsetzung eines mobilen Clients nicht unterbewertet werden.

Backend-Services

Im Bereich der Backend-Services sind bei der Entwicklung einer mobilen Anwendung auch etwaige Änderungen notwendig. Da im Gegensatz zu einem normalen Client bei einem mobilen Client, der öffentlich verfügbar ist, die Anzahl der Web-Service-Aufrufe nicht genau planbar ist, erhöhen sich die Skalierungs-Anforderungen an mein gesamtes Backend-System. Ein weiterer Unterschied zum Einsatz in der nicht mobilen Welt ist die Tatsache, dass eine Softwareverteilung an alle Clients nicht gewährleistet werden kann. Dies bedingt das die Versionisierung der Backend-Schnittstellen nun eine größere Rolle spielt. Nach dem Motto “Never break a valid contract” müssen daher Mechanismen zur Abwärtskompatibilität aller Backend-Schnittstellen geschaffen werden.

Wegen der oft kleineren Datenübertragungsraten im mobilen Umfeld ist darüber hinaus bei den Backend-Services ein kritischer Blick auf die Übertragungsprotokolle und Datenvolumina pro Zugriff zu werfen. Hier sind ggf. Anpassungen notwendig, da bei mobilen Clients der Backend-Zugriff aus Performance-Gründen meistens zunächst aus einer Datenliste mit anschließendem Nachlesen der Datendetails besteht.

Fazit

Da die Entwicklung für mobile Geräte noch eine recht junge Disziplin ist, müssen wir erst lernen mit diesen Dingen umzugehen und es benötigt noch etwas Zeit bis sich Best Practice Pattern herauskristallisieren. Aber auch die Plattformen werden zukünftig hier sicher eine verbesserte Unterstützung anbieten.