FAQ

Allgemein

Eine API oder Application Programming Interface ist eine Schnittstelle, mit deren Hilfe Informationen zwischen Anwendungen bzw. innerhalb einer Anwendung ausgetauscht werden können. So kommunizieren Frontend und Backend mit Hilfe einer Schnittstelle miteinander. Ebenso werden z.B. Zahlungsdienstleister wie Stripe per Schnittstelle in eine Anwendung integriert.

Als Frontend wird die visuelle Ebene einer Software bezeichnet und ermöglicht dem Nutzer auf Daten und Prozesse der Anwendung zuzugreifen. Das Frontend ist nicht smart und kann mit der Karossiere eines Autos verglichen werden. Sieht von außen schön aus, man weiß aber nicht wie viel PS das Auto tatsächlich hat.

Das Backend ist der für den Nutzer nicht sichtbare Teil im Hintergrund und bezeichnet die Datenzugriffsebene. Das Frontend hingegen bildet die Eingabehilfe für den Nutzer, um mit dem Backend zu kommunizieren. Dementsprechend ist das Backend der smarte Teil einer Anwendung, der Berechnungen durchführt und dem Frontend die benötigten Informationen zur Verfügung stellt.
Abseits der technischen Definition wird der Administrationsbereich einer Anwendung häufig als Backend bezeichnet und sorgt nicht selten für Verwirrung im Austausch zwischen Entwicklerteam und Auftraggeber.

Die Cloud bezeichnet ein riesiges Servernetzwerk. Eine Anwendung in der Cloud zu hosten bietet mehrere Vorteile. So erhöht sich beispielsweise bei einem Anstieg der Nutzerzugriffe die Rechenleistung automatisch. Dadurch wird eine hohe Performance gewährleistet ohne eigene Rechenleistung in Form von Servern vorzuhalten. Außerdem kann durch den Betrieb einer Applikation in der Cloud die Verfügbarkeit erhöht und die Ausfallwahrscheinlichkeit drastisch reduziert werden.

In einer Datenbank werden alle benötigten Daten einer Anwendung gespeichert, die vom Backend ausgelesen und ans Frontend geschickt werden.

Unter dem Abschnitt Technologien finden Sie mehr Informationen zu den von uns eingesetzten Datenbanksystemen.

Ein Framework stellt einen Basiscode zur Verfügung, der ein Rahmen bzw. ein Grundgerüst einer Anwendung darstellt. Hierdurch wird vermieden, dass ein Entwickler für eine neue Anwendung nicht jedes Mal die gleichen Funktionen programmieren muss, die sowieso benötigt werden. Somit lassen sich z.B. Datenbankabfragen viel schneller entwickeln. Ein Framework bietet also eine deutliche Zeitersparnis und steigert die Codequalität der Anwendung.

Hybride Apps werden nicht für ein bestimmtes Betriebssystem entwickelt, sondern funktionieren auf mehreren. Der Vorteil ist, dass nur eine App statt mehrere programmiert werden muss und ist in der Entwicklung somit günstiger. Besonders leistungsintensive Anwendungen kommen hier aber an ihre Grenzen und können im Gegensatz zu einer nativen App nicht ihr volles Potenzial entfalten.

Native Apps werden individuell für ein bestimmtes Betriebssystem (z.B. iOS oder Android) entwickelt. Sofern der Auftraggeber mehrere Betriebssysteme abdecken möchte, muss eine App mehrmals entwickelt werden. Das erhöht die Kosten des Entwicklungsprozesses, kann aber bei besonders leistungsintensiven Anwendungen von Vorteil sein.

Progressive Web Apps werden unabhängig von einem Betriebssystem entwickelt und über den Browser des Smartphones ausgeführt. Sie erfordern keinen Download im Store und müssen demnach auch nicht installiert werden. Im Vergleich zur mobilen Ansicht einer Website, können sie dem Startbildschirm eines Smartphones hinzugefügt werden. Dadurch kann die App Zugriff auf Funktionen des Smartphones wie z.B. Geolokalisierung, Kamera oder Mikrofon erlangen und dem Nutzer Push-Notifications senden.

Unter dem UI (User Interface) versteht man die Benutzeroberfläche, auf der Mensch und Software miteinander interagieren. Ziel ist es, dass das UI intuitiv und effizient vom Nutzer bedienbar ist.
UX (User Experience) bezeichnet hingegen das Nutzererlebnis (Verhaltensweisen, Emotionen etc.) bei der Interaktion mit der Software. Die UX kann also beim Vergleich verschiedener Nutzergruppen unterschiedlich sein und muss individuell betrachtet werden.

Entwicklungsprozess

Hinter den Begriffen CI (Continous Integration) und CD (Continous Delivery) verbirgt sich ein Prozess zur Softwareentwicklung und sorgt für eine kontinuierliche Automatisierung über den gesamten Lebenszyklus einer Applikation hinweg. Dieser Prozess ermöglicht es, mit mehreren Entwicklern an einem Projekt zu arbeiten. Neuer Code wird zunächst entwickelt, geprüft und anschließend mit dem Hauptteil zusammengeführt. Dabei können Anpassungen schneller auf eine Produktivumgebung gebracht werden.

Die Deployment Pipeline lässt sich am besten mit der Fließbandproduktion in der Industrie vergleichen. Nur dass hier Codebestandteile von verschiedenen Entwicklern zusammengeführt und automatisiert getestet werden, um anschließend schnellstmöglich als Funktionalität in die Software integriert werden zu können.

Auf dem Produktionsserver läuft die fertig entwickelte Software, die von echten Nutzern im Livebetrieb verwendet wird. Im Entwicklungsprozess werden neue Funktionen zunächst auf dem Testserver ausgerollt und erst nach erfolgreicher Abnahme auf den Produktionsserver gespielt, um Störungen und unnötige Bugs im Livebetrieb zu vermeiden.

Das Entwicklerteam speist neue Funktionen zunächst auf dem Testserver ein. Dort kann der Auftraggeber und das Team die neuen Funktionen testen und kontrollieren, um etwaige bestehende Fehler zu korrigieren oder Änderungswünsche zu äußern. Erst wenn der Auftraggeber die neu entwickelten Funktionen freigegeben hat, werden sie auf den Produktionsserver aufgespielt.

Technologien

Docker ist eine Software zur Container-Virtualisierung, mit der eine einzelne Anwendungen inklusive Bibliotheken und statischer Daten in einer Image-Datei zusammengefasst werden. Dadurch benötigen Container weniger Ressourcen als z.B. eine virtuelle Maschine und können leicht auf ein anderes System übertragen werden. Der entscheidende Vorteil liegt in der Skalierung. Sobald mehr Leistung benötigt wird, können weitere Container gestartet und ebenso schnell zurückgefahren werden. Docker eignet sich besonders gut für skalierbare SaaS-Projekte.

Außerdem kann durch die Containerisierung eine hohe Ausfallsicherheit gewährleistet werden, da einzelne Teile der Applikation im Falle eines Fehlers separat neu gestartet und verwaltet werden können.

Git ist ein Tool zur Versionskontrolle von Softwareprojekten. Hierzu wird der gesamte Code eines Softwareprojekts dezentral in einem Git-Repository bei jedem Projektmitglied hinterlegt. Dadurch kann jeder Entwickler an einer lokalen Kopie arbeiten ohne Rücksicht auf seine Teamkollegen nehmen zu müssen. Anschließend werden die einzelnen lokalen Kopien kontrolliert zusammengeführt.

JSON oder JavaScript Object Notation, ist ein standardisiertes und schlankes Datenformat, das unabhängig von einer bestimmten Programmiersprache verwendet werden kann. Dabei ist es für Menschen als auch Maschinen einfach zu lesen und zu schreiben.

MongoDB ist ein dokumentenorientiertes NoSQL-Datenbankmanagementsystem und kann Daten in einem JSON-ähnlichen Format speichern. Je nach Anwendungsfall und benötigtem Datenformat kann somit die Leistung enorm verbessert werden.

MySQL ist ein weit verbreitetes leistungsstarkes, relationales Datenbankmanagementsystem.

PostgreSQL ist ein objektrelationales Datenbankmanagementsystem und kann im Vergleich zu „klassischen“ relationalen Datenbanken wie z.B. MySQL auch komplexe Datentypen oder auch multimediale Inhalten verwalten.

Die REST (REpresentational State Transfer) API  (Application Programming Interface) ist eine Schnittstelle, die besonders in Webanwendungen weit verbreitet ist. Für die Kommunikation verwendet sie standardisierte Verfahren wie z.B. JSON oder XML.

SOAP (Simple Object Access Protocol) ist ein Netzwerkprotokoll, um Daten zwischen Systemen auszutauschen und verwendet XML als Datenformat.

XML (eXtensible Markup Language) ist ein textbasiertes Datenformat, ähnlich wie JSON und kann ebenfalls von Menschen als auch Maschinen geschrieben und gelesen werden. Dabei ist es unabhängig von einer bestimmten Programmiersprache.

Ihre Frage konnte nicht beantwortet werden? Dann schicken Sie uns eine Mail!