Seminarvortrag aus einem Cloud Computing Seminar an der Universität Stuttgart 2011. Beschreibung von Cloud Plattformen, deren Bedeutung und ein kleiner Marktüberblick.
3. Gliederung
• Motivation
• Definition
• Bedeutung
• Plattformgedanke und -bestandteile
• Marktüberblick
• Fazit
• Disclaimer: Die Aussagen in dieser Präsentation beziehen
sich nur auf die Programmiersprache Java
1
5. Definition
HuaaS • in der Mitte des Cloud
Stacks
SaaS • Unterteilung in
- Anwendungen Programmier- und
- Anwendungsdienste Ausführungsumgebung
PaaS • Bereitstellung eines
- Programmierumgebung Anwendungscontainers für
- Ausführungsumgebung eine oder mehrere
Programmiersprachen
IaaS
• Unterscheidung von
- Infrastrukturdienste
Application PaaS und
(Netzwerk / Speicher / Rechnen)
Integration and Governance
- Ressourcen PaaS
(virtuell / physikalisch)
Hardware
3
6. Abgrenzung zu SaaS und IaaS
Bild-Quelle: http://www.microsoft.com/austria/enterprise/article.aspx?Id=IaaS+PaaS+und+SaaS
• kein direkter Zugriff auf das Betriebs- und Dateisystem
• Application Server, Load Balancer und andere
Middleware ist schon installiert und über APIs nutzbar
4
7. Bedeutung
• genutzt von
Leading Edge
Users & ISVs
• in japanischen
Unternehmen
schon mehr
Verbreitung
• momentan noch
nicht für komplexe
Anwendungen
Bild-Quelle: http://www.gartner.com/it/page.jsp?id=1447613
5
8. Plattformgedanke und -bestandteile
Programmiermodell
• vergleichbar mit Enterprise
Anwendungen (Cluster aus
Application Servern mit Load
Balancer)
• Asynchronität
• Zustandslosigkeit
Bild-Quelle: http://www.ibm.com/developerworks/websphere/library/techarticles/
0606_petersonr/0606_petersonr.html
Entwicklungsprozess
• Anbieterauswahl (Vendor Lock-In)
• mehrere Versionen parallel
benutzbar (Test, Stage, Live)
• SDKs und IDE Plugins der Anbieter
• Neuentwicklung oder Migration
6
Bild-Quelle: http://www.klinksoft.com/webdev.htm
9. Plattformgedanke und -bestandteile
Laufzeitumgebung
• basierend auf existierenden
Laufzeitumgebungen
• kann jederzeit vom PaaS Anbieter
heruntergefahren werden
• teilweise eingeschränkt (Sandbox)
• regelt Zugriff auf DB
• z.B. Java Servlet Container
Bild-Quelle: http://download.oracle.com/docs/cd/E19933-01/819-2641/6n4trr8j8/index.html
Persistenz
• kein direkter Zugriff Festplatte
• Datenhaltung in DB, Caches RDS
oder BLOB Stores
• Zugriff via anbieterabhängiger
NoSQL
API oder Laufzeitumgebung BLOB
Bild-Quelle: http://www.softicons.com/free-icons/system-icons/
colobrush-icons-by-eponas-deeway/database-icon 7
10. Plattformgedanke und -bestandteile
Nebenläufigkeit und Kommunikation
• Threads nicht überall erlaubt
• Asynchronität über
anbieterabhängige APIs
• Nutzung von Messaging
Infrastruktur
Bild-Quelle: http://www.thefullwiki.org/Thread_pool_pattern
Zugriffsschicht
• Zugriff über das Internet via
HTTP
• Nutzung der
Protokolleigenschaften von
HTTP (Cache, Zustandslosigkeit)
Bild-Quelle: http://www.tcpipguide.com/free/t_HTTPOperationalModelandClientServerCommunication.htm
8
11. Plattformgedanke und -bestandteile
Multi-Tenancy
Bild-Quelle: http://www.ibm.com/developerworks/webservices/library/ws-multitenantpart2/index.html
• Mandantenfähigkeit auf verschiedenen Ebenen
• PaaS Anbieter unterstützen Multi-Tenancy z.T. durch
Namespaces für DB und Tasks
9
15. Salesforce.com: VMforce
• VMware Stack
• läuft im salesforce
Rechenzentrum
• starke Anbindung an force.com
Dienste und Datenbank
• unterstützt Java Anwendungen
• schwer portierbar
Bild-Quelle: http://blog.springsource.com/2010/04/27/vmforce-spring-cloud/
13
16. Microsoft: Windows Azure
Bild-Quelle: http://www.microsoft.com/china/ard/en/innoforum/innoforum_14.mspx
• große Auswahl an Programmiersprachen
• 3 Rollen (Web Role, Worker Role, VM Role)
• auch als Appliance nutzbar
14
Frage an die Runde: Hat schon mal eine JEE Anwendung geschrieben? - für ein Cluster aus App Servern? - die in der Cloud läuft? Ist JEE jedem ein Begriff?
Abgrenzung erst auf nächster Folie
Migration von on premise Lösungen in die Cloud schrittweise - nur in VM in der Cloud laufen lassen (schlechte Skalierbarkeit) - nur DB in die Cloud auslagern - nur Anwendung ... - alles auf einmal migrieren (DB Verbindung auf Cloud APIs abstimmen, evtl. Laufzeitmgebungseinschränkungen beachten)
bei GAE und AWS ist es für Java der Servlet Container
nur anbieter und produkte nennen
GAE Sandbox: - keine Threads - begrenzte Anzahl an HTTP Requests pro Zeiteinheit - keine nativen Java Netzwerkverbindungen, alles über APIs
Compute, Storage, AppFabric, Virtual Network, CDN und Marketplace
- Vendor Lock-In durch anbieterspezifische APIs - Portierbarkeit zwischen Anbietern teilweise schwer - erhöhte Flexibilität kostet auch mehr - Fixkosten senken nur wenn ich eigene Infrastruktur abschaffe bzw. nicht weiter ausbaue, geht nicht bei on premise cloud - Skalierbarkeit nur bei Anpassung der Anwendung, wenn nicht schon async und zustandslos - Hochverfügbarkeit bisher schlecht (SLAs) nur 3 9en - Diskussion über Standards, z.b. mal gehen Threads, mal nicht bzw. nur über andere API