Erste Praxiserfahrungen mit Backend as a Service

Seite 3: apiOmat & Fazit

Inhaltsverzeichnis

Das Start-up-Unternehmen apiOmat aus Leipzig ist einer der wenigen deutschen BaaS-Anbieter, der die Daten in einem deutschen Rechenzentrum vorhält. Aber nicht nur das macht apiOmat anders als die anderen Anbieter. Wo bei den anderen ein generisches SDK pro Plattform geladen wurde, ist das bei apiOmat pro App ein für die Zielplattform generiertes SDK. Damit erspart sich der Entwickler das Erstellen von JSON aus seinen Datenklassen.

Auch dieses Unternehmen bietet ein kostenloses Einstiegspaket an, mit einer Deckelung auf 1500 aktiven Benutzern und 300 MByte Speicherplatz für Daten. Eine Weboberfläche wird zum Erstellen der Datenstrukturen genutzt. Dabei sind es hier eher Klassendesigns aus der Programmierung als ein
Tabellenwerkzeug. Ist dies erledigt, folgt das automatische Generieren der Programm-Klassen für die jeweilige Zielplattform. Damit gehen die Leipziger einen Schritt weiter als die US-Pendants, da außer einem Import der erstellten Dateien für etwa Java oder C# sonst keine Initialisierungen notwendig sind. Das heißt auch: Wenn sich das Backend ändert, bekommt der Frontend-Entwickler einfach die neu generierte Datenklasse geliefert.

Durch den etwas anderen Ansatz wird daher neben dem obligatorischen Account noch etwas mehr benötigt. Wie bei den anderen Anbietern legt man im Dashboard eine App an, danach folgt allerdings das Anlegen von Klassen – ganz so, wie es zum Beispiel in Java üblich ist. Mit der Schaltfläche "New Class" wird eine neue Klasse erzeugt, die sich per Klasseneditor einfach beschreiben lässt. Dabei gibt man die Attribute mit Namen und Datentyp an. Ist das geschehen, lässt sich die fertige Klasse freigeben beziehungsweise verteilen. Danach steht im Ribbon "SDK" der Download bereit. Für die verschiedenen Plattformen ist ein Snippet zum Starten hinterlegt. Mit dem Punkt "Download SDK" lässt sich das generierte SDK direkt downloaden. Für den beschriebenen Anwendungsfall ist hier der Kasten JS zu nutzen. Die heruntergeladene Zip-Datei ist in der Folge zu entpacken. Sie enthält die einzubindende JavaScript-Datei:

<script charset="utf-8" src="com/apiomat/apiomat.js"></script>

Zum Arbeiten mit dem Backend wird wie bei Kinvey ein Benutzer benötigt, der als Erstes definiert wird. Als Instanz von Apiomat.User() lässt sich hier der Benutzername nebst Passwort setzen. Per
Apiomat.Datastore.configure(user); ist der Anwender dem System bekannt. Jetzt lässt sich mit user.loadMe() die Verbindung zum System erstellen. Der onOK-Call wird nach einem erfolgreichen Login aufgerufen. Sollte der User nicht bekannt sein, kann man ihn einfach im onError-Callback erstellen.

Nach der Anmeldung des Benutzers lässt sich mit dem Speichern fortfahren. Dabei erstellt man eine Instanz des Objekts Apiomat.Person(), also die Klasse, die vorher im Dashboard deklariert wurde. Per Setter und Getter setzt man die Attribute. Die save-Funktion kennt die Callbacks onOk sowie onError und liefert damit das Ergebnis. Dabei hat jede Klasse automatisch einige zusätzliche Attribute wie ID oder Zeitstempel der Speicherung.

Um die gespeicherten Daten auch wieder abzufragen, wird der Aufruf von Apiomat.Klasse.getKlasse genutzt – hier im Beispiel demnach Apiomat.Person.getPersons. Als Parameter lässt sich "undefined" übergeben, damit würde man dann alle Daten bekommen, gefolgt von den erwähnten Callbacks, die die jeweilige Verarbeitung des Abfrageergebnisses übernehmen. Wenn allerdings die Abfrage filtern soll, ist statt "undefined" ein String mit einem Vergleich möglich. Vergleiche sind hierbei unter anderem:

Equals 
age == 24
NotEquals
age != 23
GreaterThan
age > 23
GreatherEqualThan
age >= 23
LowerThan
age < 22
LowerEqualThan
age <= 22
QueryDate
birthdate >= date(1347600117535)

Zusätzlich bietet apiOmat noch Module für zum Beispiel Push-Nachrichten oder Twitter-Integrationen an.

Hier geht's zum BaaS-Komplettbeispiel für apiOmat.

Das Sichern und Abrufen von Daten ist bei allen Anbietern gegeben. Auch das verwendete Beispiel der Personen-Klasse ließ sich bei jedem BaaS-Anbieter implementieren. Jedoch unterscheiden sich die Unternehmen in ihren Implementierungsansätzen. Die einen erstellen Datenstrukturen vorab und generieren Zugriffsklassen. Andere lassen den Entwickler per Key/Value-Verfahren je nach Bedarf im Code entwickeln. Böswillig lässt sich das als Vendor-Lock-in bezeichnen, denn wer zum Beispiel von Parse auf apiOmat wechseln will, muss die Backend-Funktioen neu implementieren. Generell ist aber festzustellen, dass der Aufwand, ein Backend einzubinden, mit jedem Anbieter im Vergleich zu einem händisch erstellten Backend merklich schrumpft. Allein die Serverpflege und damit verbundenen Sicherheitspatches rechtfertigen einen Ausflug in die Cloud, von Themen wie der Skalierung des Dienstes bei großem Ansturm ganz zu schweigen. Aus Entwicklersicht ist ein BaaS eine lohnende Zeiteinsparung. Außerdem erfordert es keine große Einarbeitung.

Seit Anfang 2014 sieht man BaaS auch im Enterprise-Markt wachsen – nach dem Mottto: einfaches Backend für alle Anwendungen, zentral im Unternehmen, aber bitte nicht in einer Public Cloud. Daher haben zum Beispiel Kinvey und apiOmat Enterprise-Angebote für BaaS-Systeme als On-Premise-Anwendung beziehungsweise in der Private Cloud im Portfolio.

Marcus Ross
ist Dipl.-Informatik-Betriebswirt und arbeitet als freier IT-Berater und Trainer mit den Schwerpunkten Datenbanken und Webportale. Seit 2010 widmet er sich dem Thema der mobilen Cross-Plattform-Entwicklung und ist zudem PhoneGap-Comitter.