Architektur eines Cloud-basierten Cross-Plattform-Backend-Systems für mobile Anwendungen

5. Juni 2014Jürgen Leitner

Bei der Umsetzung mobiler Unternehmensanwendungen in Form von Apps stehen Entwickler oftmals vor der Herausforderung, eine geeignete Technologie oder Plattform für die Erstellung eines App-Backend-Systems zu wählen. Das Backend muss in den meisten Fällen von unterschiedlichen App-Plattformen aus konsumiert werden können. Häufig werden diese serverseitigen Komponenten in der Praxis sogar komplett in Eigenregie aus dem Boden gestampft und somit wird das Rad neu erfunden. Das ist in der Regel zeit- und kostenintensiv, führt rein aus Sicht der Architektur oft zu Insellösungen und berücksichtigt häufig funktionale Anforderungen wie Skalierbarkeit oder Verfügbarkeit nicht in geeignetem Maße.

In diesem Beitrag möchte ich auf eine Cross-Plattform-taugliche Architektur auf Basis ausgewählter High-Level Platform-as-a-Service (PaaS)-Dienste von Microsoft Azure eingehen, um unter deren Zuhilfenahme mit überschaubarem Aufwand ein hochskalierbares und hochverfügbares mobiles Backend zu konstruieren.

Ausgehend vom Architekturdiagramm (siehe Abbildung 1) skizziere ich eine Softwarelösung und stelle die einzelnen Komponenten kurz näher vor.

adesso_x-Platformadesso_x-PlatformAbbildung 1: Architektur der Lösung

Bei der dargestellten Lösung sollen Daten einer intern bereits verfügbaren Unternehmensanwendung in einer neu zu schaffenden mobilen Lösung verarbeitet werden und die entsprechende neue Anwendungslogik in skalierbarer und ausfallsicherer Form bereitgestellt werden. Als Client-Anwendungen kommen eine iOS respektive eine Android App zum Einsatz, welche auch von sogenannten Push Notifications zur Benachrichtigung der Benutzer Gebrauch machen. Aus Sicherheitsgründen dürfen die Apps nicht direkt auf die Unternehmensanwendung bzw. die Datenbanken zugreifen.

Nachdem die Client-Anwendungen nativ implementiert werden und Mehrfachimplementierung von dem Programmcode vermieden werden sollten, empfiehlt es sich in der Regel, die Geschäftslogik in ein Backend-System auszulagern. In Bezug auf das oben ersichtliche Beispiel ist die Wahl für die Umsetzung des Backends auf die Verwendung von mehreren Microsoft Azure Services gefallen, wobei das sogenannte Mobile Service den Kernbestandteil bildet. Dieses kann der Cloud-Kategorie „mobile Backend-as-a-Service“ zugeordnet werden und bietet primär folgende Vorteile:

  • Es beschleunigt die Entwicklungszeit, da Provisionierung und Skalierung der Infrastruktur dem Provider überlassen werden
  • Patching und Updates in Bezug auf Protokolle oder Fremdsysteme (bspw. Push-Notification-Implementierung unterschiedlicher Dienste) übernimmt der Provider
  • Verwendung von einem Backend für Apps verschiedener Client-Plattformtechnologien und Zur­ver­fü­gung­stel­lung von Software Development Kits für diese Plattformen
  • Anwender profitieren vom Einsatz fertiger Lösungen speziell für die mobile App-Entwicklung wie diverse Authentifizierungs-Provider (Twitter, Facebook, Google, Active Directory, …), einem zentralen Push-Dienst, etc.

Folgende Azure-Dienste werden in der oben dargestellten Lösung verwendet:

  • SQL Database:
    Microsoft Azure SQL Database stellt einen speziell für die Cloud optimierten relationalen Database-as-a-Service auf Basis von Microsoft SQL Server zur Verfügung. Hierbei sind Verfügbarkeit und Ausfallsicherheit bereits durch den Service abgedeckt und müssen nicht mehr speziell berücksichtigt werden.
  • Mobile Services:
    Microsoft Azure Mobile Services stellt die Basis für die Entwicklung eines mobilen Backend-Systems bereit. Für die Backend-Entwicklung stehen .net (basierend auf einem speziell erweiterten ASP.NET Web API) und Node.js als gleichwertige Technologien zur Verfügung. Zur Verwendung für App-Entwickler existieren unter anderem SDKs für iOS, Android, Windows Phone und Windows Store Apps.
  • Notification Hubs:
    Microsoft Azure Notification Hubs ist ein hoch skalierbarer Service zum Versand von Push Notifications an die Push-Service-Plattformen Apple Push Notification Service (APNs), Google Cloud Messaging (GCM) und Windows Push Notification Service (WNS). Dabei muss der Anwender lediglich die entsprechenden Tokens bzw. Zertifikate der jeweiligen Plattformen hinterlegen und kann mittels einheitlichem Service API den Versand über alle konfigurierten Plattformen anstoßen. Nettes Detail am Rande: Bei der Verwendung von Mobile Services ist dieser Service derzeit gratis inkludiert.
  • Service Bus Relay Service:
    Der Service Bus Relay Service ist ein probates Mittel zur Verbindung einer Cloud-Anwendung mit einem Windows Communication Foundation (WCF) Service innerhalb der Unternehmens-IT-Infrastruktur. Dadurch ist man in der Lage, eine hybride Applikation zu erstellen, wobei die Cloud-Komponente mittels sicherer Verbindung mit der on-premises WCF-Komponente kommunizieren kann ohne die Notwendigkeit, sich um Firewall-Regeln Gedanken machen zu müssen.

Für Details zu Microsoft Azure kann ich Interessierten einen Blick auf die Einstiegsseite empfehlen. Entwickler sollten sich die Dokumentationsübersicht mit Unmengen an Tutorials bzw. Beispielen und die MSDN-Seite ansehen.

Welche Technologien oder Plattformen setzen Sie für die Backend-Systeme Ihrer (Enterprise) Apps ein? Haben Sie schon Erfahrungen mit Mobile Services oder Microsoft Azure gesammelt? Ich freue mich auf Ihre Sichtweise zu diesem Thema.

Jürgen Leitner Jürgen Leitner ist Competence Center Leiter bei adesso Austria GmbH und verantwortet in dieser Funktion die Schwerpunktthemen Mobility und Microsoft. Er verfolgt seit Beginn die Entwicklungen im Public-Cloud-Umfeld und verfügt über mehrjährige Erfahrung als IT-Projektleiter und Softwarearchitekt.
Artikel bewerten:
1 Star2 Stars3 Stars4 Stars5 Stars
Loading...

Kommentar hinzufügen:

Ihr Kommentar: