55
Architecture Best Practices für Webanwendungen aus Amazon Web Services Steffen Krause Technical Evangelist @sk_bln [email protected]

Architecture Best Practices für Webanwendungen auf AWS

Embed Size (px)

DESCRIPTION

Webanwendungen sollen schnell, immer verfügbar, personalisiert sein und viele Features haben. Aber was heißt das für die Architektur der Anwendung auf Amazon Web Services. In diesem Webinar stellen wir anhand eines "Regelbuchs" Aufgaben vor, die eine Webanwendung erfüllen sollte und wie diese auf AWS erfüllt werden können.

Citation preview

Page 1: Architecture Best Practices für Webanwendungen auf AWS

Architecture Best Practices für Webanwendungen aus Amazon Web Services

Steffen KrauseTechnical Evangelist

@[email protected]

Page 2: Architecture Best Practices für Webanwendungen auf AWS

Was die Nutzer wollen...

Page 3: Architecture Best Practices für Webanwendungen auf AWS

Was die Nutzer wollen...

Schnell!

Page 4: Architecture Best Practices für Webanwendungen auf AWS

Was die Nutzer wollen...

Schnell!Immer

verfügbar!

Page 5: Architecture Best Practices für Webanwendungen auf AWS

Was die Nutzer wollen...

Schnell!

Features!

Immer verfügba

r!

Page 6: Architecture Best Practices für Webanwendungen auf AWS

Was die Nutzer wollen...

Schnell!

Features!

Persönlich!

Immer verfügba

r!

Page 7: Architecture Best Practices für Webanwendungen auf AWS

Wie?

Page 8: Architecture Best Practices für Webanwendungen auf AWS

Leistungsfähige Webanwendungen

Page 9: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnell

Regel 1: Bedienen Sie alle Webanfragen

Regel 3: Skalieren Sie mit der Anfrageanzahl

Regel 4: Vereinfachung durch Dienste

Regel 5: Automatisieren Sie den Betrieb

Regel 6: Nutzen Sie die Eigenschaften der Cloud

Page 10: Architecture Best Practices für Webanwendungen auf AWS

Globale AWS Infrastruktur

9 Regionen

25 Availability Zones

Ständige Erweiterung

Page 11: Architecture Best Practices für Webanwendungen auf AWS

DNS Anwendung DatenAnfrage

a) Stellen Sie sicher, dass die Anfragen an die Vordertür kommen

Regel 1: Bedienen Sie alle Webanfragen

Page 12: Architecture Best Practices für Webanwendungen auf AWS

DNS Anwendung DatenAnfrage

…dann ist dies alles irrelevant

Die Clients können Ihren

Domainnamen nicht auflösen?

Regel 1: Bedienen Sie alle Webanfragena) Stellen Sie sicher, dass die Anfragen an die Vordertür kommen

Page 13: Architecture Best Practices für Webanwendungen auf AWS

DNS Anwendung DatenAnfrage

“100% verfügbar”

SLA

Regel 1: Bedienen Sie alle Webanfragen

Route53

http://aws.amazon.com/route53/sla

a) Stellen Sie sicher, dass die Anfragen an die Vordertür kommen

Feature Details

Global Unterstützt durch die globalen AWS Edge Locations – schnelle und zuverlässige DNS Auflösung

Skalierbar Skaliert automatisch abhängig von Abfragevolumen

Latency based Routing Unterstützt Auflösung der Endpunkte auf Basis der Latenz, ermöglicht Anwendungen in mehreren Regionen

Integriert Integration in andere AWS Dienste, Auflösung für Load Balancer, S3 und EC2

Sicher Integration mit IAM ermöglicht detaillierte Kontrolle über DNS Record Zugriff

Page 15: Architecture Best Practices für Webanwendungen auf AWS

Region

DNS Anwendung DatenAnfrage

Regel 1: Bedienen Sie alle Webanfragen

Elastic Load

Balancer Region

Availability Zone

Availability Zone

Availability Zone

Availability Zone

Route53

a) Stellen Sie sicher, dass die Anfragen an die Vordertür kommenb) Machen Sie die Tür auf, wenn die Anfragen ankommen

Elastic Load BalancingMehrere Availability ZonesMehrere Regionen

Page 16: Architecture Best Practices für Webanwendungen auf AWS

Region

Regel 1: Bedienen Sie alle Webanfragen

DNS Anwendung DatenAnfrage

Elastic Load

Balancer

Route53

Region

Availability Zone

Availability Zone

Availability Zone

Availability Zone

a) Stellen Sie sicher, dass die Anfragen an die Vordertür kommenb) Machen Sie die Tür auf, wenn die Anfragen ankommenc) Erstellen Sie eine Antwort aus den Daten

Multi-AZ RDS

(Master-Slave)

Replikation zwischen Regionen

Read Replicas

Page 17: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnell

Regel 1: Bedienen Sie alle Webanfragen

Regel 3: Skalieren Sie mit der Anfrageanzahl

Regel 4: Vereinfachung durch Dienste

Regel 5: Automatisieren Sie den Betrieb

Regel 6: Nutzen Sie die Eigenschaften der Cloud

Page 18: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnella) Wählen Sie die schnellste Route

Region A

Route53

Region B

Anfrage

Page 19: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnella) Wählen Sie die schnellste Route

Region A

Route53

Region B

16ms 92ms

Anfrage

Page 20: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnella) Wählen Sie die schnellste Route

Region A

Route53

Region B

16ms 92ms

Anfrage

Page 21: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnell

Region A

Route53

Region B

16ms

AnfrageRegion A DNS Eintrag

a) Wählen Sie die schnellste Route

Page 22: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnella) Wählen Sie die schnellste Routeb) Entlasten Sie die Anwendungsserver

London

Paris

NY

Bedient von S3/images/*

3

Bedient vonEC2*.php

2

EinCNAMEwww.mysite.com

1

CloudFrontWeltweites Content Distribution Network

Einfache Verteilung von Inhalten an Benutzer

mit niedriger Latenz und hoher

Geschwindigkeit. Ohne Vertragsbindung

Page 24: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnella) Wählen Sie die schnellste Routeb) Entlasten Sie die Anwendungsserverc) Cachen Sie wo Sie können

ElastiCacheMemcached oder Redis kompatibler

Caching-Dienst

Liefert häufig abgefragte, sich wenig

verändernde Daten aus einem

skalierbaren Caching-Cluster

Reduzieren der Last auf die

Datenbank und andere Server

Page 25: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnella) Wählen Sie die schnellste Routeb) Entlasten Sie die Anwendungsserverc) Cachen Sie wo Sie könnend) Einstellige Latenz wo es wichtig ist

Skalierung

Dat

enba

nk A

bfra

ge-P

erfo

rman

ce

Gewünschte konsistente Performance

Tatsächliche, abnehmende

Performance bei Skalierung

Page 26: Architecture Best Practices für Webanwendungen auf AWS

Skalierung

Tatsächliche, abnehmende

Performance bei Skalierung

Regel 2: Bedienen Sie Anfragen möglichst schnella) Wählen Sie die schnellste Routeb) Entlasten Sie die Anwendungsserverc) Cachen Sie wo Sie könnend) Einstellige Latenz wo es wichtig ist

Dat

enba

nk A

bfra

ge-P

erfo

rman

ce

Gewünschte konsistente Performance

Managementprobleme

Data ShardingData Caching

ProvisionierungCluster Management

Fehlertoleranz

Page 27: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnella) Wählen Sie die schnellste Routeb) Entlasten Sie die Anwendungsserverc) Cachen Sie wo Sie könnend) Einstellige Latenz wo es wichtig ist

Dynamo DB Abfrage-Performance

Durchschnittliche serverseitige Latenz: einstellige Millisekunden

Verwendet SSDs, Entworfen für konsistente geringe Latenz bei jeder Skalierung

Skalierung

Dat

enba

nk A

bfra

ge-P

erfo

rman

ce

DynamoDB

Niedrige LatenzGroße Skalierung

Keine AdministrationVorhersagbare Performance

Page 28: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnell

Regel 1: Bedienen Sie alle Webanfragen

Regel 3: Skalieren Sie mit der Anfrageanzahl

Regel 4: Vereinfachung durch Dienste

Regel 5: Automatisieren Sie den Betrieb

Regel 6: Nutzen Sie die Eigenschaften der Cloud

Page 29: Architecture Best Practices für Webanwendungen auf AWS

Regel 3: Skalieren Sie mit der Anfrageanzahla) Scale Up

Vertikale Skalierung

ab $0,02/h

Skalierung mit Elastic Compute Cloud (EC2)Rechenkapazität in der Cloud

Auswahl an CPU, Memory & Festplatten-Optionen

Über 15 Instanztypen verfügbar von Micro bis Cluster Compute

Page 30: Architecture Best Practices für Webanwendungen auf AWS

Regel 3: Skalieren Sie mit der Anfrageanzahla) Scale Upb) Scale Out

Trigger auto-scaling policy

as-create-auto-scaling-group MyGroup --launch-configuration MyConfig--availability-zones eu-west-1a--min-size 4--max-size 200

Auto ScalingAutomatische Anpassung der Anzahl der EC2-Instanzen

nach aktuellem Bedarf

Page 31: Architecture Best Practices für Webanwendungen auf AWS

a) Scale Upb) Scale Out

Regel 3: Skalieren Sie mit der Anfrageanzahl

ManuellSenden eines API Aufrufs oder

Kommandozeilenaufruf zum Erstellen oder Terminieren von Instanzen (+/-)

Nach ZeitplanSkalierung (+/-) basiert auf Datum und

Zeit

Nach PolicySkalierung basiert auf Bedingungen, basiert

auf benutzerdefinierten Bedingungen

Auto-RebalanceInstanzen werden erstellt und Terminiert

um Ausbalancierung zwischen verschiedenen AZs zu erhalten

Page 32: Architecture Best Practices für Webanwendungen auf AWS

Regel 3: Skalieren Sie mit der Anfrageanzahla) Scale Upb) Scale Outc) Schnellere Datenbanken

Elastic Block StoreProvisioned IOPS: Bis zu 4000

IO/s pro EBS Volume

Vorhersehbare Performance

für anspruchsvolle Workloads

wie Datenbanken

DynamoDBProvisionierte Lese/Schreib-

Performance pro Tabelle

Vorhersehbare hohe

Performance mit geringer

Latenz

Page 33: Architecture Best Practices für Webanwendungen auf AWS

Fallstudie

“AWS gave us the flexibility to bring a massive amount of capacity online in a short period of

time and allowed us to do so in an operationally straightforward way.

AWS is now Shazam’s cloud provider of choice,”

Jason Titus,CTO

DynamoDB: über 500000 Writes pro

Sekunde

Page 34: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnell

Regel 1: Bedienen Sie alle Webanfragen

Regel 3: Skalieren Sie mit der Anfrageanzahl

Regel 4: Vereinfachung durch Dienste

Regel 5: Automatisieren Sie den Betrieb

Regel 6: Nutzen Sie die Eigenschaften der Cloud

Page 35: Architecture Best Practices für Webanwendungen auf AWS

Ihr Geschäft

70%

On-PremisesInfrastruktur

30%

Verwalten der vorhandenen Infrastruktur

Regel 4: Vereinfachung durch Dienste

Page 36: Architecture Best Practices für Webanwendungen auf AWS

AWSCloud-basierte

Infrastruktur

Ihr Geschäft

Mehr Zeit für Ihr Geschäft Konfiguration der Cloud-Dienste

70%

30%70%

On-PremisesInfrastruktur

30%

Verwalten der vorhandenen Infrastruktur

Regel 4: Vereinfachung durch Dienste

Page 37: Architecture Best Practices für Webanwendungen auf AWS

Geteilte Verantwortung

Gebäude

Physische Sicherheit

Rechner-Infrastruktur

Storage-Infrastruktur

Netzwerk-Infrastruktur

Virtualisierungsschicht

Betriebssystem

Applikationen

Security Groups

Firewalls

Netzwerk-Konfiguration

Benutzerverwaltung

+ =

Kunde

Page 38: Architecture Best Practices für Webanwendungen auf AWS

Relational Database ServiceDatabase-as-a-Service

Datenbank-Instanzen ohne Installation und Administration

Skalierbare und fehlertolerante Konfigurationen

DynamoDBNoSQL Datenbank mit provisioniertem Durchsatz

Hohe, vorhersagbare Performance

Vollständig verteilte, fehlertolerante Architektur

Verwenden Sie RDS für relationale Datenbanken

Verwenden Sie DynamoDB als

High Performance Key-Value DB

Regel 4: Vereinfachung durch Dienste

Page 39: Architecture Best Practices für Webanwendungen auf AWS

Amazon SQS

Processing

task/processing

trigger

Processing results

Amazon SQSZuverlässiger, hoch skalierbarer Message

Queue Dienst für Nachrichten zwischen

Instanzen

Task A

Task B

(Auto-scaling)

Task C

2

3

1

Simple Workflow (SWF)Koordinierte Verarbeitung über mehrere

Anwendungen

Integration von AWS und nicht-AWS

Ressourcen

Verteilter Status in komplexen Systemen

Prozessübergreifende Workflows in der Cloud mit SWF

Zuverlässiges Message Queuing ohne

zusäzliche Software

Regel 4: Vereinfachung durch Dienste

Page 40: Architecture Best Practices für Webanwendungen auf AWS

Cloud SearchElastische Volltextsuch-Engine auf

Basis von Amazon A9

Voll gemanagter Dienst mit

umfassenden Features

Skaliert automatisch

DocumentServer

Results

SearchServer

Installieren Sie keine Suchmaschine, nutzen Sie CloudSearch

Verarbeiten Sie große Datenmengen

effizient mit EMR

Elastic MapReduceElastischer Hadoop Cluster

Integriert mit S3 & DynamoDB

Nutzung von Hive & Pig Analytics Skripts

Integration mit kostengünstigen Spot-

Instanzen

Regel 4: Vereinfachung durch Dienste

Page 41: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnell

Regel 1: Bedienen Sie alle Webanfragen

Regel 3: Skalieren Sie mit der Anfrageanzahl

Regel 4: Vereinfachung durch Dienste

Regel 5: Automatisieren Sie den Betrieb

Regel 6: Nutzen Sie die Eigenschaften der Cloud

Page 42: Architecture Best Practices für Webanwendungen auf AWS

Compute

Storage

Security Scaling

Database

NetworkingMonitoring

Messaging

Workflow

DNSLoad Balancing

BackupCDN

API

Regel 5: Automatisieren Sie den Betrieba) Alles ist programmierbar

Alles zugänglich über CLI, API oder

Konsole

Umfassende Automatisierung ermöglicht

einfachen Betrieb

Page 43: Architecture Best Practices für Webanwendungen auf AWS

Regel 5: Automatisieren Sie den Betrieba) Alles ist programmierbarb) Denken Sie in wegwerfbaren ein-Klick-Deployments

AWS Elastic BeanstalkAutomatisches

Ressourcen-Management

AWS CloudFormation

Templates für Deployment und

Verwaltung

Web App

Enterprise

App

Datenbank

AWS OpsWorks

Dev-Ops Framework für Application Lifecycle

Management

Page 44: Architecture Best Practices für Webanwendungen auf AWS

Regel 5: Automatisieren Sie den Betrieba) Alles ist programmierbarb) Denken Sie in wegwerfbaren ein-Klick-Deploymentsc) Entwerfen Sie für Fehler, planen Sie Selbstheilung

Passen Sie den Instanz-Start an

Instanzen sollten beim Start „Wer bin ich?“ fragen und sich

dynamisch auf Basis der Antwort konfigurieren

Kapazität basiert auf aktueller Last

Starte mit minimaler Anzahl Instanzen die

auch bei Fehlern noch ausreichend ist; Skalierung nach

aktuellem Bedarf

Wissen was los ist, automatische AktionenCloudWatch Standard und

benutzerdefinierte Metriken zur Alarm-Erstellung.

Reaktion mit automatisierten administrativen Aktionen

Bootstrapping Auto Scaling CloudWatch

Page 45: Architecture Best Practices für Webanwendungen auf AWS

Regel 5: Automatisieren Sie den Betrieba) Alles ist programmierbarb) Denken Sie in wegwerfbaren ein-Klick-Deploymentsc) Entwerfen Sie für Fehler, planen Sie Selbstheilung

Page 46: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnell

Regel 1: Bedienen Sie alle Webanfragen

Regel 3: Skalieren Sie mit der Anfrageanzahl

Regel 4: Vereinfachung durch Dienste

Regel 5: Automatisieren Sie den Betrieb

Regel 6: Nutzen Sie die Eigenschaften der Cloud

Page 47: Architecture Best Practices für Webanwendungen auf AWS

Small 1.7 GB, 1 ECU1 virtual core

Large 7.5 GB4 ECUs2 virtual cores

Extra Large 15 GB 8 ECUs4 virtual cores

Hi-Mem XL 17.1 GB6.5 ECUs2 virtual cores

Hi-Mem 2XL 34.2 GB13 ECUs4 virtual cores

Hi-Mem 4XL 68.4 GB26 ECUs8 virtual cores

High-CPU Med 1.7 GB 5 ECUs 2 virtual cores

High-CPU XL 7 GB 20 ECUs8 virtual cores

Micro 613 MB Up to 2 ECUs (for short bursts)

Cluster GPU 4XL 22 GB 33.5 ECUs8 Nehalem virtual cores 2 x NVIDIA Tesla “Fermi” M2050 GPUs

Cluster Compute 4XL 23 GB 33.5 ECUs 8 Nehalem virtual cores

Cluster Compute 8XL 60.5 GB 88 ECUs 8 core 2 x Intel Xeon

Medium 3.75 GB2 ECUs1 virtual cores

Regel 6: Nutzen Sie die Eigenschaften der Clouda) Optimieren Sie die Instanztypen

Page 48: Architecture Best Practices für Webanwendungen auf AWS

Unix/Linux Instanzen starten bei 0,02 USD / Stunde

„Pay as you go“ für Rechenleistung

Niedrige Kosten, flexibel

Keine Verpflichtung, keine initialen Kosten, Bezahlung nur für Nutzung

Anwendungsfälle

Anwendungen mit kurzfristiger, unbekannter oder unvorhersehbarer Last

Anwendungs-Entwicklung und Test

On-Demand Instanzen

1 oder 3 Jahre Bindung

Initiale Zahlung verringert Kosten pro Stunde deutlich

Niedrige Kosten / Vorhersehbarkeit

Reservierung: Kapazität ist verfügbar wenn sie gebraucht wird

Anwendungsfälle

Dauerhaft genutzte Anwendungen

Vorhersehbare Last

Reservierte Kapazität erforderlich, z.B. Disaster Recovery

Reserved Instanzen

Angebote für ungenutzte EC2 Kapazität

Spot Preis basiert auf Angebot und Nachfrage, wird automatisch bestimmt

Sehr kostengünstig, große, zeit-unkritische Lasten

Instanzen werden bei Steigen des Spot-Preises wieder terminiert

Anwendungsfälle

Apps mit flexiblen Start- und Endzeiten

Preissensitive Anwendungen

Zeit-unkritische Batchläufe

Spot Instanzen

Regel 6: Nutzen Sie die Eigenschaften der Clouda) Optimieren Sie die Instanztypen

Page 49: Architecture Best Practices für Webanwendungen auf AWS

a) Optimieren Sie die Instanztypenb) Werten Sie große Datenmengen mit Elastic MapReduce aus

Regel 6: Nutzen Sie die Eigenschaften der Cloud

Elastic MapReduceVerwalteter, elastischer Hadoop Cluster

Integration mit S3 & DynamoDB

Nutzt Hive & Pig Analytics Scripts

Integration mit EC2 Optionen wie Spot Instanzen

Feature Details

Skalierbar Verwenden Sie so viele Hadoop Compute Instanzen wie Sie wollen. Ändern Sie die Anzahl der Instanzen während der Job Flow läuft

Integriert mit anderen Diensten

Nahtlose Integration mit S3 als Quelle oder Ausgabe Integration mit DynamoDB

Umfassend Unterstützt Hive und Pig für Definition der Analysen, und komplexe Jobs in Cascading, Java, Ruby, Perl, Python, PHP, R, oder C++

Kosteneffizient Unterstützt Spot Instanzen

Monitoring Überwachung der Job Flows aus der AWS Konsole

Page 50: Architecture Best Practices für Webanwendungen auf AWS

Cluster Compute InstanzenOptimiert für hohe Rechenleistung

Intel® Xeon® E5-2670 Prozessoren

10 Gigabit Ethernet

Cluster Compute

80 EC2 Compute Units

60GB RAM

3TB LocalDisk

Network Placement GroupsCluster-Instances werden in „Placement Group“

bereitgestellt und erhalten dadurch eine

Netzwerkanbindung mit 10 Gbit/s und niedriger Latenz

10Gbit/s

Regel 6: Nutzen Sie die Eigenschaften der Clouda) Optimieren Sie die Instanztypenb) Werten Sie große Datenmengen mit Elastic MapReduce ausc) Erstellen Sie einen Supercomputer wenn Sie ihn brauchen

Page 51: Architecture Best Practices für Webanwendungen auf AWS

Regel 2: Bedienen Sie Anfragen möglichst schnell

Regel 1: Bedienen Sie alle Webanfragen

Regel 3: Skalieren Sie mit der Anfrageanzahl

Regel 4: Vereinfachung durch Dienste

Regel 5: Automatisieren Sie den Betrieb

Regel 6: Nutzen Sie die Eigenschaften der Cloud

Page 52: Architecture Best Practices für Webanwendungen auf AWS

Verwenden Sie AWS für...

Schnell!

Features!

Persönlich!

Immer verfügba

r!

Page 53: Architecture Best Practices für Webanwendungen auf AWS

Verwenden Sie AWS für...

Elastische Kapazität

Hochverfügbar, Global

Agilität & Automatische

Ops

Storage,Big Data, Analytics

✔ ✔

✔ ✔

Page 54: Architecture Best Practices für Webanwendungen auf AWS

• http://aws.amazon.com/de • Beginnen Sie mit dem Free Tier:

http://aws.amazon.com/de/free/• 25 US$ Startguthaben für Neukunden:

http://aws.amazon.com/de/campaigns/account/• Twitter: @AWS_Aktuell• Facebook: http://www.facebook.com/awsaktuell • Webinare: http://aws.amazon.com/de/about-aws/events/ • Slideshare: http://de.slideshare.net/AWSAktuell • Bisherige Webinare: http://aws.amazon.com/de/recorded-webinar/

Ressourcen

Page 55: Architecture Best Practices für Webanwendungen auf AWS

Vielen Dank!

Steffen Krause@AWS_Aktuell

[email protected]