Categories
Analysen

Microsoft und Amazon liefern sich Preiskampf in der Cloud

Als Anbieter mit einem großen Public Cloud Portfolio kämpft Microsoft nun nicht mehr nur mit Google, sondern liefert sich seit kurzem auch einen Preiskampf mit den Amazon Web Services. Das gute daran: die Gewinner sind die Nutzer.

Der Kampf verlagert sich in die Cloud

Nachdem Microsoft am Ende der vergangenen Woche seine Preise für Windows Azure Storage und Windows Azure Compute gesenkt hat und damit auf die Preissenkungen der Amazon Web Services, ebenfalls in der vergangenen Woche, reagiert hat, befinden sich die derzeitigen Preise für Speicherplatz und Rechenleistung aus der Cloud auf einem niedrigen Rekordniveau und befinden sich auf dem Stand hiesiger Stromtarife.

Die Frage ist, wie lange das noch so weitergehen kann, denn die Preise können im Prinzip nur weiter fallen. Betrachten wir nämlich die Tatsache, das die Stromtarife auf Erdgaspreisen, saisonalen Einflüssen und weiteren Variablen basieren, kann Cloud Computing noch günstiger werden.

Die Preisgestaltung beider Anbieter ist nicht direkt vergleichbar, da die Preise und Dienstleistungen variieren. Aber die Kernaussage dieses Wettbewerbs ist eindeutig: Die Preise werden weiter sinken.

Beispielweise kostet eine Amazon Small (Standard) On-Demand Instanz mit Linux/Unix 0,090 Dollar (ca. 0,067 EUR) pro Stunde. Eine Windows Instanz 0,115 Dollar (ca. 0,088 EUR) pro Stunde. Ich zahle derzeit ca. 0,244 EUR pro Kilowattstunde an meinen Stromanbieter.

Beide Anbieter argumentieren, dass sie ihre eigenen Einsparungen (Economies of scale) sehr gerne an ihre Kunden weiterreichen und fokussieren Entwickler, Startups, kleine Unternehmen sowie Großkunden.

Nachdem nun aber auch HP und weitere Anbieter in den Cloud Computing Markt für IaaS Ressourcen eingestiegen sind, werden die Preise noch weiter fallen.


Bildquellen: http://www.merkur-online.de, http://diepresse.com

Categories
Analysen

Sinn und Unsinn von Cloud Siegeln, Zertifikaten, Verbänden und Initiativen

Axel von Leitner, Mitbegründer und Geschäftsführer von 42HE, einem Cloud Startup aus Köln hat auf dem Unternehmensblog die Problematik und Situation mit Cloud Computing Siegeln und Verbänden bzw. speziellen Initiativen stark kritisiert.

Dem Grundtenor von Axel muss ich zustimmen. Aber fangen wir von Vorne an. Es existieren mittlerweile einige Verbände und Initiativen, wie wir es auch aus anderen Bereichen kennen. Dazu gehören z.B. Verbände und Vereine wie EuroCloud, SaaS-EcoSystem oder Initiativen wie Cloud Services Made in Germany und Deutsche Wolke.

Cloud Computing ist ein globaler Ansatz und kein deutsches Konzept

Was insbesondere die Initiativen gemeinsam haben ist, dass Sie mit diversen Versprechen versuchen, so viele Anbieter von Cloud Computing Services wie möglich in die eigenen Reihen zu lotsen. Vor allem “Cloud Services Made in Germany” springt auf das vermeintliche Qualitätsmerkmal Made in Germany auf und verspricht dabei “Mehr Rechtssicherheit bei der Auswahl von Cloud-basierten Diensten…”.

Cloud Computing aus Deutschland = Qualität?

Die Liste der Unternehmen, die sich an “Cloud Services Made in Germany” beteiligen ist lang. Die Prüfungskriterien äußerst schwach, was die hohe Beteiligung erklären könnte. Für die Aufnahme muss ein Unternehmen folgende Kriterien erfüllen:

  • Das Unternehmen des Cloud Service-Betreibers wurde in Deutschland gegründet und hat dort seinen Hauptsitz.
  • Das Unternehmen schließt mit seinen Cloud Service-Kunden Verträge mit Service Level Agreements (SLA) nach deutschem Recht.
  • Der Gerichtsstand für alle vertraglichen und juristischen Angelegenheiten liegt in Deutschland.
  • Das Unternehmen stellt für Kundenanfragen einen lokal ansässigen, deutschsprachigen Service und Support zur Verfügung.

Quelle: http://www.cloud-services-made-in-germany.de/beteiligung

Die Frage die man sich hier nun stellen sollte ist, wo ist das wirkliche Qualitätskriterium, dass die Initiative prüft? Handelt es dabei sich um ein Qualitätsmerkmal, dass ich meinen Firmensitz in Deutschland habe? Nein! Das ich einen deutschen Support anbiete? Ja, vielleicht! Das ich meine Geschäfte und Verträge nach deutschem Recht abschließe? Recht und Datenschutz als Qualitätmerkmal? Ist das nicht ein bisschen weit hergeholt?

In den Kriterien wird in keinster Weise auf die wirkliche Qualität eines Service eingegangen. Darf sich der Service wirklich Cloud Service nennen? Wie ist das Abrechnungsmodell? Sorgt der Anbieter für eine Cloud Computing konforme Skalierbarkeit und Hochverfügbarkeit? Und viele weitere Fragen, die essentiell wichtig sind, um die Qualität eines Cloud Service zu bewerten!

Die Initiative “Cloud Services Made in Germany” versteckt sich leider einzig und allein hinter den vermeintlich hohen Datenschutzanforderungen in Deutschland, sagt aber nichts über die tatsächliche Qualität eines Cloud Computing Anbieters bzw. dessen Services aus.

Eine Cloud für Deutschland?

Dieser Aufgabe hat sich die Initiative “Deutsche Wolke” gewidmet. Es handelt sich dabei um einen Zusammenschluß deutscher und internationaler Organisationen zum Aufbau einer föderalen Cloud-Infrastruktur für Deutschland. Die Initiative verkauft sich zwar leider ebenfalls unter dem Deckmantel von “Made in Germany”, hat aber dennoch einen ganz anderen qualitativ höherwertigen Anspruch als z.B. “Cloud Services Made in Germany”.

Denn mit mit einer eigenen Cloud Infrastruktur auf Basis von offenen Standards und Schnittstellen und unter dem Aspekt hoher Verfügbarkeit und strengen Datenschutzrichtlinien werden die derzeit noch überschaubaren Partner von “Deutsche Wolke” anscheinend deutlich besser überprüft.

Dennoch argumentiert auch die “Deutsche Wolke” verstärkt mit den hohen Datenschutzrichtlinien in Deutschland.

Auch die Verbände wollen mir ihren Zertifikaten ein Wort mitreden

Dann gibt es noch die Verbände EuroCloud und SaaS-EcoSystem, die vor allem durch ihre Gütesiegel und Zertifikate auffallen. EuroCloud hat dafür seinen SaaS Star Audit im Angebot. Das SaaS-EcoSystem hingegen hat mit “Cloud-Experte” sein Qualitäts-Zertifikat für Saas & Cloud Computing Berater sowie sein “Trust in Cloud” für Cloud Computing Anbieter.

Die Qualität und der Nutzen solcher Zertifikate und Gütesiegel stehen und fallen natürlich mit den Unternehmen, die mit der Prüfung beauftragt sind sowie den Prüfkriterien. Hinzu kommt ebenfalls ein großer Geldbeutel, um sich zertifizieren zu lassen. Speziell das Zertifikat “Cloud-Experte” des SaaS-EcoSystem ist mit Vorsicht zu genießen. Bisher haben nur zwei Marketingexperten(!) das Zertifikat erhalten, was ich bereits in einem älteren Artikel kritisiert habe.

Aber auch bei dem EuroCloud SaaS Star Audit scheint sich bisher nicht viel getan zu haben. Zumindest gibt es seit dem letzten Artikel keine neuen Services, die einen Star Audit erfolgreich absolviert haben.

Deutschland doch kein Qualitätskriterium für die Cloud?

“Cloud Made in Germany”. Wer den vermeintlich höheren Datenschutz als Wettbewerbsvorteil sieht ist auf dem falschen Weg in die Cloud! Denn das ist ein Trugschluss und ein Argument was nicht zutrifft.

Natürlich darf der Patriot Act nicht unterschätzt werden. Insbesondere auf Grund seiner nicht vorhandenen Transparenz, wann welche US-Regierungseinheit Zugriffe auf bestimmte Daten erhält. Jedoch sollte man nicht vergessen, das seit jeher ein deutscher Staatsanwalt in ein Rechenzentrum Zugriff erhalten kann, wenn er einen trifftigen Grund hat. Sei es nun beim Cloud Computing oder Outsourcing. Auch wenn hier zunächst ein richterlicher Beschluss vorliegen muss.

Zudem haben auch unsere deutschen Politiker daran Interesse unkompliziert Zugriff auf diverse Daten zu erhalten. Diese Diskussionen werden ebenfalls schon seit Jahren geführt. Ich bin kein Jurist und schon gar kein Politiker und kann dazu nicht viel sagen. Allerdings halte ich es für falsch, sich nur auf den Datenschutz auszuruhen. Made in Germany steht für Qualität das ist richtig, aber nicht zwingend im Bereich der Informationstechnologie und schon gar nicht im Bereich Cloud Computing – es gibt natürlich ein paar Ausnahmen. Es ist schade, dass so schreiben zu müssen, aber die Realität ist, das uns andere Länder, insbesondere die USA Jahre voraus sind. Diese schießen erst und entschuldigen sich später, wohingegen die Deutschen über alles debattieren (müssen) bevor eine Entscheidung getroffen wird. Deutsche Unternehmen sollten sich lieber auf ihre Innovationskraft konzentrieren, die definitiv vorhanden ist, anstatt sich hinter Siegeln zu verstecken.

Denn wie wir sehen, haben es die Cloud Computing Player wie Amazon, Google, Microsoft oder auch Salesforce nicht nötig, sich mit einem (deutschen) Siegel, Zertifikat oder dergleichen zu profilieren und denen interessiert es auch nicht, zu recht! Schließlich ist Cloud Computing ein globaler Ansatz und kein deutsches Konzept!

Categories
News

AWS präsentiert neue Identity Access und Management Funktionen

In einem Blogpost nennt Jeff Barr neue Funktionen für das AWS Passwort Management und zur Überwachung der Kontoaktivitäten und Nutzungsberichte.

Mit diesen neuen Funktionen können Identity Access and Management (IAM) Nutzer nun Zugriff auf die Kontoaktivitäten und Nutzungsberichte auf der AWS Webseite erhalten. Des Weiteren können Regeln für Passwörter definiert werden, durch die IAM Nutzer in die Lage versetzt werden, starke Passwörter zu verwenden. Zu guter Letzt besteht nun die Möglichkeit, IAM Nutzern die Gelegenheit zu geben, ihre eigenen Passwörter zu ändern.

Zugriff auf Kontoaktivitäten und Nutzungsberichte

Mit dieser neuen Funktion können voneinander getrennte und unterschiedliche IAM Benutzer für geschäftliche und technische Zwecke erstellt werden. So können Business-Anwender Zugriff auf die Kontoaktivitäten und Nutzungsberichte der AWS Webseite erhalten, um damit die Abrechnungs-und Nutzungsdaten einzusehen, ohne einen Zugriff auf anderen AWS-Ressourcen wie EC2-Instanzen oder Dateien in S3 zu haben.

Kennwortrichtlinien

Es können nun kontoübergreifende Richtlinien in der IAM-Konsole festgelegt werden, die starke Passwörter von den Nutzern verlangen und eine Passwortänderung erzwingt. Neben der Passwortlänge kann ebenfalls festgelegt werden, wie das Passwort aufgebaut werden soll und welche Zeichen es enthalten muss, also bswp. eine Kombination von großen und kleinen Buchstaben, Zahlen und Symbolen.

Ändern von Kennwörtern

Über eine neue Benutzeroberfläche in der IAM Konsole können IAM Benutzer nun auch ihr Passwort selbst ändern. Ein Nutzer erreicht diese neue Funktion, indem er rechts oben unter My Account die “Security Credentials” wählt.

Categories
Tutorials @de

Amazon DynamoDB zusammen mit .NET nutzen

Amazon DynamoDB ist der aktuelle NoSQL Service der Amazon Web Services. Es handelt sich dabei um eine verwaltete, skalierbare und bei Bedarf nutzbare Datenbank inkl. bereitgestellten Durchsatz. Der Bereitgestellte Durchsatz ermittelt vorab die Anforderungen für den Lese-und Schreib-Durchsatz, auf deren Basis die Kosten berechnet werden.

Dieses Tutorial von cloudstory.in richtet sich an .NET Entwickler, die mit Amazon DynamoDB starten möchten. Es zeigt, wie eine Tabelle erstellt und darauf Operationen ausgeführt werden. Amazon DynamoDB bietet für .NET-Entwickler dazu eine Low-Level-API sowie eine Object-Persistence-API. Das Tutorial beschreibt, wie die Object-Persistence-API genutzt wird, um mit Amazon DynamoDB zu kommunizieren. Dazu wird als Beispiel eine DVD Bibliothek erstellt, mit der individuelle DVDs hinzugefügt, modifiziert, gesucht und gelöscht werden können.

Voraussetzungen

Schritt 1 – Einrichten der Umgebung

Zunächst wird in Visual Studio ein neues Projekt angelegt und die Umgebung eingerichtet.

Dazu muss eine Referenz zu der AWSSDK.dll hinzugefügt werden. Zu finden unter C:[*]Program Files[*]AWS SDK for .NET[*]bin.

[*] bitte durch einen SLASH ersetzen.

Anschließend wird eine neue Konfigurationsdatei für die Anwendung hinzugefügt. Als Standard-Dateiname kann App.config genommen werden.

Nun benötigen wir die AWS Anmeldedaten, also den AWS Access Key und Secret Key.

Wir fügen den folgenden “using” Ausdruck hinzu.

using Amazon.DynamoDB.DataModel;

Und übernehmen den AWS Access Key und Secret Key in die App.config Datei.

Schritt 2 – Erstellen des DVD-Schema

Als Nächstes wird eine Klasse angelegt, die für das Amazon DynamoDB Schema benötigt wird.

Dazu legen wir eine neue Klasse mit dem Namen DVD.cs an.

Und fügen den folgenden “using” Ausdruck hinzu.

using Amazon.DynamoDB.DataModel;

Wir fügen die folgenden Eigenschaften hinzu und überschreiben die ToString Methode.

public class DVD
{
    public string Title { get; set; }

    public int ReleaseYear { get; set; }

    public ListActorNames { get; set; }

    public string Director { get; set; }

    public string Producer { get; set; }

    public override string ToString(){
        return string.Format(@"{0} - {1} Actors: {2}", Title, ReleaseYear, string.Join(", ", ActorNames.ToArray()));}
    }
}

Nun müssen wir Amazon DynamoDB spezifische Attribute hinzufügen, um die Tabelle, den Hash Key und Range Key identifizieren zu können. Im Folgenden befindet sich der Code der endgültigen DVD.cs inkl. aller notwendigen Attribute.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Amazon.DynamoDB.DataModel;

namespace DVDsOnCloud
{
[DynamoDBTable("DVD")]
    public class DVD
    {
        [DynamoDBHashKey]
        public string Title { get; set; }

        [DynamoDBRangeKey]
        public int ReleaseYear { get; set; }

        [DynamoDBProperty]
        public List ActorNames { get; set; }

        public string Director { get; set; }

        public string Producer { get; set; }

        public override string ToString()
        {
            return string.Format(@"{0} - {1} Actors: {2}", Title, ReleaseYear, string.Join(", ", ActorNames.ToArray()));
        }
    }
}

Ein Hash Key ist vergleichbar mit dem Primary Key einer Tabelle. Es wird erwartet, dass dieser immer einzigartig ist und ist der am meisten genutzte Key für Anfragen. Der Range-Key ist ein sekundärer Schlüssel, der von DynamoDB verwendet wird, um einen sortierten Index-Bereich zu schaffen. Obwohl der Range Key optional ist, kann die Kombination von Hash Key und Range Key die Query-Performance optimieren.

Schritt 3 – Erstellen der DVDLibrary Hilfsklasse

Nun erstellen wir einen Wrapper für die DynamoDB API innerhalb einer Klasse, die von einem Client genutzt werden kann. Dazu erstellen wir eine neue Klasse mit dem Namen DVDLibray.cs.

Wir fügen die folgenden “using” Ausdrücke hinzu.

using Amazon;
using Amazon.DynamoDB;
using Amazon.DynamoDB.Model;
using Amazon.DynamoDB.DataModel;
using Amazon.SecurityToken;
using Amazon.Runtime;

Schritt 4 – Hinzufügen der öffentliche Mitglieder und des Konstruktors

Nun fügen wir den Konstruktor zur DVDLibrary Klasse hinzu. Der Konstruktor verwendet den AWS Security Token Authentifizierung, um die Anmeldedaten zu überprüfen.

AmazonDynamoDB client;
public DVDLibrary()
{
    AmazonSecurityTokenServiceClient stsClient = new AmazonSecurityTokenServiceClient();
    RefreshingSessionAWSCredentials sessionCredentials = new RefreshingSessionAWSCredentials(stsClient);
    client = new AmazonDynamoDBClient(sessionCredentials);
}

Schritt 5 – Initialisierung der Amazonas DynamoDB Tabelle

In diesem Schritt initialisieren wir Amazon DynamoDB Tabelle. Wir stellen sicher, dass die Tabelle nicht existiert und erstellen eine neue. Zudem konfigurieren wir die benötigten Parameter, wie den bereitgestellten Durchsatz, Hash Key und Range Key. Das Erstellen einer Amazon DynamoDB Tabelle dauert eine Weile. Zu dieser Zeit können keine weiteren Operationen durchgeführt werden. Daher wird die Methode solange blockiert, bis der Status der Tabelle in den Zustand “Active” wechselt.

public void Init()
{
    List currentTables = client.ListTables().ListTablesResult.TableNames;
    if (!currentTables.Contains("DVD"))
    {
        CreateTableRequest reqCreateTable = new CreateTableRequest();
        CreateTableResponse resCreateTable=new CreateTableResponse();

        reqCreateTable.TableName = "DVD";

        reqCreateTable.ProvisionedThroughput = new ProvisionedThroughput();
        reqCreateTable.ProvisionedThroughput.ReadCapacityUnits=10;
        reqCreateTable.ProvisionedThroughput.WriteCapacityUnits=10;

        reqCreateTable.KeySchema = new KeySchema();

        reqCreateTable.KeySchema.HashKeyElement = new KeySchemaElement();
        reqCreateTable.KeySchema.HashKeyElement.AttributeName = "Title";
        reqCreateTable.KeySchema.HashKeyElement.AttributeType = "S";

        reqCreateTable.KeySchema.RangeKeyElement = new KeySchemaElement();
        reqCreateTable.KeySchema.RangeKeyElement.AttributeName = "ReleaseYear";
        reqCreateTable.KeySchema.RangeKeyElement.AttributeType = "N";

        resCreateTable = client.CreateTable(reqCreateTable);

        while (resCreateTable.CreateTableResult.TableDescription.TableStatus != "ACTIVE")
        {
            System.Threading.Thread.Sleep(5000);
        }
    }

}

Bei Amazon DynamoDB besteht die Möglichkeit, den Anforderungsdurchsatz festzulegen, den eine Tabelle erreichen soll. Der Service sorgt dann dafür, die Ressourcen bereitstehen, mit denen die erforderliche Durchsatzrate erreicht wird. Die Durchsatzanforderungen können in Bezug auf die Lesekapazität und Schreibkapazität in der Tabelle festgelegt werden. Dazu werden beim Erstellen einer Tabelle die erforderlichen Lese- und Schreibkapazitätsanforderungen angegeben. Auf dieser Basis partitioniert Amazon DynamoDB automatisch die entsprechende Anzahl von Ressourcen und reserviert diese, damit der Durchsatz erreicht wird.

Schritt 6 – Hinzufügen einer neuen DVD

Nun erstellen wir eine Funktion mit dem Namen AddDVD, die das DVD Objekt akzeptiert und ein Element in der Amazon DynamoDB erstellt.

public void AddDVD(DVD dvd)
{
    DynamoDBContext context = new DynamoDBContext(client);
    context.Save(dvd);
}

Schritt 7 – Ändern einer vorhandenen DVD

Als Nächstes erstellen wir eine Methode ModifyDVD, die versucht eine vorhandene DVD zu laden, diese zu modifizieren und anschließend zu speichern. Wird das Element nicht gefunden, kommt es zu einer Exception.

public void ModifyDVD(DVD dvd)
{
    DynamoDBContext context = new DynamoDBContext(client);
    DVD oDVD = context.Load(dvd.Title, dvd.ReleaseYear);
    if(oDVD==null)
        new Exception("Non-existent DVD");
    context.Save(dvd);
}

Schritt 8 – Alle DVDs ausgeben

Um alle DVDs auszugeben, führen wir einen Table Scan durch.

public IEnumerable GetAllDVDs()
{
    DynamoDBContext context = new DynamoDBContext(client);
    IEnumerable alldvds=context.Scan();
    return alldvds;
}

Wie bei jeder anderen Datenbank auch, ist ein vollständiger Scan auf Amazon DynamoDB kostspielig. Diese Operation berücksichtigt nicht den Hash Key und Range Key und durchläuft jedes Element. Der Scanvorgang wird beendet, wenn die aggregierte Größe der gescannten Objekte 1MB übersteigt. Der Client muss die Operation für den Rest der Elemente dann erneut starten.

Schritt 9 – DVDs auf Basis des Titels und Erscheinungsjahrs suchen

Um nach den DVDs zu suchen, benötigen wir den Hash Key als auch den Range Key. Daher wird diese Methode beide Schlüssel nutzen, um die DVDs zu durchsuchen.

public IEnumerable SearchDVDs(string title, int releaseyear)
{
    DynamoDBContext context = new DynamoDBContext(client);
    IEnumerable alldvds = context.Query(title, Amazon.DynamoDB.DocumentModel.QueryOperator.Equal, releaseyear);
    return alldvds;
}

Schritt 10 – DVDs auf Basis des Titels suchen

Wenn das Erscheinungsjahr nicht zu den Suchkriterien gehören soll, nutzen wir nur die folgende Methode, die nur auf Basis des Titels sucht.

public List>SearchDVDByTitle(string title)
{
    DynamoDBContext context = new DynamoDBContext(client);
    QueryRequest reqQuery = new QueryRequest();
    reqQuery.TableName = "DVD";
    reqQuery.HashKeyValue = new AttributeValue() { S = title };

    QueryResponse resQuery = client.Query(reqQuery);

    return resQuery.QueryResult.Items;
}

Schritt 11 – Löschen der DVD

Mit der folgenden Methode löschen wir eine DVD.

public void DeleteDVD(DVD dvd)
{
    DynamoDBContext context = new DynamoDBContext(client);
    DVD oDVD = context.Load(dvd.Title, dvd.ReleaseYear);
    if (oDVD == null)
        new Exception("Non-existent DVD");
    context.Delete(dvd);
}

Im Folgenden befindet sich der gesamte Quellcode für die DVDLibrary.cs.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Amazon;
using Amazon.DynamoDB;
using Amazon.DynamoDB.Model;
using Amazon.DynamoDB.DataModel;
using Amazon.SecurityToken;
using Amazon.Runtime;

namespace DVDsOnCloud
{
    class DVDLibrary
    {
        AmazonDynamoDB client;
        public DVDLibrary()
        {
            AmazonSecurityTokenServiceClient stsClient = new AmazonSecurityTokenServiceClient();
            RefreshingSessionAWSCredentials sessionCredentials = new RefreshingSessionAWSCredentials(stsClient);
            client = new AmazonDynamoDBClient(sessionCredentials);
        }

        public void Init()
        {
            List currentTables = client.ListTables().ListTablesResult.TableNames;
            if (!currentTables.Contains("DVD"))
            {
                CreateTableRequest reqCreateTable = new CreateTableRequest();
                CreateTableResponse resCreateTable=new CreateTableResponse();

                reqCreateTable.TableName = "DVD";

                reqCreateTable.ProvisionedThroughput = new ProvisionedThroughput();
                reqCreateTable.ProvisionedThroughput.ReadCapacityUnits=10;
                reqCreateTable.ProvisionedThroughput.WriteCapacityUnits=10;

                reqCreateTable.KeySchema = new KeySchema();

                reqCreateTable.KeySchema.HashKeyElement = new KeySchemaElement();
                reqCreateTable.KeySchema.HashKeyElement.AttributeName = "Title";
                reqCreateTable.KeySchema.HashKeyElement.AttributeType = "S";

                reqCreateTable.KeySchema.RangeKeyElement = new KeySchemaElement();
                reqCreateTable.KeySchema.RangeKeyElement.AttributeName = "ReleaseYear";
                reqCreateTable.KeySchema.RangeKeyElement.AttributeType = "N";

                resCreateTable = client.CreateTable(reqCreateTable);

                while (resCreateTable.CreateTableResult.TableDescription.TableStatus != "ACTIVE")
                {
                    System.Threading.Thread.Sleep(5000);
                }
            }

        }

public void AddDVD(DVD dvd)
{
    DynamoDBContext context = new DynamoDBContext(client);
    context.Save(dvd);
}

        public void ModifyDVD(DVD dvd)
        {
            DynamoDBContext context = new DynamoDBContext(client);
            DVD oDVD = context.Load(dvd.Title, dvd.ReleaseYear);
            if(oDVD==null)
                new Exception("Non-existent DVD");
            context.Save(dvd);
        }

        public IEnumerable GetAllDVDs()
        {
            DynamoDBContext context = new DynamoDBContext(client);
            IEnumerable alldvds=context.Scan();
            return alldvds;
        }

        public IEnumerable SearchDVDs(string title, int releaseyear)
        {
            DynamoDBContext context = new DynamoDBContext(client);
            IEnumerable alldvds = context.Query(title, Amazon.DynamoDB.DocumentModel.QueryOperator.Equal, releaseyear);
            return alldvds;
        }

        public List>SearchDVDByTitle(string title)
        {
            DynamoDBContext context = new DynamoDBContext(client);
            QueryRequest reqQuery = new QueryRequest();
            reqQuery.TableName = "DVD";
            reqQuery.HashKeyValue = new AttributeValue() { S = title };

            QueryResponse resQuery = client.Query(reqQuery);

            return resQuery.QueryResult.Items;
        }


        public void DeleteDVD(DVD dvd)
        {
            DynamoDBContext context = new DynamoDBContext(client);
            DVD oDVD = context.Load(dvd.Title, dvd.ReleaseYear);
            if (oDVD == null)
                new Exception("Non-existent DVD");
            context.Delete(dvd);
        }
    }

 }

Der komplette Quellcode

Im Folgenden ist der vollständige Code des Clients zu finden, der auf die DVDLibrary zugreift.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DVDsOnCloud
{
    class Program
    {
        static void Main(string[] args)
        {
            //Create the helper object
            DVDLibrary DVDLib= new DVDLibrary();

            //Initialize
            DVDLib.Init();

            //Create the DVD object
            DVD dvd = new DVD() { Title = "Businessman", ReleaseYear = 2011, ActorNames = new List { "Mahesh", "Kajal" }, Director = "Puri Jagannath", Producer = "Venkat" };

            //Add the new DVD
            DVDLib.AddDVD(dvd);

            //Print all the DVDs
            foreach (var odvd in DVDLib.GetAllDVDs())
                Console.WriteLine(odvd.Title);

            //Create a new DVD object with modified values
            DVD newdvd = new DVD() { Title = "Businessman", ReleaseYear = 2011, ActorNames = new List { "Mahesh Babu", "Kajal Agarwal" }, Director = "Puri Jagannath", Producer = "Venkat" };

            //Commit the changes
            DVDLib.ModifyDVD(newdvd);


            //Search for the DVD
            foreach (var dvd in DVDLib.SearchDVDs("Businessman",2011))
                Console.WriteLine(dvd.Director);

            //Delete the DVD
            DVDLib.DeleteDVD(newdvd);
         }
    }
}

Quelle: http://cloudstory.in

Categories
Tutorials @de

How-To: Amazon EC2 Linux Micro Instanz um eine Swap Partition erweitern um deren Leistung zu erhöhen

Amazon EC2 Micro Instanzen stehen nur 613 MB Arbeitsspeicher zur Verfügung. Das reicht in den meisten Fällen nicht, um große Datenmengen performant zu verarbeiten. Hinzu kommt, dass die Linux Micro Instanzen standardmäßig keine Swap Partition haben.

Mit den folgenden Schritten wird einer Linux basierten Amazon EC2 Micro Instanz eine Swap Partition hinzugefügt, wodurch deren Leistung erhöht werden kann.

Zunächst melden wir uns als Root an und geben folgenden Befehl ein, um die Werte für die gewünschte Blockgröße anzugeben.

dd if=/dev/zero of=/swapfile bs=1M count=1024

Anschließend richten wir das Swapfile ein.

mkswap /swapfile

Nun aktivieren das Swapfile.

swapon /swapfile

Um das Swapfile während des Bootvorgangs zu aktivieren, tragen wir folgendes in die /etc/fstab ein.

/swapfile swap swap defaults 0 0

Bildquelle: http://tux.crystalxp.net

Categories
News

Amazon eröffnet weitere AWS Region in Oregon

Wie Amazon heute auf seinem Blog bekanntgeben hat, wurde eine weitere und somit die sechste AWS Region weltweit eröffnet.

Mit US West (Oregon) steht nun die dritte Region in den USA und damit die sechste Region weltweit auf der Landkarte der Amazon Web Services. Oregon befindet sich im Pazifischen Nordwesten der Vereinigten Staaten. Die neue Region soll damit einen günstigeren Zugriff und eine geringere Latenz aus dem Westen der USA auf die Services von Amazon gewährleisten.

Die Kosten für die neue Region betragen dieselben wie für die Region US East (Northern Virginia).

Folgende Services stehen in der Region US West (Oregon) zur Verfügung:

  • Amazon Elastic Compute Cloud (EC2) und die damit verbundenen Services (Elastic Block Store, Virtual Private Cloud, Elastic Load Balancing und Auto Scaling).
  • Amazon Simple Storage Service (S3).
  • Amazon SimpleDB.
  • Amazon Relational Database Service (RDS).
  • Amazon Simple Queue Service (SQS).
  • Amazon Simple Notification Service (SNS).
  • Amazon Elastic MapReduce.
  • AWS CloudFormation.
  • Amazon CloudWatch.
Categories
News

Die Software AG geht in die Cloud

Die Software AG hat ihre Anwendungen WebMethods und Aris auf Amazon EC2 portiert und plant zudem einen eigenen PaaS Dienst.

Neben der Middleware WebMethods hat die Software AG ebenfalls sein Tool für die Prozessmodellierung Aris zertifizieren lassen, so dass beide Anwendungen nun auf Amazon EC2 sowie VMware betrieben werden können. Durch die Portierung auf EC2 sollen bestehende Kunde die Utility-Services Möglichkeiten der Cloud nutzen können. Nach Aussage der Software AG nutzen einige Kunden sogar bereits Lösungen auf VMware Basis, wodurch die jetzige Zertifizierung ihnen nur ein weiteres Maß an Sicherheit gewährleisten soll.

Um WebMethods bzw. Aris auf Amazon EC2 zu nutzen, müssen die Kunden einen separaten Vertrag mit Amazon eingehen. Die Lizenzen würden hingegen von Seiten der Software AG geliefert. Dazu sind die CPU-Lizenzen der Software AG kompatible mit den Virtual Core Lizenzen von Amazon. Was bedeutet, dass ein Kunde seine bestehenden Lizenzen zu Amazon umziehen kann.

Unternehmen können die Amazon Cloud somit für die Entwicklung, Test und Produktion nutzen. Die Software AG erwartet hingegen die meiste Nutzung in den beiden erstgenannten Bereichen.

Development-as-a-Service

Das Hauptziel der Software AG besteht jedoch im Aufbau eines umfangreichen Platform-as-a-Service Angebots. Die PaaS Umgebung wird dazu neben einem Java Application Server (WebMethods) ebenfalls einen In-Memory Cache (Terracotta) beinhalten. Darüber hinaus soll dem PaaS eine IDE (Integrated Development Environment) einverleibt werden, was aus dem Platform-as-a-Service im Grunde genommen ein Development-as-a-Service macht.

Hinzu kommt eine Kollaborationsschicht, die es virtuellen Teams ermöglichen soll gemeinsam, in Echtzeit und ortsunabhängig miteinander zu arbeiten.

Wann der PaaS erscheint steht derzeit noch nicht fest, jedoch befindet sich das nächste Major Release für WebMethods in den Startlöchern.

Categories
News

Amazon AWS stellt mobile Anwendung zur Zwei Faktor Authentifizierung bereit

Nutzer der Amazon Web Services erhalten nun die Möglichkeit, sich über ihr Smartphone die benötigten Authentifizierungscodes für den Multi-Factor Authentication (MFA) Service zu erzeugen.

MFA erweitert die Nutzung der Amazon Web Services um eine weitere Sicherheitsfunktion. So kann sich ein Benutzer neben seinem Benutzernamen und einem Passwort zusätzlich mit einem Authentifizierungscode ausweisen, bevor er sich letztendlich anmeldet.

Bisher standen Administratoren Hardware Tokens zur Verfügung, mit denen Sie ad-hoc Authentifizierungscodes erstellen konnten. Mit der neuen Option können nun auch Smartphones, Tablets oder normale Computer verwendet werden, auf der eine Anwendung betrieben werden kann, welche den offenen OATH TOTP (Open Authentication Time-Based One-Time Password) Standard unterstützt, um darüber die Codes zu generieren.

Die Nutzung der Software ist deutlich günstiger, bequemer und flexibler als der 13 Dollar teure Hardware Token.

Die AWS Virtual MFA Application steht im Amazon Appstore bzw. dem Android Market zum Download bereit. Amazon stellt auf seiner Webseite darüber hinaus eine Liste mit alternativen Anwendungen für iPhone und Blackberry Nutzern bereit.

Categories
Management @de

"Design For Failure" via Amazon Web Services

Um die Möglichkeiten der Cloud eines Anbieter zu nutzen, ist es immens wichtig, die jeweilige Cloud zu verstehen. Daher sollte man sich ausreichend Zeit nehmen und die Whitepaper und Handbücher gründlich zu lesen und zu verstehen, um seine Anwendung somit gegen Fehler innerhalb der Infrastruktur zu schützen.

Hierfür hat Amazon eine Webseite geschaffen, auf der Whitepapers zum Download bereitstehen, die dabei helfen, fehlertolerante Anwendungen zu entwickeln und Cloud Architekturen zu verstehen.

An dieser Stelle ist es sehr interessant zu sehen, dass die Whitepapers bereits im Jahr 2010 bzw. im Januar 2011 erstellt oder aktualisiert wurden.

AWS Cloud Architecture Best Practices Whitepaper Read

Dieses Whitepaper gibt einen technischen Überblick aller AWS Services und verschiedener Best Practice Ansätze für die architektonische Gestaltung, um damit effiziente und skalierbare Architekturen zu entwerfen.

Building Fault-Tolerant Applications on AWS Whitepaper Read

In diesem Whitepaper werden Funktionen für die Erhöhung der Fehlertoleranz vorgestellt, die dazu dienen, um hoch zuverlässige und hochverfügbare Anwendungen innerhalb der AWS Cloud zu entwickeln.

Web Hosting Best Practices Whitepaper Read

Dieses Whitepaper überprüft detailliert Lösungen für das Web Application Hosting. Dazu gehört unter anderem, wie jeder AWS Service genutzt werden kann, um eine hochverfügbare und skalierbare Webanwendung zu entwerfen.

Leveraging Different Storage Options in the AWS Cloud WhitepaperRead

Dieses Whitepaper dient dazu, einen Überblick über die Speichermöglichkeiten in der AWS Cloud zu geben und darüber hinaus Szenarien vorzustellen, um eine effektive Nutzung zu erzielen.

AWS Security Best Practices Whitepaper Read

In diesem Whitepaper werden bestimmte Tools, Funktionen und Richtlinien beschrieben, um zu verstehen, wie Cloud Anwendungen innerhalb der AWS Infrastruktur von Grund auf geschützt werden können.

Source: http://aws.amazon.com/architecture

Categories
Analysen

Was Unternehmen aus dem Amazon EC2 Problem in North Virginia lernen sollten!

Am 21. April haben wir es wieder erlebt. Auch eine hochverfügbare Cloud wie die von Amazon ist nicht vor Fehlern geschützt. Natürlich erhalten Kritiker nun wieder die Gelegenheit gegen die Nutzung der Cloud zu argumentieren. Aber um es vorweg zu nehmen, Anbieter wie Hootsuite, Mobypicture, Foursquare und Reddit hätten von dem Ausfall nicht betroffen sein müssen, hätten Sie auf eine ausfallsichere Architektur gesetzt.

Aus diesem Grund ist es nicht nachvollziehbar, dass diese Unternehmen mit dem Finger auf Amazon zeigen und sagen: “Uns trifft keine Schuld, Amazon ist down!”. Es wäre interessant zu wissen, wer zur Rechenschaft gezogen worden wäre, hätten diese Anbieter keinen Public Cloud Service genutzt, sondern betrieben ein eigenes Rechenzentrum. Denn eines ist klar, (solche) Probleme können in jedem Rechenzentrum auftreten und hätten dann bedeutend schwerwiegendere Probleme. Und wenn die Cloud richtig genutzt worden wäre, wären auch die Probleme bei Amazon in der Form nicht sichtbar geworden.

Was ist passiert?

Hintergrund
Die Amazon Cloud besteht aus mehreren Regionen, verteilt über mehrere Kontinente, in denen sich wiederum mehrere sogenannte Availability Zones befinden. Availability Zones sind verschiedene Standorte innerhalb einer Region, die so konstruiert sind, dass sie isoliert betrieben werden und von Fehlern in anderen Availability Zones nicht betroffen sind.

Durch das Starten von Instanzen in separaten Regionen, können Web Anwendungen so konstruiert werden, dass sich diese geographisch in der Nähe von bestimmten Kunden befinden und rechtlichen oder anderen Anforderungen gerecht werden.

Weiterhin werden Anwendungen vor dem Ausfall eines einzelnen Standorts geschützt, indem Instanzen in separaten Availability Zones ausgeführt werden.

Wie das Konzept genau funktioniert, kann unter Das Konzept hinter den AWS Regionen und Verfügbarkeitszonen nachgelesen werden.

Das Problem
Um 1:41 AM PDT begann das Problem mit Latenzen und Fehlerraten innerhalb der EBS Volumes und Verbindungsproblemen zu den EC2 Instanzen in mehreren Availability Zones der Region US-EAST-1.

Das führte dazu, dass die Webseiten bzw. Webanwendungen, die auf den EC2 Instanzen betrieben werden, nicht mehr erreichbar waren.

Design For Failure

Zunächst muss eines klar sein. Amazon stellt “nur” virtuelle Ressourcen zum Aufbau einer eigenen virtuellen Infrastruktur bereit. Amazon ist NICHT für die Anwendung und deren Funktionalität zuständig, sondern stellt nur die Infrastruktur bereit, auf der die Anwendungen ausgeführt werden.

“Everything fails, all the time” Werner Vogels, CTO Amazon.com

Aus diesem Grund rät Amazon: “Design for failure!” und gibt Tipps, dieses umzusetzen:

  • Avoid single points of failure
  • Assume everything fails, and design backwards
  • Goal: Applications should continue to function even if the underlying physical hardware fails or is removed or replaced.

Und nennt Möglichkeiten für die Realisierung des Designs:

  • Use Elastic IP addresses for consistent and re-mappable routes
  • Use multiple Amazon EC2 Availability Zones (AZs)
  • Create multiple database slaves across AZs
  • Use Amazon Elastic Block Store (EBS) for persistent file systems

Design for failure! Ist im Prinzip nichts Neues. Im Grunde sollte das ebenfalls bei jedem anderen nicht Cloud Anbieter und im eigenen Rechenzentrum beachtet werden. Der Entwickler sollte immer in der Pflicht stehen, seine Anwendung gegen Hardware oder sonstige Ausfälle abzusichern und die Verfügbarkeit sicherzustellen.

Hootsuite und Mobypicture bspw. haben den Fehler gemacht, sich nur auf eine AWS Region zu konzentrieren, anstatt ihren Service über die gesamte Amazon Cloud hinweg zu verteilen. Speziell bei Mobypicture, als einen europäischen Anbieter mit Sitz in Holland, ist genau dies ein wenig verwunderlich. Die deutsche Seite von Foursquare hingegen war bspw. erreichbar und lief stabil, ebenso die von Reddit.

Nicht alles auf eine Karte setzen

Für jedes Unternehmen, das seinen Service über die Cloud anbietet, gilt es daher: “Nutze die gesamte Cloud eines Anbieters und verlasse Dich nicht nur auf einen einzigen Anbieter!”

Durch die Verteilung einer Anwendung über mehrere Regionen und Availability Zones bei einem Anbieter wird die Verfügbarkeit der Anwendung drastisch erhöht. Zudem ist eine MultiVendor Strategie zwingend erforderlich. Außerdem müssen bereits von Beginn an Fallback Szenarien entwickelt werden, um gegen einen plötzlichen Ausfall vorbereitet zu sein.

Es geht also bspw. darum, Systeme aufzubauen, die im Fehlerfall automatisch eine gespiegelte Infrastruktur bei einem anderen Anbieter aufbauen. Besser wäre es, mehrere Anbieter parallel zu nutzen und die Services über mehrere Anbieter hinweg zu verteilen. Dazu gehört z.B.: Instanzen von unterschiedlichen Anbietern parallel produktiv einzusetzen, um damit das Risiko zu streuen.

Denn: Cloud Computing löst nicht alle Probleme automatisch…

Für die Zukunft

Amazon darf auf keinen Fall von einer Schuld freigesprochen werden, dazu werben sie viel zu deutlich mit der eigenen Verfügbarkeit. Dennoch, beim Cloud Computing handelt es sich um bedeutend mehr als nur das Nutzen von ein paar virtuellen Ressourcen und jeder Nutzer der Cloud ist für die Verfügbarkeit seiner Anwendung selber verantwortlich. Dafür stehen ihm ausreichend Mittel und Wege auf Grund der Cloud zur Verfügung!