OOP 2010 Alexander Elsholz & Thomas Widmann I WidasConcepts GmbH Googles App Engine Open Source für die Cloud
2 Steckbrief Thomas Widmann: Principal Consultant und Geschäftsführer der WidasConcepts GmbH Alexander Elsholz: Senior Consultant mit dem Fokus auf der Entwicklung service-orientierter JEE-Architekturen WidasConcepts GmbH: Strategische IT-Architekturberatung Design und Realisierung moderner Softwaresysteme Web X.0 in Business & Technologie Business Intelligence Autoren zahlreicher Fachbeiträge in OBJEKTspektrum, JavaSpektrum und anderen Magazinen zum Thema SaaS, Cloud Computing, etc. thomas.widmann@widas.de @thomas_widmann alexander.elsholz@widas.de @elsholz
3 Agenda Warum brauchen wir Cloud Computing? Was ist Cloud Computing? Was ist so schwierig an Cloud Computing? GoogleAppEngine Architektur GoogleAppEngine4Java-Entwicklung GoogleAppEngine4Java-Features GoogleAppEngine compared Architecture4Cloud SOA & Widgets Für wen eignet sich Cloud Computing bereits heute? Wo geht die Reise hin?
4 Warum Cloud Computing? Analysen Kosten Endanwender Fachbereich
5 Warum Cloud Computing? Weil die Analysten behaupten Cloud Computing ist der IT-Trend?
6 Cloud Computing Vorhersagen: Gartner Source: Gartner (August 2009) Better image
7 Cloud Computing Vorhersagen: IDC
8 Cloud Warum Computing Cloud Computing? Vorhersagen Gibt es da noch mehr?
9 Warum Cloud Computing? Weil es Kosten spart? Antriebsfaktoren Cloud Computing Kostensenkungen realisieren Verbrauchsabhäbgige Abrechnung Administrationsaufwand reduzieren Flexibilität steigern Installation vereinfachen Zufriedenheit der Fachabteilungen erhöhen Vorgaben des Management erfüllen Lastspitzen abfedern Einfache Integration in bestehende Systeme Abhängigkeit von IT-Anbietern reduzieren Verfügbarkeit steigern Personalkosten in IT senken Kundenzufriedenheit erhöhen nutzen neuester Technologien/Funktionen IT Sicherheit erhöhen Zusammenarbeit mit Unternehmen Zusammenarbeit mit Partnern vereinfachen 1 2 3 4 Quelle: IDC sehr wichtig weniger wichtig
10 Cloud Computing und Kosten Offensichtliche Kosten Softwarelizenzen Entwicklungskosten Versteckte Kosten Update Verträge Hardware Kosten Personalkosten Software Updates durchführen und verteilen (Infrastruktur & Anwendung) Patches einspielen Infrastruktur warten Backups Verfügbarkeit sicherstellen Systeme überwachen Reparaturen koordinieren Change Management usw.
11 Cloud Computing und Kosten Ressourcen Kapazität Ressourcen Kapazität Nachfrage Nachfrage Zeit Zeit Eigener Betrieb Betrieb in the cloud Ungenutzte Resourcen
12 Cloud Computing und Kosten Ressourcen Ressourcen Verlust von Umsatz Zeit Zeit Ressourcen Verlust von Kunden Zeit Risiko zu geringer Kapazität
13 Cloud Computing und Kosten Kann man diese Kosten nicht auch mit Virtualisierung einsparen?
14 Cloud Computing vs. Virtualisierung Virtualisierungsanbieter pushen ihre Produkte mit dem Label Cloud Computing Virtualisierung, eine Technik um Cloud Computing zu ermöglichen Nur über Kosten zu argumentieren führt zu Virtualisierungslösungen (Private Clouds) Es gibt deutlich bessere Treiber für Cloud Computing "A cloud is not a cloud when it's not in the cloud" (Phil Wainwright, http://blogs.zdnet.com/saas/?p=846)
15 Cloud Warum Computing Cloud Computing? Vorhersagen Gibt es da noch mehr?
16 Warum Cloud Computing? Der Endanwender will Cloud Computing
17 Cloud Computing und der Endbenutzer
18 Cloud Computing und der Endanwender Mehr und mehr Endgeräte erfordern Cloud-basierte Dienste
19 Warum Cloud Computing? Die IT muss sich freischaufeln
20 Cloud Computing und der Fachbereich FB Web X.0 Immer höhere IT-Abdeckung Partnerschaften Patches Versionen Deployment Administration IT
21 Was ist Cloud Computing?
22 Cloud Computing-Manifesto Ability to scale and provision computing power dynamically in a cost efficient way and the ability of the consumer (end user, organization or IT staff) to make the most of that power without having to manage the underlying complexity of the technology. grid computing + utility computing + SOA + Web 2.0 + = Cloud Computing Scalability on Demand Streamlining the Datacenter Minimizing Startup Costs Improving business processes
23 Cloud Computing-Ebenen Software as a Service (SaaS) Platform as a Service (PaaS) Infrastructure as a Service (IaaS)
24 Cloud Computing-Taxonomy
25 Cloud Computing-Herausforderungen Abhängigkeit Integration Compliance Sicherheit Nutzung der Daten
26 Integration in die eigene IT Integration von Services Integration von Frontends Integration ist bidirektional!
27 Security 1. Zugriff vom Client auf die Cloud 2. Zugriff aus und in die Unternehmens-IT 3. Vertrauen in den Anbieter
28 GAE Architektur Google History Google Architektur Google & the Cloud Kosten Google Limitations
29 GAE History Datum Version Inhalt 07.04.2008 1.0 GAE Launch 05/2008 1.0.2 MemCache, Image API 07/2008 1.1.1 Spezifikationslücken geschlossen 08/2008 1.1.2 Persistenzerweiterungen 09/2008 1.1.5 Django mit AppEngine 10/2008 HTTPS-Support 12/2008 1.1.6 Dashboard 04.07.2009 1.2.0 Java Launch, Eclipse, Cronjobs Rasante Entwicklung Monatliche Releases Feedback aus Community Noch Early Look 07/2009 1.2.2 JDO/JPA 09/2009 1.2.5 Python & Java synchron, XMPP 10/2009 1.2.6 Incoming Mail 12/2009 1.2.8 Admin, JPA Vererbung, JAXB 1/2010 1.3 Fileupload & -Storage in Blob
30 Google s Cloud-Strategie Android Android
31 Google Systemarchitektur Skalierbarkeit & Sicherheit out of the box
32 GAE Systemarchitektur Client HTTP HTTPS Load Balancer AppEngine Frontend AppEngine Frontend AppEngine Frontend AppServer AppServer AppServer App Engine API App1 App1 App1 App1
33 GAE Plattform
34 GAE Sandbox SandBox App Engine API SandBox Keine nativen Python APIs Einige Java Libraries funktionieren nicht (JRE Whitelist) App1 App2 Max. Requestdauer = 30 sec. Zugriff auf Ressourcen außerhalb der App nur via Google APIs. Sicherheit Skalierbarkeit Keine Threads (aber Tasks) Keine Sockets (aber HTTP) Kein Filezugriff (aber Memcache) Kein Swing, AWT etc. http://code.google.com/appengine/docs/java/runtime.html#the_sandbox
35 GAE Kosten echtes Pay-Per-Use free quotas Kriterium Frei Preise CPU-Stunde 6,5/Tag $0.10 Storage GB/Monat 1GB gesamt $0.15 GB Bandbreite (outgoing) pro GB Bandbreite (incoming) 1GB/Tag $0.12 1GB/Tag $0.10 email 2000 $0.0001
36 Weitere Einschränkungen 100 MB MemCache storage limit Request/Response 10 MB Maximal 1 MB DataStore/MemCache API Call 1,000 Code und 1,000 statische Files in einer App deploybar (Workarounds verfügbar) 150 MB maximale Größe der statischen und dynamischen Dateien Maximal 1000 Entitäten als Ergebnis einer Abfrage Maximale Größe einer Entity 1 MB (größere Blobs möglich)
37 Admin Console
38 GAE4Java Entwicklung GAE Development IDE Integration Getting started Beispiel
39 GAE Entwicklung monitor App Engine SDK test MyApp develop Commandline IDE Integration Maven/Ant SDK monitor
40 GAE IDE Integration Projektstruktur Lokaler Build Lokales Deployen Lokales Debuggen Deploy in GAE JDO/JPA Enhancement http://code.google.com/p/maven-gae-plugin/ http://code.google.com/intl/de-de/appengine/docs/java/tools/ant.html http://code.google.com/intl/de-de/appengine/docs/java/tools/eclipse.html http://maxheapsize.com/2009/05/08/jetbrains-released-a-google-app-engine-plugin-for-intellij/ http://kenai.com/projects/nbappengine/pages/home
41 GAE Getting Started 1. Google Account 2. Early Access beantragen und freischalten 3. Neue App erstellen (http://appengine.google.com/) 4. Neues GAE-Projekt in Eclipse erstellen 5. Build 6. Deploy local 7. Test 8. Deploy in GAE 9. Test
42 GAE Beispiel: 1. Projekt erzeugen
43 GAE Beispiel Paketstruktur Java-Code Konfiguration Externe Libaries AppEngine Konfiguration JSP, Images, CSS,...
44 GAE Beispiel Konfiguration web.xml appengine-web.xml
45 GAE Beispiel Servlet JavaServlet API Sehr viele Webframeworks werden unterstützt: JSF 2 http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine?pli=1
46 GAE Beispiel Frontend: Wicket Komponentenorientiertes Webframework just HTML, just Java and meaningful abstractions AJAX embedded
47 GAE Beispiel Service: Spring Keine EJB-Unterstützung in GAE Spring für Transaktionssteuerung, Sicherheit und andere Querschnittsaufgaben
48 GAE Beispiel Backend: JPA Keine Unterstützung relationaler Datenbanken BigTable als Backend Data-Nucleus als JDO/JPA-Implementierung Enhancement in IDE-Integration bzw. ant/maven
49 Big Table & JPA nicht ohne Änderungen RDBMS möglich Tipps 1. Kapseln der Persistenzschicht! 2. Inklusive der DO-Objekte 3. Direktes Nutzen der Dataservice-API, wo nötig 4. Nicht relational denken duplizieren 5. Caching-Facade nutzen Keine Aggregatsfunktionen Keine Joins bei Anfragen Eine EntityGroup je Transaktion GAE Key-Klasse Beziehungen oft selfmanaged Denormalisierung Wenig Dokumentation JDO scheint bevorzugt?
50 GAE Features
51 GAE Services Zugriff auf Ressourcen nur via GAE-APIs
52 GAE Services & JSR JDO/JPA JCache javax.servlet. Servlet java.net. URL javax.mail implementiert DataStore MemCache WebApp Container URL-Fetch Mail Standardkonformität & Portierbarkeit
53 GAE Erweiterungen http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine
54 GAE Compared
55 vs. Google App Engine Amazon EC2 Programmiersprachen Java und Python und alle JVM-Sprachen beliebig Deployment bei Java: WAR Amazon Machine Image (AMI) APIs z.b. Servlets, JCache, JavaMail beliebig Datenbank BigTable, JPA, JDO SimpleDB, S3 (Simple Storage Service), ARDS Messaging TaskQueueAPI SQS (Simple Queue Service) Proprietäre Services Google Accounts, Cron-Job-Scheduling AWS (Amazon Web Services) Einschränkungen Technischer Einstieg, Tools Skalierung, Clustering, Load Balancing, Failover Programmiersprache, Middleware, GQL-DB, kein Filezugriff, keine Sockets, keine eigenen Threads, Timeout- Begrenzung kostenlose Basisfunktionalität, sehr einfacher Einstieg, gute Entwicklerunterstützung, gutes Eclipse-Plug-in, GAE Dashboard, Programmierbeispiele bei googlecode übernimmt die Google-Infrastruktur fast keine Einschränkungen höhere Einstiegshürde, ElasticFox in der Verantwortung des Entwicklers
56 vs. IaaS PaaS + PaaS
57 vs. Google App Engine Microsoft Azure Programmiersprachen Java und Python.NET, Ruby, Java, PHP Deployment bei Java: WAR Service Package (cspkg), Developmentumgebung in der Cloud APIs z.b. Servlets, JCache, JavaMail ASP.NET, WCF Datenbank BigTable, JPA, JDO SQL-Server, Azure Storage Service (ADO, LINQ) Messaging TaskQueueAPI Azure Message Queue Proprietäre Services Google Accounts, Cron-Job-Scheduling.NET Services, Live Services, Dynamic CRM Services Einschränkungen Programmiersprache, Middleware, GQL-DB, kein Filezugriff, keine Sockets, keine eigenen Threads, Timeout-Begrenzung Programmierumgebung Technischer Einstieg, Tools Skalierung, Clustering, Load Balancing, Failover kostenlose Basisfunktionalität, sehr einfacher Einstieg, gute Entwicklerunterstützung, gutes Eclipse-Plug-in, GAE Dashboard, Programmierbeispiele bei googlecode übernimmt die Google-Infrastruktur Unterstützung für Entwicklung und Deployment in Visual Studio.NET in der Verantwortung des Entwicklers, Cluster Services
58 vs., wenn Java/Python die Zielsprache ist Funktionen wie SMTP/XMMP gebraucht werden kleine Apps kostenlos gehostet werden sollen kurze Iterationszyklen gefordert sind Skalierbarkeit transparent sein soll Entwicklungsumgebung Linux, OSX ist Logs einfach im Zugriff sein sollen, wenn.net oder PHP die Zielsprache ist Viele Hintergrundprozesse nötig sind Flexibilität beim Speichersystem gefordert ist
59 PaaS im Vergleich Funktionalität Verfügbarkeit Komplexibilität, Flexibilität time to market
60 GAE Application Architektur Presentation Business Persistenz Integration in die eigene IT
61 GAE & Integration in die eigene IT REST REST WS* DatabaseConnector
62 GAE & Security HTTPS Sandbox Google s Security Infrastruktur App-Security Echte private clouds
63 PaaS im Einsatz Startup Etabliert SmugMug Pixenate animoto.com Viele Facebook apps: ilike New York Times NASDAQ Business Objects Activision Hasbro http://aws.amazon.com/solutions/case-studies/ BuddyPoke! (30M Aufrufe/Tag) Pixverse (PixChat) Hyperic (Cloudstatus) WhereDoYouGo WhoIsWhere GiftTag BestBuy Kaazing The White House http://code.google.com/appengine/casestudies.html
64 Architecture4TheCloud SOA Widgets
65 Cloud Computing Wo die Reise hingeht? PC verschwindet Internet der Dienste Alternatives Geschäftsmodell
66 66 PC verschwindet 1975 1985 1995 2005 2015
67 67 PC verschwindet Der Benutzer ist irgendwo, überall
68 WebDesktop: g.ho.st
69 WebDesktop: Chrome OS Ohne Cloud Computing keine Web-Desktops!
Transparente Orchestrierung Internet der Dienste Standardschnittstellen 70
71 PaaS & OpenSource? PaaS nutzen http://groups.google.com/group/google-appengine/web/google-app-engine-open-source-projects
72 Fazit Treiber für Cloud Computing sind nicht Kosten und Analysen, sondern Endkunde und Fachbereich Cloud Computing wird sich durchsetzen Amazon, Google und Microsoft bieten ihre Plattformen an mit unterschiedlichen Schwerpunkten GAE Mix von ausgereiften Technologien (Ausnahme JPA- Aufsatz von DataNucleus) Darüber hinaus entstehen gerade eine Vielzahl von APIs und Frameworks GAE/J ist noch Early Look dafür aber sehr stabil Vor allem für kleine/mittlere Webprojekte geeignet Interessant für OpenSource Projekte Startups und alle anderen, die ihre IT verschlanken wollen
73 Vielen Dank!
74 Grafikverweise Bezeichnung Link Eisberg Glaskugel Google s erster Server Inside google datacenter Analyst Apples erster Computer IDC Schneeschaufeln Schneeschaufeln2 History Äpfel&Birnen Chrome-OS Screenshot Amazon Private Cloud Fragezeichen http://www.bilderlernen.at/marginalia/bilder/2008/kw12_eisberg_allpstrs.jpg http://www.flickr.com/photos/weha/2343613702/ http://en.wikipedia.org/wiki/file:google%e2%80%99s_first_production_s erver.jpg http://scienceblogs.com/goodmath/2009/05/cloud_computing.php www.dokbyklick.de/gfx/s-analyse.jpg http://de.wikipedia.org/wiki/personal_computer http://blogs.idc.com/ie/wpcontent/uploads/2009/09/ww_it_cloud_services_forecast_2009.jpg http://www.flickr.com/photos/30075118@n03/3229803804/ http://www.flickr.com/photos/austrianpsycho/101290314/ http://www.flickr.com/photos/beilandi/438848662/ http://www.flickr.com/photos/marion/181523628/ http://de.wikipedia.org/wiki/screenshot http://w ww.zdnet.de/i/news/200903/0804/vpc-v6.png http://media.photobucket.com/image/m%2525c3%2525a4nnchen%20frag ezeichen/dawnologie/question-mark.jpg