SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
2 Jahre mit Google App Engine
                       Erfahrungen und Probleme, Stärken und Schwächen. Ein Praxisbericht.
                              Per Fragemann, Java User Group Berlin, Dezember 2012




Mittwoch, 19. Dezember 12
Tagesordnung
                    1. Motivation
                    2. Technischer Überblick
                    3. Datenbank
                    4. Services
                    5. Betrieb & Lessons learned
                    6. Bewertung & Diskussion

Mittwoch, 19. Dezember 12
Über uns
                            Software as a Service
                            Erster Prototyp 2010, direkt auf GAE
                            5 Mitarbeiter




Mittwoch, 19. Dezember 12
Unsere Kunden




Mittwoch, 19. Dezember 12
Tools




Mittwoch, 19. Dezember 12
2: ÜBERBLICK
Mittwoch, 19. Dezember 12
GAE ist performant
                    • Innerhalb eines SDKs programmieren,
                      JAR hochladen, fertig
                    • Automatische Skalierung: Manche
                      haben 1 Server-Instanz, andere haben
                      2000
                    • Kein Admin notwendig



Mittwoch, 19. Dezember 12
GAE ist PAAS

                    • Jetty, Datastore, Services & APIs
                    • Sehr mächtige Admin Console
                    • Kein direkter Zugriff auf Server oder
                      VMs!

                                     PAAS != IAAS


Mittwoch, 19. Dezember 12
Prinzipieller Aufbau
                                                         Application
                                                        Application
                                                       Application




                                    Version A
                                                        Version B      Version C
                                     (default)



                            Fi A1   Fi A2        ...        Fi An




Mittwoch, 19. Dezember 12
Instances: Frontends
                    • Optimiert für Web Requests
                    • 3 Leistungsstufen F1, F2, F4
                    • Automatisches Skalieren:
                            • Keine Sticky Sessions
                    • 30-Sekunden-Limit
                    • Gemeinsamer Zugriff auf DB & Services


Mittwoch, 19. Dezember 12
Instances: Backends

                    • Optimiert für längere Aufgaben
                    • 4 Leistungsstufen B1 - B4
                    • Extern adressierbar
                    • Skalieren nicht, man bucht sie nach
                      Bedarf



Mittwoch, 19. Dezember 12
Unser Setup   Demo time!




Mittwoch, 19. Dezember 12
3: DATENBANK
Mittwoch, 19. Dezember 12
Datastore

                    • NoSQL:
                            • Perfekt für große Datenmengen
                            • Sehr einfach änderbar
                    • Bis vor kurzem einzige Persistenz-
                      Lösung



Mittwoch, 19. Dezember 12
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-
                      Groups


Mittwoch, 19. Dezember 12
Beispiel
                    • Alle Nerd-Shirts von “Per”, sortiert nach
                      Firmenname




Mittwoch, 19. Dezember 12
Beispiel
                    • Alle Nerd-Shirts von “Per”, sortiert nach
                      Firmenname

             Company               Nerd-Shirt             User
                ID                      ID                  ID
               name                   userID               name
              country               companyID           coding skills
                                    userName
                                  companyName



Mittwoch, 19. Dezember 12
Eventual Consistency

                    • Objekt wird gespeichert.
                    • Objekt wird aber erst nach einigen
                      Sekunden lesbar
                    • Problem: Denormalisierung vs Eventual
                      Consistency



Mittwoch, 19. Dezember 12
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 etc


Mittwoch, 19. Dezember 12
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.class)
                              .filter("boss", viewedUser)
                              .filter("isActive",true);
                 List<User> teamMembers = userQuery.list();




                                   Easy! And has caching!


Mittwoch, 19. Dezember 12
4: SERVICES
Mittwoch, 19. Dezember 12
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 Jobs

Mittwoch, 19. Dezember 12
Pull Queue

                    • Eigene Applikation muss sich um
                      Abarbeitung kümmern
                    • Feinere Steuerung möglich
                    • Queue kann auch mit REST abgefragt
                      werden



Mittwoch, 19. Dezember 12
Memcache
                    • Zugriff auf DB ist langsam
                    • Je weniger Zugriffe pro Request desto
                      besser
                    • Alles wichtige immer in Memcache
                      speichern
                    • Memcache ist Instanz-übergreifend


Mittwoch, 19. Dezember 12
Data Caching

                            1   2     3      ...   n
   Instance-cache &
    Request-cache
                                    Memcache

                                    Data Store




Mittwoch, 19. Dezember 12
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_filters

Mittwoch, 19. Dezember 12
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=EIxelKcyCC0


Mittwoch, 19. Dezember 12
Easy deployment



                    • “ant update”




Mittwoch, 19. Dezember 12
Appstats




Mittwoch, 19. Dezember 12
5. BETRIEB
Mittwoch, 19. Dezember 12
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
Uptime

                    • Komplettausfälle sind extrem selten. 2
                      Mal in den letzten zwei Jahren
                            • 3 Stunden Ende Oktober
                            • 20 Minuten Mitte November




Mittwoch, 19. Dezember 12
Uptime

                    • Komplettausfälle sind extrem selten. 2
                      Mal in den letzten zwei Jahren
                            • 3 Stunden Ende Oktober
                            • 20 Minuten Mitte November




Mittwoch, 19. Dezember 12
Latenzzeit


                    • Keine Garantien!




Mittwoch, 19. Dezember 12
Latenzzeit


                    • Keine Garantien!




Mittwoch, 19. Dezember 12
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
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 Tuning
Mittwoch, 19. Dezember 12
Drum prüfe wer sich
                ewig bindet...

                    • Nicht alle Libraries/Tools unterstützt
                    • Teilweise vorher klar, teilweise aber
                      auch nicht
                    • z.B. starke Verschlüsselung



Mittwoch, 19. Dezember 12
Fortschritte in 2012
                            • HTTPS on custom domains
                            • Cloud SQL
                            • Starke Verschlüsselung (z.B. BouncyCastle)
                            • Eigene Threads
                            • Volltextsuche
                            • Backup/Restore
                            • Traffic Splitting
                            • Page Speed
Mittwoch, 19. Dezember 12
6: Bewertung



Mittwoch, 19. Dezember 12
Insgesamt sehr
                positiv
                    • Sehr robuste Administration
                    • Sehr hohe Verfügbarkeit
                    • Gute Performance
                    • Skalierbarkeit




Mittwoch, 19. Dezember 12
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
                      Personalkosten

Mittwoch, 19. Dezember 12
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
                      Firmen

Mittwoch, 19. Dezember 12
We’re hiring.
                            500€ Refer-a-friend Bonus!




Mittwoch, 19. Dezember 12
                            Habe fertig!

Weitere ähnliche Inhalte

Andere mochten auch

Search Engine Friendly Design (SEFD) - SMX München 2014
Search Engine Friendly Design (SEFD) - SMX München 2014Search Engine Friendly Design (SEFD) - SMX München 2014
Search Engine Friendly Design (SEFD) - SMX München 2014Daniel Herndler
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Javatcouery
 
WordPress State of the Word 2012
WordPress State of the Word 2012WordPress State of the Word 2012
WordPress State of the Word 2012photomatt
 
Introduction à Google App Engine - WAQ 2011
Introduction à Google App Engine - WAQ 2011Introduction à Google App Engine - WAQ 2011
Introduction à Google App Engine - WAQ 2011jimmybourassa
 
Cours Search Marketing - 1 Introduction - IAE Lille
Cours Search Marketing -  1 Introduction - IAE LilleCours Search Marketing -  1 Introduction - IAE Lille
Cours Search Marketing - 1 Introduction - IAE LilleRenaud JOLY
 
Cloud & Google app engine Presentation by Ngiambus Marcus
 Cloud & Google app engine Presentation  by Ngiambus Marcus Cloud & Google app engine Presentation  by Ngiambus Marcus
Cloud & Google app engine Presentation by Ngiambus MarcusMarc NGIAMBA
 
Web meets Location - Mobile Social Media Relations
Web meets Location - Mobile Social Media RelationsWeb meets Location - Mobile Social Media Relations
Web meets Location - Mobile Social Media RelationsSympra GmbH (GPRA)
 
Intellectual Property Rights
Intellectual Property RightsIntellectual Property Rights
Intellectual Property Rightsharshhanu
 
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!adesso AG
 
SEFD - Search Engine Friendly Design - SMX München 2015 Kai Spriestersbach
SEFD - Search Engine Friendly Design - SMX München 2015 Kai SpriestersbachSEFD - Search Engine Friendly Design - SMX München 2015 Kai Spriestersbach
SEFD - Search Engine Friendly Design - SMX München 2015 Kai SpriestersbachSEARCH ONE
 
Codathlon Google App Engine
Codathlon Google App EngineCodathlon Google App Engine
Codathlon Google App EngineVincentBostoen
 
Internal Combustion Engines - Construction and Working (All you need to know,...
Internal Combustion Engines - Construction and Working (All you need to know,...Internal Combustion Engines - Construction and Working (All you need to know,...
Internal Combustion Engines - Construction and Working (All you need to know,...Mihir Pai
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
É Hora de criar sua própria engine de jogos?
É Hora de criar sua própria engine de jogos?É Hora de criar sua própria engine de jogos?
É Hora de criar sua própria engine de jogos?José Farias
 
Oficina Python e Google App Engine
Oficina Python e Google App EngineOficina Python e Google App Engine
Oficina Python e Google App EngineRodrigo Amaral
 
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13 Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13 Clavis Segurança da Informação
 
CAP 4: SEO - Optimizacion de Contenido
CAP 4: SEO - Optimizacion de ContenidoCAP 4: SEO - Optimizacion de Contenido
CAP 4: SEO - Optimizacion de ContenidoGary Briceño
 

Andere mochten auch (20)

Search Engine Friendly Design (SEFD) - SMX München 2014
Search Engine Friendly Design (SEFD) - SMX München 2014Search Engine Friendly Design (SEFD) - SMX München 2014
Search Engine Friendly Design (SEFD) - SMX München 2014
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Java
 
WordPress State of the Word 2012
WordPress State of the Word 2012WordPress State of the Word 2012
WordPress State of the Word 2012
 
Google App Engine
Google App EngineGoogle App Engine
Google App Engine
 
Introduction à Google App Engine - WAQ 2011
Introduction à Google App Engine - WAQ 2011Introduction à Google App Engine - WAQ 2011
Introduction à Google App Engine - WAQ 2011
 
Cours Search Marketing - 1 Introduction - IAE Lille
Cours Search Marketing -  1 Introduction - IAE LilleCours Search Marketing -  1 Introduction - IAE Lille
Cours Search Marketing - 1 Introduction - IAE Lille
 
Cloud & Google app engine Presentation by Ngiambus Marcus
 Cloud & Google app engine Presentation  by Ngiambus Marcus Cloud & Google app engine Presentation  by Ngiambus Marcus
Cloud & Google app engine Presentation by Ngiambus Marcus
 
Web meets Location - Mobile Social Media Relations
Web meets Location - Mobile Social Media RelationsWeb meets Location - Mobile Social Media Relations
Web meets Location - Mobile Social Media Relations
 
Intellectual Property Rights
Intellectual Property RightsIntellectual Property Rights
Intellectual Property Rights
 
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
 
RoomCloud Booking Engine
RoomCloud Booking EngineRoomCloud Booking Engine
RoomCloud Booking Engine
 
SEFD - Search Engine Friendly Design - SMX München 2015 Kai Spriestersbach
SEFD - Search Engine Friendly Design - SMX München 2015 Kai SpriestersbachSEFD - Search Engine Friendly Design - SMX München 2015 Kai Spriestersbach
SEFD - Search Engine Friendly Design - SMX München 2015 Kai Spriestersbach
 
Codathlon Google App Engine
Codathlon Google App EngineCodathlon Google App Engine
Codathlon Google App Engine
 
Internal Combustion Engines - Construction and Working (All you need to know,...
Internal Combustion Engines - Construction and Working (All you need to know,...Internal Combustion Engines - Construction and Working (All you need to know,...
Internal Combustion Engines - Construction and Working (All you need to know,...
 
Zk Framework
Zk FrameworkZk Framework
Zk Framework
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
É Hora de criar sua própria engine de jogos?
É Hora de criar sua própria engine de jogos?É Hora de criar sua própria engine de jogos?
É Hora de criar sua própria engine de jogos?
 
Oficina Python e Google App Engine
Oficina Python e Google App EngineOficina Python e Google App Engine
Oficina Python e Google App Engine
 
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13 Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
 
CAP 4: SEO - Optimizacion de Contenido
CAP 4: SEO - Optimizacion de ContenidoCAP 4: SEO - Optimizacion de Contenido
CAP 4: SEO - Optimizacion de Contenido
 

Ähnlich wie Google App Engine. Zwei Jahre im Produktiveinsatz

Native app entwicklung vs. alternativen am beispiel von appcelerator
Native app entwicklung vs. alternativen am beispiel von appceleratorNative app entwicklung vs. alternativen am beispiel von appcelerator
Native app entwicklung vs. alternativen am beispiel von appceleratorkonstantinfiltschew
 
SimpleDB - Chancen einer Cloud Datenbank
SimpleDB - Chancen einer Cloud DatenbankSimpleDB - Chancen einer Cloud Datenbank
SimpleDB - Chancen einer Cloud DatenbankONE Schweiz
 
12.12.12 - 12 Schritte für KMUs
12.12.12 - 12 Schritte für KMUs12.12.12 - 12 Schritte für KMUs
12.12.12 - 12 Schritte für KMUsSam Steiner
 
Kritische app performance erfolgreich optimieren mit Bison
Kritische app performance erfolgreich optimieren mit BisonKritische app performance erfolgreich optimieren mit Bison
Kritische app performance erfolgreich optimieren mit BisonDynatrace
 
Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?Dierk Lenz
 
Hadoop in modernen BI-Infrastrukturen
Hadoop in modernen BI-InfrastrukturenHadoop in modernen BI-Infrastrukturen
Hadoop in modernen BI-Infrastruktureninovex GmbH
 
Joomla! Organisationsstruktur
Joomla! OrganisationsstrukturJoomla! Organisationsstruktur
Joomla! OrganisationsstrukturDavid Jardin
 
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...Markus Flechtner
 
Verschlüsselte Properties in Liquibase
Verschlüsselte Properties in LiquibaseVerschlüsselte Properties in Liquibase
Verschlüsselte Properties in LiquibaseDominik Hirt
 

Ähnlich wie Google App Engine. Zwei Jahre im Produktiveinsatz (10)

Native app entwicklung vs. alternativen am beispiel von appcelerator
Native app entwicklung vs. alternativen am beispiel von appceleratorNative app entwicklung vs. alternativen am beispiel von appcelerator
Native app entwicklung vs. alternativen am beispiel von appcelerator
 
SEBLOD CCK
SEBLOD CCKSEBLOD CCK
SEBLOD CCK
 
SimpleDB - Chancen einer Cloud Datenbank
SimpleDB - Chancen einer Cloud DatenbankSimpleDB - Chancen einer Cloud Datenbank
SimpleDB - Chancen einer Cloud Datenbank
 
12.12.12 - 12 Schritte für KMUs
12.12.12 - 12 Schritte für KMUs12.12.12 - 12 Schritte für KMUs
12.12.12 - 12 Schritte für KMUs
 
Kritische app performance erfolgreich optimieren mit Bison
Kritische app performance erfolgreich optimieren mit BisonKritische app performance erfolgreich optimieren mit Bison
Kritische app performance erfolgreich optimieren mit Bison
 
Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?
 
Hadoop in modernen BI-Infrastrukturen
Hadoop in modernen BI-InfrastrukturenHadoop in modernen BI-Infrastrukturen
Hadoop in modernen BI-Infrastrukturen
 
Joomla! Organisationsstruktur
Joomla! OrganisationsstrukturJoomla! Organisationsstruktur
Joomla! Organisationsstruktur
 
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
 
Verschlüsselte Properties in Liquibase
Verschlüsselte Properties in LiquibaseVerschlüsselte Properties in Liquibase
Verschlüsselte Properties in Liquibase
 

Mehr von Per Fragemann

Introducing Development Team Leads
Introducing Development Team LeadsIntroducing Development Team Leads
Introducing Development Team LeadsPer Fragemann
 
All hands February 2016
All hands February 2016 All hands February 2016
All hands February 2016 Per Fragemann
 
Small Improvement - Quarterly Company Update July 2015
Small Improvement - Quarterly Company Update July 2015Small Improvement - Quarterly Company Update July 2015
Small Improvement - Quarterly Company Update July 2015Per Fragemann
 
Q1 2015 Company Update - All hands meeting April 2015
Q1 2015 Company Update - All hands meeting April 2015Q1 2015 Company Update - All hands meeting April 2015
Q1 2015 Company Update - All hands meeting April 2015Per Fragemann
 
Q1 2015 Company Update - All hands meeting April 2015
Q1 2015 Company Update - All hands meeting April 2015Q1 2015 Company Update - All hands meeting April 2015
Q1 2015 Company Update - All hands meeting April 2015Per Fragemann
 
Small Improvemnts: All hands meeting - January 2015
Small Improvemnts: All hands meeting - January 2015Small Improvemnts: All hands meeting - January 2015
Small Improvemnts: All hands meeting - January 2015Per Fragemann
 
Small improvements-continuous
Small improvements-continuousSmall improvements-continuous
Small improvements-continuousPer Fragemann
 
Small improvements-360-degree-reviews
Small improvements-360-degree-reviewsSmall improvements-360-degree-reviews
Small improvements-360-degree-reviewsPer Fragemann
 
Small improvements Objectives Overview
Small improvements Objectives OverviewSmall improvements Objectives Overview
Small improvements Objectives OverviewPer Fragemann
 
Boostrapping to $1m in annual Revenue. The slow growth option.
Boostrapping to $1m in annual Revenue. The slow growth option.Boostrapping to $1m in annual Revenue. The slow growth option.
Boostrapping to $1m in annual Revenue. The slow growth option.Per Fragemann
 
Recruiting great developers
Recruiting great developersRecruiting great developers
Recruiting great developersPer Fragemann
 

Mehr von Per Fragemann (13)

Introducing Development Team Leads
Introducing Development Team LeadsIntroducing Development Team Leads
Introducing Development Team Leads
 
All hands February 2016
All hands February 2016 All hands February 2016
All hands February 2016
 
Small Improvement - Quarterly Company Update July 2015
Small Improvement - Quarterly Company Update July 2015Small Improvement - Quarterly Company Update July 2015
Small Improvement - Quarterly Company Update July 2015
 
Q1 2015 Company Update - All hands meeting April 2015
Q1 2015 Company Update - All hands meeting April 2015Q1 2015 Company Update - All hands meeting April 2015
Q1 2015 Company Update - All hands meeting April 2015
 
Q1 2015 Company Update - All hands meeting April 2015
Q1 2015 Company Update - All hands meeting April 2015Q1 2015 Company Update - All hands meeting April 2015
Q1 2015 Company Update - All hands meeting April 2015
 
Small Improvemnts: All hands meeting - January 2015
Small Improvemnts: All hands meeting - January 2015Small Improvemnts: All hands meeting - January 2015
Small Improvemnts: All hands meeting - January 2015
 
Update q2 2014
Update q2 2014Update q2 2014
Update q2 2014
 
Small improvements-continuous
Small improvements-continuousSmall improvements-continuous
Small improvements-continuous
 
Small improvements-360-degree-reviews
Small improvements-360-degree-reviewsSmall improvements-360-degree-reviews
Small improvements-360-degree-reviews
 
Small improvements Objectives Overview
Small improvements Objectives OverviewSmall improvements Objectives Overview
Small improvements Objectives Overview
 
Boostrapping to $1m in annual Revenue. The slow growth option.
Boostrapping to $1m in annual Revenue. The slow growth option.Boostrapping to $1m in annual Revenue. The slow growth option.
Boostrapping to $1m in annual Revenue. The slow growth option.
 
Deck December 2013
Deck December 2013 Deck December 2013
Deck December 2013
 
Recruiting great developers
Recruiting great developersRecruiting great developers
Recruiting great developers
 

Google App Engine. Zwei Jahre im Produktiveinsatz

  • 1. 2 Jahre mit Google App Engine Erfahrungen und Probleme, Stärken und Schwächen. Ein Praxisbericht. Per Fragemann, Java User Group Berlin, Dezember 2012 Mittwoch, 19. Dezember 12
  • 2. Tagesordnung 1. Motivation 2. Technischer Überblick 3. Datenbank 4. Services 5. Betrieb & Lessons learned 6. Bewertung & Diskussion Mittwoch, 19. Dezember 12
  • 3. Über uns Software as a Service Erster Prototyp 2010, direkt auf GAE 5 Mitarbeiter Mittwoch, 19. Dezember 12
  • 7. GAE ist performant • Innerhalb eines SDKs programmieren, JAR hochladen, fertig • Automatische Skalierung: Manche haben 1 Server-Instanz, andere haben 2000 • Kein Admin notwendig Mittwoch, 19. Dezember 12
  • 8. GAE ist PAAS • Jetty, Datastore, Services & APIs • Sehr mächtige Admin Console • Kein direkter Zugriff auf Server oder VMs! PAAS != IAAS Mittwoch, 19. Dezember 12
  • 9. Prinzipieller Aufbau Application Application Application Version A Version B Version C (default) Fi A1 Fi A2 ... Fi An Mittwoch, 19. Dezember 12
  • 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 & Services Mittwoch, 19. Dezember 12
  • 11. Instances: Backends • Optimiert für längere Aufgaben • 4 Leistungsstufen B1 - B4 • Extern adressierbar • Skalieren nicht, man bucht sie nach Bedarf Mittwoch, 19. Dezember 12
  • 12. Unser Setup Demo time! Mittwoch, 19. Dezember 12
  • 14. Datastore • NoSQL: • Perfekt für große Datenmengen • Sehr einfach änderbar • Bis vor kurzem einzige Persistenz- Lösung Mittwoch, 19. Dezember 12
  • 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- Groups Mittwoch, 19. Dezember 12
  • 16. Beispiel • Alle Nerd-Shirts von “Per”, sortiert nach Firmenname Mittwoch, 19. Dezember 12
  • 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 companyName Mittwoch, 19. Dezember 12
  • 18. Eventual Consistency • Objekt wird gespeichert. • Objekt wird aber erst nach einigen Sekunden lesbar • Problem: Denormalisierung vs Eventual Consistency Mittwoch, 19. Dezember 12
  • 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 etc Mittwoch, 19. Dezember 12
  • 20. Low Level API ARGH! Mittwoch, 19. Dezember 12
  • 21. JDO/JPA ARGH! Mittwoch, 19. Dezember 12
  • 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
  • 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 Jobs Mittwoch, 19. Dezember 12
  • 25. Pull Queue • Eigene Applikation muss sich um Abarbeitung kümmern • Feinere Steuerung möglich • Queue kann auch mit REST abgefragt werden Mittwoch, 19. Dezember 12
  • 26. Memcache • Zugriff auf DB ist langsam • Je weniger Zugriffe pro Request desto besser • Alles wichtige immer in Memcache speichern • Memcache ist Instanz-übergreifend Mittwoch, 19. Dezember 12
  • 27. Data Caching 1 2 3 ... n Instance-cache & Request-cache Memcache Data Store Mittwoch, 19. Dezember 12
  • 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_filters Mittwoch, 19. Dezember 12
  • 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=EIxelKcyCC0 Mittwoch, 19. Dezember 12
  • 30. Easy deployment • “ant update” Mittwoch, 19. Dezember 12
  • 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. Uptime • Komplettausfälle sind extrem selten. 2 Mal in den letzten zwei Jahren • 3 Stunden Ende Oktober • 20 Minuten Mitte November Mittwoch, 19. Dezember 12
  • 35. Uptime • Komplettausfälle sind extrem selten. 2 Mal in den letzten zwei Jahren • 3 Stunden Ende Oktober • 20 Minuten Mitte November Mittwoch, 19. Dezember 12
  • 36. Latenzzeit • Keine Garantien! Mittwoch, 19. Dezember 12
  • 37. Latenzzeit • Keine Garantien! Mittwoch, 19. Dezember 12
  • 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. 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 Tuning Mittwoch, 19. Dezember 12
  • 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üsselung Mittwoch, 19. Dezember 12
  • 41. Fortschritte in 2012 • HTTPS on custom domains • Cloud SQL • Starke Verschlüsselung (z.B. BouncyCastle) • Eigene Threads • Volltextsuche • Backup/Restore • Traffic Splitting • Page Speed Mittwoch, 19. Dezember 12
  • 43. Insgesamt sehr positiv • Sehr robuste Administration • Sehr hohe Verfügbarkeit • Gute Performance • Skalierbarkeit Mittwoch, 19. Dezember 12
  • 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 Personalkosten Mittwoch, 19. Dezember 12
  • 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 Firmen Mittwoch, 19. Dezember 12
  • 46. We’re hiring. 500€ Refer-a-friend Bonus! Mittwoch, 19. Dezember 12 Habe fertig!