2 Jahre mit Google App Engine                       Erfahrungen und Probleme, Stärken und Schwächen. Ein Praxisbericht.   ...
Tagesordnung                    1. Motivation                    2. Technischer Überblick                    3. Datenbank ...
Über uns                            Software as a Service                            Erster Prototyp 2010, direkt auf GAE ...
Unsere KundenMittwoch, 19. Dezember 12
ToolsMittwoch, 19. Dezember 12
2: ÜBERBLICKMittwoch, 19. Dezember 12
GAE ist performant                    • Innerhalb eines SDKs programmieren,                      JAR hochladen, fertig    ...
GAE ist PAAS                    • Jetty, Datastore, Services & APIs                    • Sehr mächtige Admin Console      ...
Prinzipieller Aufbau                                                         Application                                  ...
Instances: Frontends                    • Optimiert für Web Requests                    • 3 Leistungsstufen F1, F2, F4    ...
Instances: Backends                    • Optimiert für längere Aufgaben                    • 4 Leistungsstufen B1 - B4    ...
Unser Setup   Demo time!Mittwoch, 19. Dezember 12
3: DATENBANKMittwoch, 19. Dezember 12
Datastore                    • NoSQL:                            • Perfekt für große Datenmengen                          ...
It’s not SQL!                    • Keine Joins                    • Stark begrenzte Queries                            • k...
Beispiel                    • Alle Nerd-Shirts von “Per”, sortiert nach                      FirmennameMittwoch, 19. Dezem...
Beispiel                    • Alle Nerd-Shirts von “Per”, sortiert nach                      Firmenname             Compan...
Eventual Consistency                    • Objekt wird gespeichert.                    • Objekt wird aber erst nach einigen...
Datastore (2)                    • Eigentlich ist Datastore für uns zu groß                    • Latenzzeit höher als bei ...
Low Level API                                       ARGH!Mittwoch, 19. Dezember 12
JDO/JPA                             ARGH!Mittwoch, 19. Dezember 12
Objectify                 Objectify ofy = ObjectifyService.begin();                 Query<User> userQuery = ofy.query(User...
4: SERVICESMittwoch, 19. Dezember 12
Push Queue                    • Web Hooks: URL verzögert aufrufen                    • Queues haben Durchsatz-Limits, Retr...
Pull Queue                    • Eigene Applikation muss sich um                      Abarbeitung kümmern                  ...
Memcache                    • Zugriff auf DB ist langsam                    • Je weniger Zugriffe pro Request desto       ...
Data Caching                            1   2     3      ...   n   Instance-cache &    Request-cache                      ...
PageSpeed Service                    • Optimiert vollautomatisch das Frontend                            • JS minification ...
MapReduce                    • Parallele Bearbeitung großer                      Datenmengen                    • Nicht au...
Easy deployment                    • “ant update”Mittwoch, 19. Dezember 12
AppstatsMittwoch, 19. Dezember 12
5. BETRIEBMittwoch, 19. Dezember 12
Unerklärliche Fehler                    • Es können auch jederzeit einfach so                      Fehler auftreten, z.B. ...
Uptime                    • Komplettausfälle sind extrem selten. 2                      Mal in den letzten zwei Jahren    ...
Uptime                    • Komplettausfälle sind extrem selten. 2                      Mal in den letzten zwei Jahren    ...
Latenzzeit                    • Keine Garantien!Mittwoch, 19. Dezember 12
Latenzzeit                    • Keine Garantien!Mittwoch, 19. Dezember 12
Startup Time                    • Kein Request darf mehr als 30                      Sekunden dauern                    • ...
Startup Time (2)                    • Application Startup muss schnell                      gehen!                    • be...
Drum prüfe wer sich                ewig bindet...                    • Nicht alle Libraries/Tools unterstützt             ...
Fortschritte in 2012                            • HTTPS on custom domains                            • Cloud SQL          ...
6: BewertungMittwoch, 19. Dezember 12
Insgesamt sehr                positiv                    • Sehr robuste Administration                    • Sehr hohe Verf...
Kosten                    • Pro Lese & Schreibzugriff                    • Pro gespeichterten Daten                    • P...
Perfekt für:                    Finger weg:                    • Startups in B2B             • Risikoaverse Firmen        ...
We’re hiring.                            500€ Refer-a-friend Bonus!Mittwoch, 19. Dezember 12                            Ha...
Nächste SlideShare
Wird geladen in …5
×

Google App Engine. Zwei Jahre im Produktiveinsatz

4.019 Aufrufe

Veröffentlicht am

Java User Group Berlin: Zwei Jahre Produktiveinsatz mit Google App Engine. Ein Abriss über App Engine, Stärken und Schwächen, und Empfehlungen für wen sich App Engine lohnt.

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
4.019
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2.380
Aktionen
Geteilt
0
Downloads
16
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Google App Engine. Zwei Jahre im Produktiveinsatz

  1. 1. 2 Jahre mit Google App Engine Erfahrungen und Probleme, Stärken und Schwächen. Ein Praxisbericht. Per Fragemann, Java User Group Berlin, Dezember 2012Mittwoch, 19. Dezember 12
  2. 2. Tagesordnung 1. Motivation 2. Technischer Überblick 3. Datenbank 4. Services 5. Betrieb & Lessons learned 6. Bewertung & DiskussionMittwoch, 19. Dezember 12
  3. 3. Über uns Software as a Service Erster Prototyp 2010, direkt auf GAE 5 MitarbeiterMittwoch, 19. Dezember 12
  4. 4. Unsere KundenMittwoch, 19. Dezember 12
  5. 5. ToolsMittwoch, 19. Dezember 12
  6. 6. 2: ÜBERBLICKMittwoch, 19. Dezember 12
  7. 7. GAE ist performant • Innerhalb eines SDKs programmieren, JAR hochladen, fertig • Automatische Skalierung: Manche haben 1 Server-Instanz, andere haben 2000 • Kein Admin notwendigMittwoch, 19. Dezember 12
  8. 8. GAE ist PAAS • Jetty, Datastore, Services & APIs • Sehr mächtige Admin Console • Kein direkter Zugriff auf Server oder VMs! PAAS != IAASMittwoch, 19. Dezember 12
  9. 9. Prinzipieller Aufbau Application Application Application Version A Version B Version C (default) Fi A1 Fi A2 ... Fi AnMittwoch, 19. Dezember 12
  10. 10. Instances: Frontends • Optimiert für Web Requests • 3 Leistungsstufen F1, F2, F4 • Automatisches Skalieren: • Keine Sticky Sessions • 30-Sekunden-Limit • Gemeinsamer Zugriff auf DB & ServicesMittwoch, 19. Dezember 12
  11. 11. Instances: Backends • Optimiert für längere Aufgaben • 4 Leistungsstufen B1 - B4 • Extern adressierbar • Skalieren nicht, man bucht sie nach BedarfMittwoch, 19. Dezember 12
  12. 12. Unser Setup Demo time!Mittwoch, 19. Dezember 12
  13. 13. 3: DATENBANKMittwoch, 19. Dezember 12
  14. 14. Datastore • NoSQL: • Perfekt für große Datenmengen • Sehr einfach änderbar • Bis vor kurzem einzige Persistenz- LösungMittwoch, 19. Dezember 12
  15. 15. It’s not SQL! • Keine Joins • Stark begrenzte Queries • kein OR, kein NOT, ineffizientes IN • keine functions wie count oder avg() • Transaktionen nur auf sog. Entity- GroupsMittwoch, 19. Dezember 12
  16. 16. Beispiel • Alle Nerd-Shirts von “Per”, sortiert nach FirmennameMittwoch, 19. Dezember 12
  17. 17. Beispiel • Alle Nerd-Shirts von “Per”, sortiert nach Firmenname Company Nerd-Shirt User ID ID ID name userID name country companyID coding skills userName companyNameMittwoch, 19. Dezember 12
  18. 18. Eventual Consistency • Objekt wird gespeichert. • Objekt wird aber erst nach einigen Sekunden lesbar • Problem: Denormalisierung vs Eventual ConsistencyMittwoch, 19. Dezember 12
  19. 19. Datastore (2) • Eigentlich ist Datastore für uns zu groß • Latenzzeit höher als bei typischer DB • Vorteil: Programmierung für Datastore sehr gut abschätzbar. • Keine Überraschungen wie Deadlocks, Performance Degradation etcMittwoch, 19. Dezember 12
  20. 20. Low Level API ARGH!Mittwoch, 19. Dezember 12
  21. 21. JDO/JPA ARGH!Mittwoch, 19. Dezember 12
  22. 22. Objectify Objectify ofy = ObjectifyService.begin(); Query<User> userQuery = ofy.query(User.class) .filter("boss", viewedUser) .filter("isActive",true); List<User> teamMembers = userQuery.list(); Easy! And has caching!Mittwoch, 19. Dezember 12
  23. 23. 4: SERVICESMittwoch, 19. Dezember 12
  24. 24. Push Queue • Web Hooks: URL verzögert aufrufen • Queues haben Durchsatz-Limits, Retry- Regeln • Man umgeht 30-Sekunden Limit • Last-Steuerung • Gut kombinierbar mit Cron JobsMittwoch, 19. Dezember 12
  25. 25. Pull Queue • Eigene Applikation muss sich um Abarbeitung kümmern • Feinere Steuerung möglich • Queue kann auch mit REST abgefragt werdenMittwoch, 19. Dezember 12
  26. 26. Memcache • Zugriff auf DB ist langsam • Je weniger Zugriffe pro Request desto besser • Alles wichtige immer in Memcache speichern • Memcache ist Instanz-übergreifendMittwoch, 19. Dezember 12
  27. 27. Data Caching 1 2 3 ... n Instance-cache & Request-cache Memcache Data StoreMittwoch, 19. Dezember 12
  28. 28. PageSpeed Service • Optimiert vollautomatisch das Frontend • JS minification & combination • Image optimization • CSS inlining • Regeln frei wählbar https://developers.google.com/speed/docs/mod_pagespeed/config_filtersMittwoch, 19. Dezember 12
  29. 29. MapReduce • Parallele Bearbeitung großer Datenmengen • Nicht auf GAE beschränkt • Aber GAE sehr gut geeignet • Terabytes von Daten, Hunderte von Servern? Kein Problem. http://www.youtube.com/watch?v=EIxelKcyCC0Mittwoch, 19. Dezember 12
  30. 30. Easy deployment • “ant update”Mittwoch, 19. Dezember 12
  31. 31. AppstatsMittwoch, 19. Dezember 12
  32. 32. 5. BETRIEBMittwoch, 19. Dezember 12
  33. 33. Unerklärliche Fehler • Es können auch jederzeit einfach so Fehler auftreten, z.B. “bei 5% aller Requests” • Man kann dies im Forum und im Issue Tracker melden. Und dann beten. • Meistens werden sie innerhalb einiger Stunden bis Tage gelöst.Mittwoch, 19. Dezember 12
  34. 34. Uptime • Komplettausfälle sind extrem selten. 2 Mal in den letzten zwei Jahren • 3 Stunden Ende Oktober • 20 Minuten Mitte NovemberMittwoch, 19. Dezember 12
  35. 35. Uptime • Komplettausfälle sind extrem selten. 2 Mal in den letzten zwei Jahren • 3 Stunden Ende Oktober • 20 Minuten Mitte NovemberMittwoch, 19. Dezember 12
  36. 36. Latenzzeit • Keine Garantien!Mittwoch, 19. Dezember 12
  37. 37. Latenzzeit • Keine Garantien!Mittwoch, 19. Dezember 12
  38. 38. Startup Time • Kein Request darf mehr als 30 Sekunden dauern • Oft genug drückt App Engine ein Auge zu • Aber nicht immer! • Manchmal ist 10s das Limit!Mittwoch, 19. Dezember 12
  39. 39. Startup Time (2) • Application Startup muss schnell gehen! • besser kein Spring benutzen.. • Abhängigkeiten gering halten • Classloading verschieben • Lazy Initialisation (“is loadingRequest?”) • .. und allgemeines Performance TuningMittwoch, 19. Dezember 12
  40. 40. Drum prüfe wer sich ewig bindet... • Nicht alle Libraries/Tools unterstützt • Teilweise vorher klar, teilweise aber auch nicht • z.B. starke VerschlüsselungMittwoch, 19. Dezember 12
  41. 41. Fortschritte in 2012 • HTTPS on custom domains • Cloud SQL • Starke Verschlüsselung (z.B. BouncyCastle) • Eigene Threads • Volltextsuche • Backup/Restore • Traffic Splitting • Page SpeedMittwoch, 19. Dezember 12
  42. 42. 6: BewertungMittwoch, 19. Dezember 12
  43. 43. Insgesamt sehr positiv • Sehr robuste Administration • Sehr hohe Verfügbarkeit • Gute Performance • SkalierbarkeitMittwoch, 19. Dezember 12
  44. 44. Kosten • Pro Lese & Schreibzugriff • Pro gespeichterten Daten • Pro CPU Time • In 2011 überraschend stark gestiegen • Google’s Kommunikation nicht ideal • Aber man spart immer noch deutlich PersonalkostenMittwoch, 19. Dezember 12
  45. 45. Perfekt für: Finger weg: • Startups in B2B • Risikoaverse Firmen • “Dev-Startups” • Sehr komplexe Applikationen • Prototypen • Sehr langfristige Projekte Geeignet für: Kritisch evaluieren • Startups in B2C (Kosten • Kernprodukt einer bedenken) bestehenden Firma • Nicht-kritische Projekte, • >99.9 Uptime auch in traditionelleren FirmenMittwoch, 19. Dezember 12
  46. 46. We’re hiring. 500€ Refer-a-friend Bonus!Mittwoch, 19. Dezember 12 Habe fertig!

×