© Excellent backgrounds/Shutterstock.com
Java Magazin
Patterns und Best Practices

Architektur im Kontext der Cloud

Cloud Computing hat unbestreitbar erhebliche Vorteile in Bezug auf Kosten, Ausfallsicherheit und Flexibilität. Auch ZANOX möchte - wie andere Firmen auch - von diesen Vorteilen profitieren. Aber ist es ausreichend, wenn ich meine Applikationen einfach in einer Cloud-Umgebung ohne Modifikation laufen lasse? In den allermeisten Fällen lässt sich diese Frage mit einem klaren „Nein“ beantworten. Um die Vorteile einer Cloud-Infrastruktur voll ausnutzen zu können, muss ich auch die entsprechenden Patterns bei der Architektur meiner Applikation verwenden. In diesem Artikel werden einige Best Practices und Patterns beschrieben, um skalierbare, ausfallsichere und verteilte Applikationen zu entwickeln, die global ausgerollt werden können.

Sascha Möllering


Unsere Beispielapplikation ist eine simple Webanwendung, bestehend aus einem Application Server oder einer Applikation, die die notwendigen Frameworks mitbringt und einer Datenbank. Die Applikation kann z. B. Java EE oder Spring nutzen – an dieser Stelle macht das keinen Unterschied und ist ein vernachlässigbares Detail. Alle in diesem Artikel betrachteten Patterns sind im Prinzip auch bei anderen Cloud-Providern einsetzbar. An dieser Stelle wird aber lediglich Amazon Web Services (AWS) betrachtet.

Regions und Availability ZonesDie Services von Amazon werden an verschiedenen Standorten weltweit angeboten. Diese Standorte bestehen aus einer so genannten Region und Availability Zones (AZs). Jede Region ist ein separater geografischer Bereich; innerhalb einer Region befinden sich mehrere voneinander getrennte Standorte, die sog. Availability Zones. Um das Ausfallrisiko zu minimieren, sollte die verwendete Infrastruktur in verschiedenen Availability Zones innerhalb einer Region aufgesetzt werden. Zwischen einzelnen Regions werden keine Daten repliziert, falls das nicht ausdrücklich vom Kunden gewünscht/angefordert wird [1].

Für die Beispielarchitektur in diesem Artikel verwenden wir folgende Komponenten:

Amazon EC2: Amazon Elastic Compute Cloud (EC2) ist ein Service, der konfigurierbare Rechenkapazität in der Cloud in Form von virtuellen Maschinen bietet. Für diesen Service existiert eine Fülle unterschiedlicher OS-Images. In unserem Beispiel verwenden wir Amazon Linux, was eine Art RHEL-basiertes Linux-OS von Amazon ist.

Amazon S3: Amazon Simple Storage Service (S3) ist eine Art HTTP-basiertes Speichersystem „für das Internet“. S3 bietet simple APIs zum Lesen und Schreiben nahezu beliebiger Datenmengen.

Amazon CloudFront ist ein Content Delivery Network (CDN), das statische Inhalte mit geringer Latenz bereitstellt.

Amazon DynamoDB ist eine NoSQL-Implementierung in der Amazon-Cloud; die Tabellen haben keine festen Schemata, d. h. die abgelegten Elemente können eine unterschiedliche Anzahl an Attributen enthalten.

Amazon RDS: Amazon Relational Database Service (RDS) ist ein Service, der managed Datenbanken in der Amazon-Cloud bereitstellt. Zur Auswahl stehen folgende relationale Datenbanksysteme: MySQL, Postgre­SQL, Oracle und Microsoft SQL Server.

Amazon SQS: Amazon Simple Queue Service (SQS) ist eine managed Queue, die eine einfache Entkopplung von einzelnen Komponenten einer Cloud-Applikation ermöglicht.

Amazon Kinesis ist ein managed Service für die Verarbeitung...

Java Magazin
Patterns und Best Practices

Architektur im Kontext der Cloud

Cloud Computing hat unbestreitbar erhebliche Vorteile in Bezug auf Kosten, Ausfallsicherheit und Flexibilität. Auch ZANOX möchte - wie andere Firmen auch - von diesen Vorteilen profitieren. Aber ist es ausreichend, wenn ich meine Applikationen einfach in einer Cloud-Umgebung ohne Modifikation laufen lasse? In den allermeisten Fällen lässt sich diese Frage mit einem klaren „Nein“ beantworten. Um die Vorteile einer Cloud-Infrastruktur voll ausnutzen zu können, muss ich auch die entsprechenden Patterns bei der Architektur meiner Applikation verwenden. In diesem Artikel werden einige Best Practices und Patterns beschrieben, um skalierbare, ausfallsichere und verteilte Applikationen zu entwickeln, die global ausgerollt werden können.

Sascha Möllering


Unsere Beispielapplikation ist eine simple Webanwendung, bestehend aus einem Application Server oder einer Applikation, die die notwendigen Frameworks mitbringt und einer Datenbank. Die Applikation kann z. B. Java EE oder Spring nutzen – an dieser Stelle macht das keinen Unterschied und ist ein vernachlässigbares Detail. Alle in diesem Artikel betrachteten Patterns sind im Prinzip auch bei anderen Cloud-Providern einsetzbar. An dieser Stelle wird aber lediglich Amazon Web Services (AWS) betrachtet.

Regions und Availability ZonesDie Services von Amazon werden an verschiedenen Standorten weltweit angeboten. Diese Standorte bestehen aus einer so genannten Region und Availability Zones (AZs). Jede Region ist ein separater geografischer Bereich; innerhalb einer Region befinden sich mehrere voneinander getrennte Standorte, die sog. Availability Zones. Um das Ausfallrisiko zu minimieren, sollte die verwendete Infrastruktur in verschiedenen Availability Zones innerhalb einer Region aufgesetzt werden. Zwischen einzelnen Regions werden keine Daten repliziert, falls das nicht ausdrücklich vom Kunden gewünscht/angefordert wird [1].

Für die Beispielarchitektur in diesem Artikel verwenden wir folgende Komponenten:

Amazon EC2: Amazon Elastic Compute Cloud (EC2) ist ein Service, der konfigurierbare Rechenkapazität in der Cloud in Form von virtuellen Maschinen bietet. Für diesen Service existiert eine Fülle unterschiedlicher OS-Images. In unserem Beispiel verwenden wir Amazon Linux, was eine Art RHEL-basiertes Linux-OS von Amazon ist.

Amazon S3: Amazon Simple Storage Service (S3) ist eine Art HTTP-basiertes Speichersystem „für das Internet“. S3 bietet simple APIs zum Lesen und Schreiben nahezu beliebiger Datenmengen.

Amazon CloudFront ist ein Content Delivery Network (CDN), das statische Inhalte mit geringer Latenz bereitstellt.

Amazon DynamoDB ist eine NoSQL-Implementierung in der Amazon-Cloud; die Tabellen haben keine festen Schemata, d. h. die abgelegten Elemente können eine unterschiedliche Anzahl an Attributen enthalten.

Amazon RDS: Amazon Relational Database Service (RDS) ist ein Service, der managed Datenbanken in der Amazon-Cloud bereitstellt. Zur Auswahl stehen folgende relationale Datenbanksysteme: MySQL, Postgre­SQL, Oracle und Microsoft SQL Server.

Amazon SQS: Amazon Simple Queue Service (SQS) ist eine managed Queue, die eine einfache Entkopplung von einzelnen Komponenten einer Cloud-Applikation ermöglicht.

Amazon Kinesis ist ein managed Service für die Verarbeitung...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang