Upload
nguyendan
View
218
Download
2
Embed Size (px)
Citation preview
30.06.2010
Verarbeitung großer
Datenmengen in der Cloud
Seminar „Aktuelle Software-Engineering-Praktiken
für das World Wide Web“
Andy Stumpp
Übersicht
• Motivation
• Was ist Cloud Computing?
• Sicherheitsaspekte
• Rechtliche Aspekte
• Amazon Web Services (AWS)
• Beispielanwendung
• Bedeutung für das Software Engineering
• Zusammenfassung
• Ausblick
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 230.06.2010
Motivation
• Cloud Computing in aller Munde
• Schnelles Wachstum
– Immer mehr Anbieter
– Microsoft: 10.000 – 20.000 neue Server pro Monat!
– Vergleich: Facebook betreibt ca. 10.000 Server
• Hype oder nicht Hype?
• Bedeutung für das Software Engineering
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 330.06.2010
Quelle: Amazon
Entwicklung des Cloud Computing
• John McCarthy: „ computation may someday be organized as
a public utility“ (1960)
• 2001: Salesforce.com bietet mit neuem Cloud-
Technologiemodell CRM-Lösung an.
• Juli 2002: Amazon gibt den Start der Amazon Web Services
(AWS) bekannt.
• 2006: Amazon‘s Elastic Compute Cloud (EC2)
• März 2007: Einzug des Begriffs in Wikipedia (engl.)
• November 2007: Blue Cloud von IBM
• 2008:
– Microsoft Windows Azure
– Google App Engine
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 430.06.2010
Was ist Cloud Computing?
• „The interesting thing about Cloud Computing is that we‘ve
redefined Cloud Computing to include everything that we
already do.“ – Larry Ellison, CEO of Oracle
• „A lot of people are jumping on the [cloud] bandwagon, but I
have not heard two people say the same thing about it. There
are multiple definition out there of the cloud.“ – Andy Isherwood, HP Vice President
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 530.06.2010
Was ist Cloud Computing?
• Definition orientiert sich an:
– Individuelle Dienstleistungen und Geschäftsmodelle
• „Cloud Computing steht für einen Pool aus abstrahierter,
hochskalierbarer und verwalteter Infrastruktur, die
Kundenanwendungen vorhält und nach Verbrauch
abrechnet“ (Forrester Research).
• Merkmale des Cloud Computing (nach Forrester Research)
– Vordefinierte und abstrahierte Infrastruktur
– Volle Virtualisierung
– Dynamische Infrastruktursoftware
– Abrechnung nach Verbrauch
– Keine langfristigen Verträge
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 630.06.2010
Ziele des Cloud Computing
• Rechenkapazitäten in Unternehmen werden nicht ständig
ausgelastet
• Also: Kapazitäten bei Bedarf abrufen
Kostenersparnis
• Anbieter versprechen außerdem:
– Hohe Skalierbarkeit
– Hohe Zuverlässigkeit & Sicherheit
– Einfaches Deployment
– Keine Wartung & Updates
– Flexibilität
• Vielfältige Einsatzgebiete:
– Online-Software: Google Maps, CRM, Office
– Forschung, Data-Mining: rechenintensive Aufgaben
– Infrastruktur durch Virtualisierung, Online-Backups, Lasttests
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 730.06.2010
Warum ist Cloud Computing interessant?
• Lebenszyklus eines
Startup in der
Wirtschaft:
1. Gute Idee
2. Schreibe Business-Plan
3. Suche Kapital
4. Falls erfolgreich…
5. Kaufe Computer
6. Installiere Computer
7. Starte Entwicklung
• Lebenszyklus mit Cloud
Computing in der
Wirtschaft:
1. Gute Idee
2. Suche Cloud Provider
3. Starte Entwicklung
sofort
4. Bezahle den aktuellen
Ressourcenverbrauch
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 830.06.2010
Cloud Computing ist besonders interessant für:
• Start-Ups:
– Problem:
• Keine vorhersehbare Wachstumsgeschwindigkeit
• Fehlende Investoren für Hard- und Software
– Nutzen:
• Große Infrastrukturen und professioneller Betrieb
• Geringere Kosten für Betrieb und Wartung
• Konzentration auf Kernaufgaben
• Durch Skalierbarkeit schnelles Wachstum möglich
• Abhängig von der Situation:
– Was soll überhaupt gehostet werden?
– Nutzungsdauer/Monat?
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 930.06.2010
Abgrenzung zum Grid Computing
• Grid Computing: Von „Electrical Power Grid“
– Ressourcen verfügbar machen wie der Strom aus der Steckdose
– Orientiert sich an Bedürfnissen des
– Verteilten und
– Hochleistungsrechnens
– Föderativer Ansatz
– Spezielle Anwendungen
– Unterschiedliche Zugangsregelungen
• Cloud Computing: Skalierbare
IT-Dienste für
– Potentiell große Zahl externer Nutzer
– Heterogene Anwendungen
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 1030.06.2010
Abgrenzung zum Grid Computing
• Was ist neu?
– Illusion von unendlichen IT-Ressoucen on-demand
– Pay for use Business-Modell auf kurzfristiger Basis
– Keine vorherige Begutachtung, Planung etc.
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 1130.06.2010
Typen von Clouds
• Infrastructure as a Service (IaaS):
– Rechnerkapazitäten
– Speicherkapazitäten
– Netzwerkinfrastruktur (Firewalls, Load-Balancer)
– Virtual Machines
• Platform as a Service (PaaS):
– Plattform selbst wird zur Verfügung gestellt
– Infrastruktur versteckt
– Einsatz: SaaS-Lösungen entwickeln und betreiben
• Software as a Service (SaaS):
– Software über das Internet; CRM, Office-Lösungen uvm.
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 1230.06.2010
Typen von Clouds
• Technische Unterschiede:
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 1330.06.2010
Organisatorische Unterschiede
• Neben technischen Abstufungen gibt es auch
organisatorische Unterschiede:
– Public Clouds
• Anbieter und Benutzer gehören unterschiedlicher Organisation an
• Abhängigkeit vom Anbieter
• gebunden an kommerzielles Geschäftsmodell
– Private Clouds
• Cloud innerhalb der Organisation/Unternehmen
• Management und Betrieb innerhalb des Unternehmens
• Vorteil: Sicherheit, Datenschutz
– Hybrid Clouds
• Public und Private Clouds gemischt
• Ziel: Belastungsspitzen abfangen,
Failover
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 1430.06.2010
Sicherheit in der Cloud
• Fraunhofer-Studie hat Cloud-Angebote nach IT-Schutzzielen
untersucht
– Vertraulichkeit, Integrität, Verfügbarkeit, Authentizität, Zurechenbarkeit
und Schutz der Privatsphäre
• Kernpunkte:
– Service Level Agreements zu ungenau
– Sicherheitszertifikate:
• ISO/IEC 27001
• Statement on Auditing Standard 70 Type II Report
– Unterschiedliche Qualitätsmerkmale
• Fazit: „Wer auf Cloud Computing setzt, muss sich darüber im
Klaren sein, dass die Verantwortung über die Daten in der
Regel bei ihm bleibe“
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 1530.06.2010
Rechtliche Aspekte in der Cloud
• Länderspezifische Gesetze und rechtliche Anforderungen
• Daten landen auf ausländischen Servern
• Rechtliche Problemfelder entstehen:
– Weltweit uneinheitliche Datenschutz
– Länderspezifische Krypto-Exportgesetze
• Momentan orientiert man sich an
– ASP (Application Service Providing) und
– Outsourcing-Verträgen
• Resultat:
– Schwierig, bei der Datenhaltung klare Grenzen zu erkennen
– Schwer zu beantworten: Werden gesetzliche Regelungen erfüllt?
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 1630.06.2010
Cloud-Anbieter
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 1730.06.2010
Amazon Web Services (AWS)
• Amazon Web Services
– Kategorie: Infrastructure as a Service
• Angebot umfasst über 20 Cloud-Dienste
– Rechnerkapazitäten
– File Hosting
– Datenbank
– Hadoop-Cluster
– Lastverteilung
– Skalierung
– Uvm.
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 1830.06.2010
Amazon AWS Preisbeispiel
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 1930.06.2010
Quelle: Amazon
Amazon Web Services (AWS)
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 2030.06.2010
Amazon Elastic MapReduce
• MapReduce
– Framework zur Verarbeitung von großen Datensätzen
– Bereitstellung und Management der benötigten
Berechnungsinfrastruktur
– Aufteilung der Berechnungen => Parallele Ausführung
– Keine High-End Server notwendig!
• Skalierbar
– Master-Knoten koordiniert die Arbeiten der restlichen Knoten
– Beliebig viele Slave-Knoten zuschaltbar
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 2130.06.2010
Quelle: Amazon
MapReduce
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 2230.06.2010
• Nutzt verteiltes Dateisystem
– Fehlertoleranz gegenüber Hardwareausfällen
– Notwendig durch Verzicht auf teure Spezialhardware
• Hadoop
– Eine von vielen MapReduce-Implementierungen
– Basiert auf Java
– Unterstützt Simple Storage Service (S3)
• Eclipse
– IBM MapReduce Tools
Wie funktioniert MapReduce?
• Zwei separat ablaufende Prozesse
– Map
– Reduce
• Dateninput
– Viele unstrukturierte Daten
• Map
– Aus Eingabedaten geeignete Key/Value-Paare bilden
– Gruppierung der Daten => Zwischenergebnisse
– Map-Berechnungen sind voneinander unabhängig
• Reduce
– Sobald alle Map-Aufrufe abgeschlossen
• Aufruf für jede Zwischenwertliste
• Gruppierte Key/Value-Paare verarbeiten
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 2330.06.2010
),( 11 vk
),(),( 2211 vklistvkmap
),())(,( 3222 vkvlistkreduce
MapReduce Beispielanwendung
• Beispiel: Worthäufigkeit
• Phase 1
– Input:• (1, „Feedback schafft Verbesserung.“)
• (2, „Verbesserung ist gut.“)
• (3, „Gut ist uns nicht gut genug.“)
– Output (Zwischenergebnispaare):• („feedback“, 1), („schafft“,1), („verbesserung“, 1)
• („ verbesserung“, 1), („ist“, 1), („gut“, 1)
• („gut“, 1), („ist“, 1), („uns“, 1), („nicht“, 1), („gut“, 1), („genug“, 1)
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 2430.06.2010
MapReduce Beispielanwendung
• Zwischenergebnispaare
• Framework sammelt Paare in Zwischenergebnislisten
• 1. Schritt:„feedback“, [1]
„verbesserung“, [1]
„gut“, [1]
• 2. Schritt:„schafft“, [1]
„ist“, [1, 1]
• Usw.
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 2530.06.2010
(„feedback“, 1), („schafft“,1), („verbesserung“, 1)(„ verbesserung“, 1), („ist“, 1), („gut“, 1)(„gut“, 1), („ist“, 1), („uns“, 1), („nicht“, 1), („gut“, 1), („genug“, 1)
MapReduce Beispielanwendung
• Sobald Map-Phase endet, kann die Reduce-Phase gestartet
werden
– Für jede Zwischenergebnisliste parallel!– „schafft“, [1] => [1]
– „ist“, [1, 1] => [2]
• Output:– [ („feedback“, 1), („schafft“,1), („verbesserung“, 2), („ist“, 2),
(„gut“, 3), („gut“, 1), („uns“, 1), („nicht“, 1), („genug“, 1) ]
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 2630.06.2010
Map-Funktion
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 2730.06.2010
Zwischenergebnispaar
einfügen
Tokens erzeugen
Reduce-Funktion
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 2830.06.2010
Alle Einsen summieren
Wort Anzahl Vorkommnisse
Demo
Demo
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 2930.06.2010
Software-Engineering Prinzipien
• Inwiefern finden sich zentrale Prinzipien des Software
Engineering im Cloud Computing wieder?
• Strukturierung – „Für ein komplexes System eine reduzierte
Darstellung finden“:
– Architektur
– APIs verbergen komplexe Sachverhalte
• Abstraktion:
– Amazon Machine Images
• Modularisierung:
– Web Services für unterschiedliche Aufgaben, unabhängige Nutzung
– Trennung der Funktionsbereiche schafft Flexibilität
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 3030.06.2010
Software-Engineering Prinzipien
• Mehrfachverwendbarkeit:
– Vom Anbieter: Infrastruktur + vordefinierte AMIs
– Nutzer: konfigurierte AMIs können parallel nebeneinander laufen
Schnellere Datenverarbeitung
– Aus Mehrfachverwendbarkeit resultiert Kosten- und Zeitersparnis
• Standardisierung:
– Intern:
• HTTP, SSL/TLS, AJAX, XML, JSON, REST
– Cloud-Dienste untereinander:
• Keine einheitlichen Schnittstellen
• Keine einheitlichen Sicherheitsprinzipien
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 3130.06.2010
Nutzen des Cloud Computing
• Kann die Qualität von Softwareprodukten durch Cloud
Computing gesteigert werden?
• Skalierbarkeit:
– Infrastruktur erlaubt, einfacher hoch und runter zu skalieren als bei der
herkömmlichen Entwicklung
– Unkomplizierte Verwaltung der Instanzen
• Performanz:
– Eng verbunden mit der Skalierung
– Load Balancer sorgt für automatische Lastverteilung
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 3230.06.2010
Nutzen des Cloud Computing
• Portierbarkeit:
– Plattformabhängige APIs
– Abhängigkeiten gegenüber dem Anbieter!
• Zuverlässigkeit:
– Amazon EC2 / Windows Azure: 99,95% Verfügbarkeit
– App Engine: 99,9%
– Entschädigung bei niedriger Verfügbarkeit
• Weitere Aspekte
– Korrektheit, Benutzbarkeit und Wartbarkeit werden eher nicht
beeinflusst durch Cloud Computing
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 3330.06.2010
Fazit
Kostenkontrolle (Pay-for-use)
Skalierbarkeit (Speicher, CPU, Bandbreite)
Flexibilität
Einfachheit => Usability
Keine Ressourcenplanung (Over-/Underprovisioning)
EC2 macht einen ausgereiften Eindruck
Fehlende Transparenz für den Kunden:
Wo liegen meine Daten?
Rechtssicherheit, Datenschutzbestimmungen
Sicherheitskonzept
Kein Datenzugriff bei Internet-Störung
Abhängigkeit um Anbieter
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 3430.06.2010
Cloud Computing
kein Hype!
Ausblick
• Noch zu untersuchen:
– Portierung von Anwendungen/Datenbanken auf die Cloud
• Entwicklung der Cloud:
– Marktforscher von IDC erwarten starkes Wachstum von 26%
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 3530.06.2010
Übersicht
• Motivation
• Was ist Cloud Computing?
• Sicherheitsaspekte
• Rechtliche Aspekte
• Amazon Web Services (AWS)
• Beispielanwendung
• Bedeutung für das Software Engineering
• Zusammenfassung
• Ausblick
Andy Stumpp : Verarbeitung großer Datenmengen in der Cloud 3630.06.2010