Tag: Google App Engine


INSIGHTS: expressFlow – Automatisierte Prozessabläufe in der Cloud

Als Prototyp während einer Doktorarbeit an der TU Wien zum automatisierten modellieren vollständiger Workflows entwickelt, konzentriert sich das österreichische Startup expressFlow nun auf die Verarbeitung von Dateien. Dabei geht es nicht nur um das einfache Speichern und wieder Aufrufen, sondern ebenfalls um den Lebenszyklus einer Datei und ihrem Beitrag innerhalb eines Gesamtprozesses.

INSIGHTS: expressFlow - Automatisierte Prozessabläufe in der Cloud

Die expressFlow Umgebung

expressFlow existiert in seiner Form bereits seit 2009 und entwickelt sich gebootstrapped stetig voran. Dazu setzt das Unternehmen vollständig auf das Google Ökosystem und lässt die expressFlow Umgebung auf Googles Platform-as-a-Service Google App Engine laufen. Zielgruppe sind affine Cloud-Nutzer beziehungsweise ungefähr 20 Prozent der Dropbox-Nutzer.

Das Automatisierungstool wird schrittweise entwickelt und befindet sich derzeit in der ersten Entwicklungsstufe. Damit lassen sich Dateien über eine auf HTML-5 basierende Webseite hochladen. Im Anschluß erfolgt eine automatische AES-Verschlüsselung der Daten und Dokumente. Danach wird der Speicherort der Daten ausgewählt. Da expressFlow auf die Google Infrastruktur setzt, ist der primär unterstützte Speicher Google Drive. Ebenso kann aber auch Dropbox gewählt werden. expressFlow lässt sich am besten als eine Middleware für die Verwaltung und Bearbeitung von Dateien verstehen. So speichert die Plattform keine Daten permanent, sondern nur temporär, wenn an den Dokumenten gearbeitet wird. expressFlow verschlüsselt die Daten und transferiert diese auf den selbst ausgewählten Cloud Storage. Wird eine Datei geöffnet, wird sie temporär auf expressFlow zwischengespeichert, entschlüsselt und kann anschließend weiterverarbeitet werden.

In der zweiten Entwicklungsstufe soll es möglich sein, Dokumente aus einem Cloud Storage direkt zu starten. Dies soll mit einer App aus dem Google Chrome Webstore erfolgen.

INSIGHTS


In seinen ersten Ausbaustufen hilft expressFlow beim Hochladen und automatischen Verschlüsseln von Dateien zu einem selbst ausgewählten Cloud Storage Service. Der Weg zu einem automatisierten Workflow-Tool ist noch weit. Jedoch steckt in expressFlow viel Potential, wenn man bedenkt welche Möglichkeiten mit dem plattformunabhängigen Service abgebildet werden können.

So könnten sich vollständige Arbeits- und Prozessabläufe innerhalb von expressFlow abbilden lassen, indem ein Mitarbeiter A eine Datei hochlädt, Freigaben für Kollegen erteilt und Mitarbeiter B informiert beziehungsweise automatisch informieren lässt, dass dieser daran weiterarbeiten soll. Ein weiteres Szenario könnte darin bestehen, Daten über expressFlow in die Amazon Cloud hochzuladen und automatisch per MapReduce verarbeiten zu lassen.

Ein ebenfalls interessanter Ansatz, der sich in Richtung Hochverfügbarkeit beziehungsweise Multi-Vendor-Strategie bewegt, ist, die Daten anhand von expressFlow über mehrere Cloud Storage Services hinweg verteilen zu lassen. Damit würde derselbe Datenbestand synchron über mehrere voneinander unabhängige Infrastrukturen repliziert. Kann eine Datei aus Cloud Storage A nicht aufgerufen werden, da der Anbieter gerade ein Problem hat, wird diese Datei dann von dem Cloud Storage B geladen.

Download

Der INSIGHTS Bericht kann ebenfalls unter "expressFlow: Automatisierte Prozessabläufe in der Cloud" betrachtet und als PDF heruntergeladen werden.


INSIGHTS analysiert und kommentiert aktuelle Meldungen und Ereignisse von Anbietern. Sie sind auch an der Publikation von INSIGHTS Berichten interessiert, dann finden Sie hier weitere Informationen.



Die Google Cloud Platform

Google hat mit der Einführung seiner Compute Engine sein Portfolio zu einem vollständigen Cloud Computing Stack ausgebaut. Als schärfster Konkurrent gelten die Amazon Web Services (AWS), die den Markt der Infrastructure-as-a-Services mit Abstand anführen. Anders als AWS geht Google jedoch in die Breite. Und auch wenn die Anzahl der Google Cloud Services mit denen von AWS in der Masse [Vergleich] noch nicht mithalten können, finden Entwickler in Googles Portfolio jede Menge Möglichkeiten, ihre Anwendungen in der Google Cloud zu betreiben.

Die Google Cloud Plattform

Ein vollständiger Cloud Stack

Die Google Cloud setzt sich aus neun einzelnen Services zusammen und deckt den kompletten Cloud Stack, Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) und Software-as-a-Service (SaaS) ab. Dazu gehören die Google App Engine, die Google Compute Engine, der Google Cloud Storage, Google BigQuery, die Google Prediction API, die Google Translation API, Google Apps, Google Cloud SQL und Google F1.

Google App Engine

Die Google App Engine ist das Platform-as-a-Service (PaaS) Angebot von Google. Sie gehört mit der Erscheinung im Jahr 2008 zu einer der ersten PaaS am Markt und war der einzige Service der Python und Java gleichzeitig unterstützte. Die Google App Engine wurde entwickelt, um Anwendungen auch mit hoher Last oder während der Verarbeitung von vielen Daten zuverlässig ausführen zu lassen. Dazu unterstützt die Google App Engine dynamische Webdienste inkl. gängiger Web-Technologien, einen persistenten Speicher inkl. der Möglichkeit für Abfragen, Sortierungen und Transaktionen, Automatische Skalierung und Loadbalancing, eine Entwicklungsumgebung für lokale Systeme zur Simulation der Google App Engine, Warteschlangen für die Steuerung von Aufgaben die eine hohe Performance benötigten, uvm.

Für das Speichern der Anwendungen wird von der App Engine eine verteilte Datenhaltung verwendet, wobei der verteilte Speicher mit der Menge der Daten wächst.

Die Google App Engine bietet verschiedene APIs zur Arbeit mit und der Verwaltung von Applikationen. Mit dem URL-Fetch Service können Anwendungen auf andere Ressourcen wie Web Services oder Daten über das Internet zugreifen. Dabei wird dieselbe Google Infrastuktur verwendet, wie sie auch von bekannten Google Produkten genutzt wird. Mittels der App Engine Mail API sind Anwendungen in der Lage direkt E-Mails zu versenden. Per Memcache kann auf Daten zugegriffen werden, die nicht im persistenten Speicher abgelegt werden. Durch einen schnellen in-Memory Key-Value Cache ist eine Anwendung in der Lage mehreren Instanzen parallel nur temporär vorhandene Daten performant bereitzustellen. Anhand der Image Manipulation API sind Anwendungen in der Lage Bilder zu verändern.

Anwendungen können so gesteuert werden, dass sie hoch performante Aufgaben dann erledigen, wenn die Belastung durch Anfragen nicht so hoch ist, z.B. zu einer vorher definierten Uhrzeit oder Tag. Des Weiteren besteht die Möglichkeit eine Anwendung in eine Warteschleife zu legen oder sie im Hintergrund auszuführen.

Google Compute Engine

Die Google Compute Engine bietet Infrastructure-as-a-Services á la Google. Damit erhält man die Möglichkeit, virtuelle Maschinen (VM) mit dem Linux Betriebssystem auf der Google Infrastruktur, die auch von Google Mail und anderen Services eingesetzt wird, zu nutzen.

Die Compute Engine setzt auf Ubuntu als auch CentOS Linux Betriebssysteme, virtuelle Maschinen mit 1,2,4 oder 8 Kernen und 3,75 GB Arbeitsspeicher pro virtueller Instanz. Speicherarten stehen in drei Varianten zu Verfügung.

Flüchtiger Speicher: Auf jeder virtuellen Instanz befindet sich ein flüchtiger lokaler Speicher, bei dem die Daten nur während des Lebenszyklus einer virtuellen Maschinen gespeichert werden. Wenn die VM gestoppt wird, werden alle Daten gelöscht. Dennoch werden alle Daten die auf die VM geschrieben verschlüsselt abgelegt. Persistenter Speicher: Die Google Compute Engine bietet einen persistenten Speicher, der als Service (virtuelle Fesplatte) mit dem Google Storage Netzwerk verbunden ist und über dieselbe Latenz und Geschwindigkeit wie der lokale Speicher einer VM verfügt. Daten die auf diese “virtuelle Festplatte” gespeichert werden, werden automatisch über mehrere physikalische Festplatten innerhalb eines Google Rechenzentrum repliziert. Darüber hinaus können Snapshots von den Festplatten für Backup/ Restore Zwecke erstellt werden. Zudem besteht die Möglichkeit diese virtuellen Platten als Laufwerk in mehrere virtuelle Maschinen zu mounten, um davon Daten zu lesen. Wie beim lokalen VM Speicher sind auch die Daten auf den virtuellen Festplatten verschlüsselt. Google Cloud Storage: Der Google Cloud Storage existiert für Entwickler schon etwas länger. Er bietet die Möglichkeit, Daten persistent zu speichern und auf die Buckets (Ordner) innerhalb des Storage mit einer VM zuzugreifen.

Über der Google Netzwerk lassen sich die virtuellen Maschinen mit der Aussenwelt und innerhalb des Netzwerks selbst verbinden. Der Netzwerk Stack ist so aufgebaut, dass sich die virtuellen Maschinen eines Nutzers in einem isolierten Bereich befinden und von Dritten nicht ohne Weiteres darauf zugegriffen werden kann. Die virtuellen Maschinen können entweder mit statischen oder dynamischen IP-Adressen verknüpft werden, um anschließend über das Internet auf diese zuzugreifen. Über eine Firewall können die Zugriffe auf die virtuellen Maschinen kontrolliert werden.

Alle Management Tools basieren auf einer offenen RESTful API. Google plant darüber hinaus, alle verfügbaren Tools als Open Source zu veröffentlichen, um den Nutzern die Möglichkeiten zu geben, eigene Tools nach ihren Bedürfnissen zu entwickeln. Google arbeitet bereits mit ein paar Partner darunter RightScale, Puppet Labs, OpsCode, Numerate, Cliqr und MapR zusammen, die in Zukunft die Google Compute Engine unterstützen und integrieren werden und weitere Management-Kapazitäten anbieten.

Google Cloud Storage

Der Google Cloud Storage existiert für Entwickler schon etwas länger. Er bietet die Möglichkeit, Daten persistent zu speichern und auf die Buckets (Ordner) innerhalb des Storage mit einer VM zuzugreifen.

Google Cloud Storage bietet zudem unterschiedliche Einsatzszenarien. Neben der Archivierung und dem Datenbackup, lassen sich darüber hinaus Anwendungsdaten darin ablegen, um einen ortsunabhängigen Zugriff darauf zu ermöglichen. Der Zugriff auf die Daten lässt sich über Access Control Lists (ACLs) steuern.

Der Storage Service dient als grundsätzliche Basis für andere Google Cloud und Analytics Services wie der Google Prediction API und Google BigQuery Service. Zudem lassen sich darüber statische Inhalte für Webseiten ausliefern.

Google BigQuery

Google BigQuery nennt sich Googles Big Data Service und soll Unternehmen und Entwicklern bei der Analyse ihrer Daten helfen ohne die dafür notwendige Infrastruktur zu besitzen.

Da Google auf Grund der Indexierung des Webs auf Systeme für die Analyse riesiger Datenmengen angewiesen ist, wurden entsprechend bereits einige Tools entwickelt, die allerdings nur für den internen Einsatz vorgesehen sind. Aus diesen Tools wurde nun der BigQuery Service quasi abgeleitet.

BigQuery ist ein Online Analytical Processing (OLAP) System, um Datensätze mit Milliarden von Zeilen und Terabytes an Daten zu verarbeiten und zielt auf Unternehmen und Entwickler in Unternehmen ab, die mit riesigen Datenmengen (Big Data) balancieren müssen. BigQuery kann auf unterschiedliche Arten genutzt werden. Entweder mit einer Web-Oberfläche, einer REST API oder via Kommandozeile. Die Daten können zur Verarbeitung per CSV Format auf die Google Server hochgeladen werden.

Die Preise orientieren sich an der Menge der gespeicherten Daten und der Anzahl der Anfragen. Für den Speicherplatz berechnet Google 0,12 Dollar pro GB pro Monat bis zu einer maximalen Speichermenge von 2TB. Für die Anfragen werden 0,035 Dollar pro verarbeitetes GB berechnet. Die Limits liegen hier bei 1000 Anfragen pro Tag sowie 20TB zu verarbeitende Daten pro Tag. Für die ersten 100GB an verarbeitenden Daten pro Monat entstehen keine Kosten. Weitere Informationen stehen hier.

BigQuery ist nicht für die OLTP (Online Transaction Processing) Verarbeitung geeignet. Genauso wenig können Änderungen an den auf BigQuery gespeicherten Daten vorgenommen werden. Unternehmen, die eher eine klassische relationale Datenbank für OLTP benötigen, empfiehlt Google seine Cloud basierte Datenbank Google Cloud SQL, welche die volle SQL-Syntax unterstützt.

Google Prediction API

Die Google Prediction API ermöglicht den Zugriff auf Googles Algorithmen zur künstlichen Generierung von Wissen aus Erfahrung. Damit können Daten analysiert und Ergebnisse vorausgesagt werden. Anhand der Eingabe von numerischen Werten oder Text bietet die Prediction API Möglichkeiten für den Musterabgleich bzw. der musterbasierten Suche sowie dem maschinellen Lernen.

Die API kann genutzt werden, um bspw. die Gewohnheiten eines bestimmten Benutzers zu analysieren oder vorherzusagen, welche anderen Filme oder Produkte einem Benutzer vielleicht gefallen. Als weitere Use Cases nennt Google das Kategorisieren von E-Mails als Spam oder nicht Spam sowie die Analyse von positiven oder negativen Kommentaren zu einem Produkt oder anhand der bisherigen Ausgaben zu schätzen, wie viel ein Nutzer an einem bestimmten Tag ausgeben wird.

Google Translation API

Die Google Translation API ist ein Tool, mit dem Texte automatisiert von eine Sprache in eine andere übersetzt werden können. Dafür stehen der Quelltext, die Quellsprache sowie die Zielsprache, in welche der Text übersetzt werden soll. Im Prinzip handelt es sich genau um den Service, der sich hinter http://translate.google.de befindet. Mit der Translation API lassen sich eigene mehrsprachige Applikationen oder Webseiten programmatisch anbieten.

Die Google Platform Extended

Wenn man sich den Google Cloud Stack anschaut, sollte man sich ebenfalls das restliche Ökosystem anschauen. Dazu gehören Google Apps, Google Cloud SQL und Google F1.

Google Apps

Google Apps ist die webbasierte Software-as-a-Service Office & Collaboration Suite von Google. Sie umfasst in der kostenlosen Standard Edition und der Edition für Non-Profit Organisationen die Programme Mail, Kalender, Text & Tabellen, Sites, Talk und Kontakte. Die Premier- und Education Editionen verfügen zusätzlich noch über Video, Groups und APIs für Erweiterungen und die Integration in die eigene Infrastruktur sowie weitere Services von Partnern.

Mail

Google Mail verfügt je nach Edition über einen Speicherplatz von 7 GByte bis 25 GByte. Die Ablage der E-Mails erfolgt nicht klassisch in einer Ordnerstruktur, stattdessen können Labels definiert werden mit der jede E-Mail beliebig getaggt werden kann.

Auch die Art der Verwaltung einer E-Mail Kommunikation ist anders als bei herkömmlichen E-Mail Clients. Werden bei Thunderbird, Outlook etc. für jede E-Mail die hin und her geschickt wird eine separate "physische" E-Mail erstellt die dann im Posteingang und/oder Postausgang liegt, werden die E-Mails bei Google Mail in sogenannten Konversationen verwaltet. Dabei entsteht ein "Objekt" an das jede E-Mail die zu dieser Konversation (Betreff) gehört angehängt wird. Jede Benutzer der an dieser Konversation teilnimmt, erhält zur Unterscheidung eine andere Farbe.

Die Technologie des Spamfilter halte ich für einzigartig. Ich nutze Google Apps nun seit mehreren Jahren und hab in der Zeit nicht eine Spam E-Mail im Posteingang gefunden, dafür ist der Spamordner immer randvoll! Auch die Suche nach E-Mails oder Inhalten von E-Mails funktioniert sehr gut, da merkt man gut, welchen Kernbereich Google normalerweise abdeckt.

Der verschlüsselte Zugriff auf die Postfächer kann lokal von jedem Benutzer oder global über die Managementkonsole festgelegt werden. Seit kurzem ist allerdings nur noch der SSL-Zugriff möglich. Der mobile Zugriff auf Google Mail ist ebenfalls möglich. dazu sind Anwendungen für Android, iPhone, Blackberry und weitere Smartphones wie z.B. Nokia vorhanden. Migrationstools erlauben zusätzlich das Importieren von E-Mail Konten aus anderen Systemen wie Microsoft Exchange oder Lotus Notes.

Google Mail verfügt weiterhin über ein integriertes Messaging System, welches ich weiter unten für die Anwendung Talk beschreibe.

Kalender

Der Google Kalender ist vollständig mit Google Mail verknüpft. Nachdem ein Eintrag erstellt wurde, können Freunde/ Bekannte oder Mitarbeiter darüber direkt per E-Mail informiert bzw. eingeladen werden. Weiterhin können die eigenen Kalender lesend und/oder schreibend anderen Personen freigegeben werde, um ihnen den Zugriff darauf zu gewähren. Dadurch haben Kollegen z.B. die Möglichkeit die Termine eines anderen Kollegen in ihrem Kalender zu sehen und ggf. sogar zu bearbeiten.

Google Kalender ist ebenfalls mit Google Sites verknüpft, damit kann ein Kalender(eintrag) auf einer Webseite veröffentlicht werden. Kalender können darüber hinaus - z.B. für Veranstaltungen - grundsätzlich öffentlich verfügbar gemacht und in Googles Kalendergallerie aufgenommen werden.

Der mobile Zugriff ist ebenso wie bei Google Mail möglich. Zusätzlich können Kalenderbenachrichtigungen per SMS verschickt werden.

Text & Tabellen

Text & Tabellen ermöglicht das gemeinsame Bearbeiten (inkl. Versionierung) von Dateien in Echtzeit. Das beschränkt sich entweder nur auf die Benutzer in der eigenen Domain, aber auch externe Partner und Kunden können darauf den Zugriff erhalten und aktiv mitarbeiten.

Die erarbeiteten Dokumente, Tabellen und Präsentationen können anschließend z.B. auf den Webseiten von Google Sites oder im Intranet eingebettet werden. Päsentationen können über das Internet abgehalten werden, ohne dass sich die Zielgruppe am selben Ort befindet, die benötigt nur einen Browser mit aktiver Internetverbindung.

Text & Tabellen bietet bereits vorgefertigte Vorlagen für Formulare, z.B. für Umfragen oder Registrierungen die auf Webseiten verfügbar gemacht, per E-Mail verschickt oder in Dokumente eingebunden werden. Die eingegeben Daten werden dabei automatisch in einer verknüpften Tabelle gespeichert. Darüber hinaus existieren Vorlagen für Geschäftsdokumente, Visitenkarten, Briefköpfe, Zeiterfassungsformulare etc., die ebenfalls in vorhandene Dokumente integriert werden können.

Texte & Tabellen unterstützt und kann folgende Dateiformate importieren und exportieren: DOC, XLS, CSV, PPT, TXT, HTML, PDF.

Der mobile Zugriff mit Android, Blackberry oder iPhone ist ebenfalls möglich.

Sites

Mit Google Sites kann jede beliebige Art von Webseite erstellt werden, wie z.B. Seiten für das Intranet in einem Unternehmen, für Teams, Projekte, Abteilungen, Schulungen oder Wikis. Der Zugriff ist per se nur für Leute innerhalb der Domain erlaubt. Die Seiten können aber für externe Partner, Kunden ider Lieferanten zugänglich gemacht werden.

Innerhalb eine Google Sites Webseite können unterschiedliche Arten von Inhalten eingebettet werden. Dazu gehören Textdokumente, Tabellen, Präsentationen, Videos, Formulare oder Photos. Darüber hinaus ist die Google Suchfunktion vorab in jeder Site integriert, wodurch der gesamte Inhalt indiziert ist und schnell gefunden werden kann.

Talk

Google Talk ist in zwei Varianten verfügbar. Die erste ist die klassische Software, die auf dem PC installiert und von dort genutzt wird. Damit stehen auf dem PC Chat-, Sprach- und Videofunktionen zur Verfügung.

Die zweite Variante ist eine integrierte Instant Messaging Funktion innerhalb von Google Mail, mit der direkt eine Verbindung mit den Kontakten im eigenen Addressbuch oder per Mausklick auf den Absender einer E-Mail hergestellt werden kann. Vorausgesetzt, der Kontakt verfügt über ein Google-Talk Konto bzw. einen ICQ/AIM Account. Über ein zusätzliches Plugin kann das Instant Messaging um Voice- und Video-Chat Funktionen erweitert werden. Der Chat-Verlauf innerhalb von Google Mail kann dabei in einem Chat-Protokoll für jede einzelne Sitzung (pro Tag) aufgezeichnet werden. Das Protokoll wird nach dem Beenden der Sitzung wie eine E-Mail im Archiv abgelegt.

Ist man im Besitz eines Android Smartphones, kann die Chat-Funktion von Google Talk auch unterwegs genutzt werden.

Kontakte

Google Kontakte ist keine Anwendung im eigentlichen Sinne. Vielmehr hat man damit die Möglichkeit seine Kontakte in einem separaten "großen" Fenster zu verwalten. Normalerweise erreicht man die Kontakte in Google Mail über den Button "Kontakte" auf der linken Seite. Dabei werden die Kontakte dann in dem Bereich angezeigt, wo sonst die E-Mail Konversationen aufgelistet werden. Das kann auf Geräten, wie z.B. Netbooks ziemlich eng werden, wodurch das Auslagern in ein weiteres Fenster wesentlich komfortabler ist.

Google Cloud SQL

Mit Google Cloud SQL lassen sich relationale Datenbanken erstellen, konfigurieren und nutzen, die in Googles Cloud gehostet werden. Dabei handelt es sich um einen vollständig durch Google administrierten Service, der für eigene Anwendungen und Services eingesetzt werden kann.

Google Cloud SQL basiert auf der MySQL Datenbank. Damit lassen sich sämtliche Anwendungen, Daten und Services zwischen der on-Premise Welt und der Cloud hin- und herbewegen

Google F1

Google F1 ist ein relationales Datenbankmanagementsystem (RDBMS) von Google, das laut Google über umfangreiche Funktionen einer relationalen Datenbank verfügt. Dazu gehören ein festgelegtes Schema und eine parallel arbeitende SQL Query-Engine. Zudem setzt F1 auf Googles verteiltem Speichersystem auf, das sich über Google Rechenzentren erstreckt. Der Speicher wird dynamisch geteilt und unterstützt eine transaktional konsistente Replikation über mehrere Rechenzentren hinweg, wodurch Ausfälle bewältigt werden, ohne Daten zu verlieren.

Fazit

Die Amazon Web Services haben derzeit ein sehr vertikal ausgerichtetes Portfolio. Dabei konzentriert sich das Unternehmen auf den Ausbau seiner Infrastructure Services mit Mehrwert-Diensten wie bspw. Elastic Beanstalk. Beanstalk selbst ist kostenlos. Der Umsatz erfolgt mit der darunter liegenden Infrastruktur die der Kunde nutzt.

Google hingegen stellt sich breiter auf und hat in allen Cloud Bereichen, IaaS, PaaS und SaaS einen Fuß in der Tür. Der Anfang wurde mit der Google App Engine gemacht. Google ist nun einmal ein Entwickler-Unternehmen. Sie haben nie einen Hehl daraus gemacht, dass sie ihre Überkapazitäten herausgeben, damit Entwickler weltweit die Google Infrastruktur nutzen können, um Anwendungen zu entwickeln. Anschließend folgte mit Google Apps der SaaS Bereich. Dieser hat sich aus den Consumer-Produkten (Mail, Docs, usw.) abgeleitet und stellt quasi ein Best-off dieser einzelnen Services dar. Alles zusammen bildet eine Office Suite unter einer eigenen Domain. Der letzte Bereich den Google erobern will ist IaaS. Die Google Compute Engine ermöglicht das starten und betreiben eigener virtueller Maschinen auf Googles Infrastruktur. Andere Services wie Google Cloud SQL oder Google F1 gehören offiziell noch nicht in die Google Cloud Platform unter http://cloud.google.com. Allerdings ist zu erwarten, dass dies bald geschehen wird. Auch BigQuery war zunächst nur ein reines Developer Projekt, wurde nach der Beta Phase aber recht zügig zur Cloud Platform hinzugefügt.



Eine Analyse der Microsoft Windows Azure Plattform

Neben Platform-as-a-Services wie Cloud Foundry, Force.com, Google App Engine oder Red Hat OpenShift sollte man einen Service nicht vergessen: Windows Azure. Microsoft verfügt historisch bedingt über eine weltweit riesige Entwicklergemeinde, die nicht unterschätzt werden sollte. Die Microsoft Windows Azure Plattform wurde 2008 angekündigt und 2010 veröffentlicht. Seitdem hat Microsoft sein PaaS Angebot stetig um neue Funktionen erweitert.

Die Windows Azure Referenzarchitektur

Die Windows Azure Plattform wurde speziell für Entwickler konzipiert, um Anwendungen auf Basis von Microsoft Technologien wie bspw. .NET zu entwickeln. Dennoch können auch Java, PHP oder Node.js Entwickler die Umgebung für ihre Zwecke nutzen. Dazu bietet Microsoft ausreichend Tools und Plugins für Eclipse und anderer bekannter Entwicklungsumgebungen, um dieses zu ermöglichen.

Zunächst werden die einzelnen Komponenten der Windows Azure Platform betrachtet. Im Anschluss folgen dann ein paar Szenarien, wofür Azure genutzt werden kann.

Windows Azure

Bei Windows Azure handelt es sich um Herz und Seele der gesamten Azure Plattform. Es ist das Betriebssystem, dass auf jedem Server innerhalb der weltweit verteilten Rechenzentren der Azure Cloud läuft. Anders als die anderen Windows Versionen kann Windows Azure nicht käuflich erworben werden und ist speziell auf die Bedürfnisse der Cloud Infrastrukturen von Microsoft abgestimmt. Windows Azure abstrahiert dabei die darunterliegende Hardware und suggeriert somit, dass es sich dabei um lediglich eine Instanz des Betriebssystems handelt. Da das Betriebssystem über mehrere physikalische Server hinweg operiert, sorgt eine spezielle Schicht für die Koordination und Ausführung der jeweiligen Prozesse. Diese Schicht wird auch Fabric bezeichnet. Zwischen der Fabric und dem Windows Azure Betriebssystem befinden sich die virtuellen Maschinen (VM), auf denen der eigentliche Quellcode und die Anwendungen ausgeführt werden. Entwickler sehen jedoch nur zwei Services dieses Stacks, Windows Azure Compute und Windows Azure Storage.

Windows Azure Compute

Windows Azure Compute wird bspw. genutzt, wenn eine Anwendung auf Windows Azure ausgerollt werden soll. Dazu werden Anwendungen in drei möglichen Rollen ausgeführt, Web Role, Worker Role oder VM Role. Die Web Role wird genutzt um typische ASP.NET Web Anwendungen oder jede andere Art von CGI Web Anwendungen zu betreiben. Die Worker Role wird benötigt um langlaufende Prozesse, die über keine Benutzeroberfläche verfügen, auszuführen. Eine Web Role könnte in diesem Zusammenhang z.B. ein IIS Container und eine Worker Role ein Windows Service sein. Beide können auf mehreren Wegen miteinander kommunizieren, wobei der Quellcode innerhalb der Worker Role jedoch unabhängig von der Web Role läuft. Über die Worker Role können dann sowohl .NET Anwendungen als auch native COM Anwendungen auf Windows Azure portiert werden. Über die Worker Role unterstützt Windows Azure zudem Microsoft fremde Umgebungen wie PHP, Java und Node.js. Die VM Role ermöglicht es schlussendlich, Anwendungen innerhalb eines angepassten Windows Server 2008 Image auszuführen. Damit sind Unternehmen in der Lage Anwendungen auf Windows Azure zu portieren, die z.B. Abhängigkeiten zu Komponenten von Drittanbietern haben.

Windows Azure Storage

Um eine Anwendung ausführen zu lassen wird auf jedenfall Speicherplatz für die Konfiguration und weiterer Daten benötigt. Windows Azure Storage bietet hier drei unterschiedliche Möglichkeiten: Blobs, Tables und Queues.

Blobs sind dafür geeignet, um große binäre Objekte wie Bilder und Videos, Dokumente usw. zu speichern. Tables bietet einen skalierbaren Key/ Value basierten Speicher. Queues werden genutzt, um Nachrichten zuverlässig zwischen einzelnen Anwendungen zu übertragen. Daher sind Queues die beste Lösung, um eine Web Role und Worker Role miteinander kommunizieren zu lassen. Der Zugriff auf die Daten in Windows Azure Storage erfolgt per HTTP und REST.

Windows Azure Service Bus

Der Windows Azure Service Bus sorgt für eine nahtlose Integration von Services die sich innerhalb eines Unternehmens hinter einer Firewall und einem Service in der Cloud befinden. Damit wird quasi eine sicherer Brücke zwischen den klassischen on-Premise Anwendungen im Unternehmen und den Cloud Services hergestellt. Dazu werden die Services die sich hinter der Firewall oder dem NAT befinden bei dem Service Bus registriert, wodurch ein Cloud Service diese anschließend aufrufen kann. Der Service Bus abstrahiert den physikalischen Ort des Service, indem er eine URI bereitstellt, die jeder für den Aufruf nutzen kann.

Access Control Service

Bei dem Access Control Service handelt es sich um einen Mechanismus, der für die Absicherung der Cloud Services und Anwendungen genutzt wird. Dazu können auf eine sehr deklarative Art und Weise Regeln definiert werden, mit denen bestimmt wird, wie ein Cloud Service aufgerufen werden darf. Dabei werden eine Vielfalt von unterschiedlichen Identity-Management Infrastrukturen unterstützt. Der Access Control Service ermöglicht es bspw. Unternehmen ihre on-Premise Sicherheitsmechanismen der Active Directory mit den Cloud basierten Authentifizierung zu integrieren.

Windows Azure Caching

Windows Azure Caching stellt Anwendungen, die auf Windows Azure gehosted werden, einen In-Memory Caching Service zur Verfügung. Dieser vermeidet die Schreib/- und Lesezugriffe auf die Festplatte und ermöglicht den Anwendungen einen schnellen Zugriff auf die Daten aus einem High-Speed Cache. Der Cache kann mehrere Arten von Daten speichern, darunter XML, Binärdaten oder serialisierte CLR Objekte. Web Anwendungen die häufig nur lesende Zugriffe benötigen, können den Cache nutzen, um die Geschwindigkeit zu erhöhen.

SQL Azure

SQL Azure ist der Microsoft SQL Server in der Cloud. Anders als Azure Storage, das für das Speichern von unstrukturierten Daten genutzt wird, handelt es sich bei SQL Azure um eine vollständige Relationale Datenbank Engine. Sie basiert auf der selben Datenbank Engine wie der MS SQL Server und kann per T-SQL abgefragt werden. Auf Grund der Nähe zu MS SQL können on-Premise Anwendungen ohne weiteres auf SQL Azure zurückgreifen. Entwickler können mit ADO.NET oder ODBC API auf SQL Azure zugreifen. PHP Entwickler nutzen dazu die PHP API. Mit Microsoft SQL Azure Data Sync können Daten zwischen dem on-Premise SQL Server und SQL Azure synchronisiert werden. Dabei handelt es sich um eine sehr mächtige Funktion, um Datenknoten innerhalb der Cloud aufzubauen, die ständig mit den lokalen on-Premise Datenbanken synchronisiert werden. SQL Azure kann zudem exakt so behandelt werden wie ein gewöhnlicher Datenbank Server im eigenen Rechenzentrum. Da Microsoft hier allerdings für die Installation, Wartung und Verfügbarkeit des Datenbank Service zuständig ist, können sich Unternehmen darauf konzentrieren, den Service einfach nur zu nutzen.

Nun folgen ein paar Szenarien, die Ideal für die Nutzung der Microsoft Windows Azure Plattform sind.

Skalierbare Web Anwendungen

Da die Windows Azure Plattform auf den bekannten .NET und ASP.NET Plattformen basiert, ist es für Entwickler dieser Technologien einfach zu wechseln und Web Anwendungen kostengünstig auf Windows Azure zu betreiben. Damit erhalten Sie die Möglichkeit die Skalierbarkeit ihrer Web Anwendungen deutlich zu erhöhen ohne sich Gedanken über die dafür
notwendige Infrastruktur zu machen. Selbst PHP, Java oder Node.js Entwickler können von Azure profitieren.

Rechenintensive Anwendungen

Die Windows Azure Plattform kann für sehr prozess- und rechenintensive Anwendungen genutzt werden die gelegentlich eine große Menge an Rechenressourcen benötigen. Durch die Nutzung der Worker Role können Entwickler ihren Quellcode über mehrere Instanzen parallel ausführen lassen. Die entweder durch die Web Role oder der on-Premise Anwendung generierten Daten können anschließend der Worker Role via Azure Storage zugeteilt werden.

Zentraler Zugriff auf Daten

Wenn Daten für eine Vielzahl von Anwendungen, den Zugriff durch mehrere Browser, Computer und mobile Endgeräte zugänglich gemacht werden sollen, macht es Sinn, diese an einem zentralen Ort zu speichern. Windows Azure Storage ist hier eine gute Lösung, um Daten zentral zu speichern und zu pflegen sowie Desktop Anwendungen, Silverlight, Flash und AJAX basierten Web Anwendungen oder mobilen Applikationen bereitzustellen.

Hybride Anwendungen - verteilt in der Cloud und on-Premise

Es kann Bedingungen für die Erweiterung eines Teils einer Anwendung für die Cloud oder den Aufbau einer Cloud-Oberfläche für eine bestehende Anwendung geben. Durch die Nutzung des Service Bus und Access Control können on-Premise Anwendungen nathlos und sicher um bzw. in die Cloud erweitert werden. Dazu kann der Service Bus sowie eine weitere Technologie - Azure Direct Connect - dabei helfen, ein hybrides Cloud Szenario aufzubauen.

Cloud basierte Datenknoten

Mit Hilfe von SQL Azure können Unternehmen Datenknoten aufbauen, die den Zugriff durch externe Partner oder mobile Mitarbeiter ermöglichen. So könnte bspw. ein Unternehmen einen Teil seiner Daten in der Cloud bereitstellen, die ständig mit der lokalen Datenbank synchronisiert werden. Die Datenbank in der Cloud wird dann für B2B Partner für Abfragen und Bestellungen geöffnet. Hier helfen SQL Azure und SQL Azure Data Sync bei der Umsetzung so eines Szenarios.



Einrichten eines Proxy Server mit der Google App Engine

Im Internet findet man viele Skripte die dabei helfen einen Proxy Server auf Basis von PHP zu erstellen. Einziger Nachteil ist, dass dafür ein eigener Webserver benötigt wird, um die Skripte zu hosten sowie eine eigene Domain, um den Proxy zu adressieren. Amit Agarwals beschreibt auf seinem Blog http://www.labnol.org wie man in 5 Minuten seinen eigenen kostenlosen Proxy Server unter Verwendung der Google App Engine einrichtet.

Dieser Artikel beschreibt, wie dabei vorzugehen ist.

Schritt 1: Google App Engine Account

Wenn nicht schon vorhanden muss zuerst ein Google App Engine Account eingerichtet werden. Dazu gehen wir auf http://appengine.google.com

Schritt 2: Erstellen der Application

Hier klicken wir auf "Create an Application". Sollte dieses die erste Applikation sein, die für diesen Account erstellt wird, erhalten wir einen Verifizierungscode an unsere hinterlegte Mobilfunknummer. Diesen tragen wir in das dafür vorgesehene Feld ein.

Schritt 3: Auswahl einer Sub-Domain

Als nächstes wählen wir einen für die Sub-Domain, um den Proxy-Server zu adressieren. Die Sub-Domain entspricht dabei außerdem der App ID die als eindeutiger Identifier für die spätere Proxy Anwendung dient. In diesem Beispiel wird als Sub-Domain der Name labnol-proxy-server verwendet.

Schritt 4: Herunterladen von Python

Es ist soweit alles vorbereitet, um die Anwendung für den Proxy Server zur Google App Engine hochzuladen. Zunächst wird aber Python benötigt, dass wir uns unter http://python.org herunterladen und installieren.

Schritt 5: Installation des Google App Engine SDK

Als nächstes laden wir uns das Google App Engine SDK for Python von http://code.google.com herunter und installieren es.

Schritt 6: Herunterladen der Proxy Server Applikation

Mit http://img.labnol.org/files/proxy.zip steht bereits eine fertige Proxy Server Applikation bereit. Diese kann unter den oben genannten Link heruntergeladen werden und wird auf unserem Rechner entpackt.

Schritt 7: Einstellungen für die Google App Engine vornehmen

Unter der Einstellungen der Google App Engine müssen folgende Einstellungen vorgenommen werden.

Schritt 8: Anwendung der Google App Engine hinzufügen

In der (lokalen) Google App Engine klicken wir auf "File >> Add Exisiting Application" und wählen die Anwendung aus, die wir in Schritt 6 heruntergeladen haben. Unter "Edit" muss "YOUR_APP_ID" noch gegen die eigene in Schritt 3 erstellte Sub-Domain ausgetauscht werden.

Schritt 9: Deployment der Proxy Server Applikation

Mit dem Button "Deploy" kann die Anwendung veröffentlicht und genutzt werden.

Durch das Ändern der main.html kann aus Aussehen der Webseite des Proxys geändert werden. Zusätzlich können Google Analytics and AdSense hinzugefügt werden. Wurden Änderungen vorgenommen, reicht ein Klick auf den Button "Deploy" oder der Befehl -- appcfg.py update

Beispiel Live

Unter http://labnol-proxy-server.appspot.com kann der Proxy Server auf Basis der Google App Engine Live getestet werden.

Video Tutorial

Amit Agarwals hat zusätzlich ein Video veröffentlicht, in dem die oben beschriebene Vorgehensweise nachvollzogen werden kann.

http://www.youtube.com/watch?v=3f6Zq4prys0

Quelle



Die Google App Engine

Die Google App Engine [1] ist das Platform as a Service Angebot von Google und
bietet Softwareentwicklern die Entwicklung und das Hosting ihrer Anwendungen auf der
Infrastruktur von Google an. Der Service ist bis zu einem bestimmten Grad kostenlos.
Folgende Richtlinien müssen eingehalten werden, um den Dienst kostenlos nutzen zu
dürfen:

  • Seitenaufruf einer Anwendung: max. 1.300.00 mal pro Tag und max. 7.400 mal pro
    Minute
  • Pro Anwender dürfen max. 10 Applikationen erstellt werden.
  • Max. Versand von E-Mails über die entsprechende API: 2.000 pro Tag
  • Ein-/ und ausgehender Datentransfer max. 1 GB am Tag und max. 56 MB pro Minute
  • Pro Tag darf eine Applikation max. 6,5 CPU-Stunden nutzen

Die Entwicklungsumgebung

Die Google App Engine wurde bereitgestellt um Anwendungen auch während hoher Last oder während der Verarbeitung von vielen Daten zuverlässig ausführen zu lassen. Dazu unterstütz die Google App Engine folgende Funktionen:

  • Dynamische Webdienste inkl. der gänigigen Web-Technologien
  • Persistenter Speicher inkl. der Möglichkeit für Abfragen, Sortierungen und Transaktionen
  • Automatische Skalierung und Loadbalancing
  • APIs für die Authorisierung der Benutzer und die Nutzung der Google E-Mail Accounts
  • Eine Entwicklungsumgebung für lokale System für die Simulation der Google App Engine
  • Warteschlangen für die Steuerung von Aufgaben die eine hohe Performance benötigten
  • Aufgabenverwaltung für die Steuerung von Events zu bestimmten Zeitpunkten
  • Die Anwendungen werden in einer Sandbox ausgeführt. Dadurch hat die Anwendung niemals direkten Zugriff auf das darunterliegende Betriebssystem.
  • Für die Entwicklung stehen mit der Java JRE 6, sowie Python 2.5.2. zwei Laufzeitumgebungen zu Verfügung.
  • Für das Speichern der Anwendungen wird von der App Engine eine verteilte Datenhaltung verwendet, wobei der verteilte Speicher mit der Menge der Daten wächst.

App Engine Services

Die Google App Engine bietet folgende APIs zur Arbeit und der Verwaltung der Applikationen:

  • URL Fetch: Mit dem URL-Fetch Service können Anwendungen auf andere Ressourcen wie Web Services oder Daten über das Internet zugreifen. Dabei wird dieselbe Google Infrastuktur verwendet, wie sie auch von bekannten Google Produkten genutzt wird.
  • Mail: Mittels der App Engine Mail API sind Anwendungen in der Lage direkt E-Mails zu versenden.
  • Memcache: Mittels Memcache kann auf Daten zugegriffen werden, die nicht im persistenten Speicher abgelegt werden. Durch einen schnellen in-Memory Key-Value Cache ist eine Anwendung in der Lage mehreren Instanzen parallel nur temporär vorhandene Daten performant bereitzustellen.
  • Image Manipulation: Mittels der Image Manipulation API sind Anwendungen in der Lage Bilder zu verändern. Bei Bildern im JPEG oder PNG Format können folgende Manipulation durchgeführt werden:
    • Anpassen der Größe
    • Zuschneiden/ Beschneiden
    • Drehen
    • Spiegeln

Geplante Tasks und Warteschlangen

Anwendungen können so gesteuert werden, dass sie hoch performante Aufgaben dann erledigen, wenn die Belastung durch Anfragen nicht so hoch ist, z.B. zu einer vorher definierten Uhrzeit oder Tag. Des Weiteren besteht die Möglichkeit eine Anwendung in eine Warteschleife zu legen oder sie im Hintergrund auszuführen.

Quellen:

[1] Google App Engine