Amazon Web Services über ein SDK nutzen Einfacher Zugriff auf Cloud-Dienste

Ein Gastbeitrag von Dr. Veikko Krypczyk

Anbieter zum Thema

Developer können dank der Cloud spezielle Funktionen und Services nutzen, deren Eigenentwicklung nicht möglich oder sehr aufwändig wäre. Ein Software Development Kit für die jeweilige Programmiersprache hilft bei der Integration ins eigene Softwaresystem.

Das Dashboard von AWS – hier zur Einrichtung des Cloudspeicherdienstes S3.
Das Dashboard von AWS – hier zur Einrichtung des Cloudspeicherdienstes S3.
(Bild: Dr. Krypczyk )

Der Trend zur Cloud-Migration ist ungebrochen. Auch für die Softwareentwicklung führt dieses zu erheblichen Änderungen in der gesamten Softwarearchitektur im Allgemeinen und bei der Umsetzung der Applikationen im Speziellen. Services und Funktionen, die über die Cloud bereitgestellt werden, sind beispielsweise Rechenleistung, Datenbankspeicher unterschiedlicher Arten und Ausprägungen, KI-Dienste und komplette Softwarelösungen.

Die Anwendungsmöglichkeiten von Cloud-Services sind sehr umfangreich und bieten Lösungen für ein sehr breites Spektrum an Anforderungen für die unterschiedlichsten IT-Systeme der betrieblichen Praxis. Viele Cloud-Dienstleistungen haben bestehende Technologien, welche bisher On-Premises, d.h. in den eigenen „Räumlichkeiten“ bzw. lokal umgesetzt wurden, teilweise oder vollständig abgelöst. Dazu gehören beispielsweise alle Services rund um die Speicherung von Unternehmensdaten.

Datenbanken aller Art von relational bis NoSQL und jeglicher Größe können über flexible Cloud-Service bereitgestellt werden. Dabei kann die Datenbank vollständig auf dem Weg der Konfiguration über ein Web-Interface ausgewählt, konfiguriert und in kürzester Zeit betriebsbereit geschalten werden. Es entfallen die aufwändigen Tätigkeiten der Wartung der Hardware und der Pflege der notwendigen Systemsoftware.

Sicherungen (Backups), die Wiederherstellung von Daten nach einem Fehler oder das Rollback – aus welchen Gründen auch immer – lässt sich mit wenigen Schritten erledigen. Je nach Entwicklung des Bedarfs kann die Größe und Verfügbarkeit der Datenbank in kürzester Zeit den aktuellen Bedürfnissen angepasst werden. Nutzer der Datenbank müssen darüber hinaus auch nicht über umfassende Spezialkenntnisse verfügen, um diese zu betreiben.

Statt hoher Fixkosten für Anschaffung, Bereitstellung, Wartung usw. werden vom Cloud-Dienstleister auch nur die Kosten der tatsächlichen Inanspruchnahme berechnet, was langfristig und in den meisten Fällen zu einer Kostenreduktion – unter Beachtung aller anfallen Positionen – führen dürfte. Insbesondere entfallen die Fixkosten für die Anschaffung und Bereitstellung.

Servicemodelle für Cloud-Computing.
Servicemodelle für Cloud-Computing.
(Bild: Dr. Krypczyk )

Je nachdem, welche Teile eines komplexen Informationssystems von der lokal betriebenen Infrastruktur in die Cloud verschoben wird, unterscheidet man die im vorangestellten Bild gezeigten Servicemodelle: Infrastruktur-, Platform- und Software-as-a-Service.

Neben Technologien, welche sich zunehmend von einer lokalen IT-Infrastruktur hin zur Nutzung in die Cloud verlagern, gibt es auch Technologien, welche erst durch die Bereitstellung über große IT-Service-Dienstleister möglich werden. Dazu gehört beispielsweise das gesamte Spektrum der KI-Dienste. Algorithmen und Methoden der Künstlichen Intelligenz basieren auf …

  • einem Zusammenspiel von komplexen und komplizierten Algorithmen,
  • der Verfügbarkeit ausreichender Rechenleistung und
  • dem Zugriff auf umfassende Datensätze, um beispielsweise die zugrunde liegenden Modelle trainieren zu können.

Alle drei Aspekte lassen sich über eine lokale IT nur bedingt oder gar nicht abdecken. Für die Entwicklung von Modellen, Algorithmen und Verfahren der KI sind umfassende Spezialkenntnisse aus den unterschiedlichsten Fachbereichen, wie Statistik, theoretische Informatik und Mathematik, notwendig. Der dafür notwendige Aufwand dürfte sich in den wenigsten Anwendungsfällen aus wirtschaftlicher Perspektive lohnen, wenn man auf eine vollständige Eigenentwicklung setzt.

Ebenso dürften lokale Systeme mit der dafür notwendigen Rechenpower überfordert sein. Für das Training der Modelle sind umfassende Datensätze notwendig, welche auch nicht immer vorhanden sind. KI-Dienste, zum Beispiel Bilderkennung, Textanalyse, Sprachübersetzung, Chat-Boots usw. welche als Cloud-Service angeboten werden, lassen sich wie eine Blackbox nutzen. Über definierte Schnittstellen werden die Daten an den Service übergeben, der Dienst generiert die Ergebnisse und liefert diese an den aufrufenden Client zurück.

Dieses Modell macht es möglich, dass KI-Dienste in sehr unterschiedlichen Anwendungen eingesetzt werden können. Typisch ist beispielsweise die Nutzung einer Sprach- oder Bilderkennung in einer mobilen App. Diese muss lediglich mit dem Cloud-Dienst über eine Schnittstelle kommunizieren. Gleiches gilt beispielsweise auch bei der Nutzung von NoSQL-Datenbanken oder anderer umfassender IT-Services.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Auf diese Weise ist es möglich, komplexe IT in vielfältiger Form für eine einfache und vor allen leichtgewichtige Nutzung verfügbar zu machen. Bekannte Cloud-Dienstleister und damit Marktführer, welche jeweils ein sehr umfassendes Angebot für die Integration in die eigene Software bereitstellen, sind beispielsweise Google Cloud Platform, Amazon Web Service und Microsoft Azure.

Die Entwickler-Perspektive

Die Möglichkeiten und auch die Anforderungen der Softwareentwicklung verändern sich durch die Nutzung der Cloud. Um die Dienste nutzen zu können, sind folgende Voraussetzungen zu erfüllen:

  • Kenntnis über die Funktionsweise und die Leistungen des gewünschten Service
  • Einrichtung des Dienstes über das Online-Dashboard des Cloud-Anbieters
  • Gewährleistung des Zugriffs über den gewählten Mechanismus der Authentifizierung
  • Zugriff über die Schnittstelle.

Betrachten wir diese Aspekte im Einzelnen. Als Entwickler muss man über Basisfunktionen des betreffenden Cloud-Service Bescheid wissen. Folgende Fragen können eine Orientierung geben:

  • Welche Leistungen werden angeboten?
  • Wie passen diese zu den Anforderungen des geplanten IT-Systems?
  • Welche Daten sind zu übermitteln?
  • Wie erfolgt die Nutzung?
  • Welche Einschränkungen gibt es zu beachten?

Aus diesen Informationen lässt sich dann das Konzept für die Nutzung des Cloud-Dienstes ableiten. Bevor ein konkreter Dienst genutzt werden kann, muss dieser konfiguriert werden. Dieses geschieht in der Regel komfortabel über ein Online-Dashboard. In diesem Zusammenhang wird auch der Weg der Authentifizierung der Client gegenüber dem Cloud-Dienst festgelegt, beispielsweise mittels eines eindeutigen Tokens oder über die Nutzung einer 2-Faktor-Authentifizierung.

Der Zugriff auf den Cloud-Dienst erfolgt dann aus dem Quellcode der betreffenden Anwendung. Idealerweise gibt es dazu ein Software Development Kit (SDK), welches auf die spezifischen Belange der betreffenden Programmiersprache zugeschnitten ist. Das SDK stellt eine Bibliothek bereit, welches bei Beibehaltung und Nutzung der bekannten Syntax und Vorgehensweise des Entwicklungsansatzes einen Teil oder die komplette Nutzung des betreffenden Cloud-Service erlaubt.

Gegenüber einer generischen Schnittstelle, zum Beispiel auf der Basis von HTTPS und REST, ist die Verwendung eines SDK deutlich einfacher. Jedes der Entwicklungssysteme, jede Programmiersprache und jeder Cloud-Service erfordert ein spezielles SDK. Diese werden dabei von den unterschiedlichsten Quellen bereitgestellt, konkret dem Cloud-Dienstleister, den Herstellern der Entwicklungssysteme, Drittanbietern und der Community.

Nutzung des Amazon Web Service mit Appercept SDK für RAD Studio

Beispielhaft wird die Nutzung des bekannten Amazon Web Service (AWS) aus der eigenen Applikation mit Hilfe des Appercept SDK aus RAD Studio bzw. Delphi vorgestellt. Aus dem Delphi-Quellcode können dabei über eine sehr einfach gehaltene Programmierschnittstelle ausgewählte Services von AWS genutzt werden. AWS bietet viele Dienste, von der Speicherung und Orchestrierung Daten aller Art und Umfangs bis hin zu KI-Diensten, welche in den unterschiedlichsten Apps eingesetzt werden können. Typische und häufig genutzte Services sind der Speicherdienst (S3) und der Versand von Benachrichtigungen (SNS).

Zusammenspiel von App, Cloud-Service, Softwareentwicklung und Administration.
Zusammenspiel von App, Cloud-Service, Softwareentwicklung und Administration.
(Bild: Dr. Krypczyk )

Dieses SDK stellt nicht nur die APIs als direkte Aufrufe zur Verfügung, sondern bietet auch viele einfach zu verwendende Konstrukte und Datenstrukturen, so dass die gängigsten AWS-Operationen direkt und ohne viel spezifischen Quellcode schreiben zu müssen, genutzt werden können. Das Zusammenspiel der lokalen Software und des Cloud-Services in Verbindung mit den dabei entstehenden Aufgaben für den Entwickler kann man anhand des Bildes vorne erklären.

Die Aufgabe der Softwareentwicklung ist es die Anwendung (App) für das gewünschte Zielsystem bereitzustellen. Im Beispiel wird dieses hier mit Hilfe der integrierten Entwicklungsumgebung Delphi realisiert. Ein Teil der Funktionalität (siehe oben) kann dabei über die Nutzung von Cloud-Services realisiert werden. Vor der Nutzung muss der Dienst über das Netzwerk mit Hilfe eines Dashboards konfiguriert werden. Stellvertretend ist der unten gezeigte Speicherdienst S3 von AWS genannt.

Das Dashboard von AWS – hier zur Einrichtung des Cloudspeicherdienstes S3.
Das Dashboard von AWS – hier zur Einrichtung des Cloudspeicherdienstes S3.
(Bild: Dr. Krypczyk )

Der Zugriff auf die Cloud-Services erfolgt dann über ein spezialisiertes SDK, beispielsweise das hier erwähnte Appercept SDK. Dieses erleichtert die Arbeitsweise des Entwicklers erheblich. Die über die Cloud bereitgestellten Dienste sind dabei oft technischer Natur. Deren Administration wird im Sinne eines externen Managements an den Cloud-Dienstleister ausgelagert.

Alle Aufgaben der Bereitstellung und Wartung des Dienstes werden damit ausgelagert. Als Entwickler kann man sich daher direkt auf die Geschäftslogik konzentrieren. In einem Blogbeitrag von Embarcadero ist die konkrete Vorgehensweise zur Nutzung der AWS Cloud mit Hilfe des Appercept SDK aus RAD Studio bzw. Delphi beschrieben. Dort gibt es auch einen Cheat Sheet zum Download für erste Schritte in der Praxis.

Fazit

Cloud-Services haben heute einen festen Platz bei der Realisierung der funktionalen Anforderungen eines Softwaresystems. Sie ermöglichen es den Entwicklern leistungsfähige Features in die eigene Anwendung zu integrieren. Über ein spezifisches SDK ist die Nutzung des Cloud-Dienstes ebenso einfach, wie die Verwendung einer anderen Programmierbibliothek. Der Service wird dabei remote konfiguriert und an die Anforderungen des Softwaresystems in Leistung und Funktionsumfang angepasst.

(ID:48413058)