AppEngine tipy Romeovi jsem nasadil Cardboard a úspěšně se ho zbavil. Zbývá teda doklepnout pár tipů pro Julču.

Julčo! Jestli jsi od posledně zapomněla o co jde, připomeň si první díl.


Zbytek tipů

Tomucha: Vidím, že píšeš užitečnou aplikaci na sdílení selfíček, to bude chleba jistě levnější.

Julie: To nemůžeš pochopit, dědku. Řekni mi, kam mám ty fotky na AppEnginu ukládat, blobstore má dost nepraktické API.

Tomucha: Blobstore pusť z hlavy, to je jen takový relikt z počátků AppEngine platformy. Google teď pěkně integroval všechny svoje cloud služby pod jednu střechu, hezky spolu navzájem komunikují a dobře spolupracují. Takže na svoje velký binární data použij Cloud Storage. API je sice o chloupek komplikovanější než bych já preferoval, ale skutečně jen o chloupek. Na poměry Google je to malý zázrak. V podstatě s tím pracuješ pomocí java.io - jako s FileInput(Output)Stream.

Romeo: Cywe, to je dobrý. Můžu si to nechat?


Tomucha: Jasně, nech si to. K Julii: Hele, jeho to brzo přestane bavit, vezmeme to trochu rychleji.

  • Dedicated memcache: Memcache znáš, že jo. Například Objectify ti umožní ji skutečně hodně efektivně vytěžit. Co asi neznáš, je možnost zapnout si dedicated memcache. Vymezíš si určitý objem memcache, který nebude nikdy vymazán. To můžeš například použít k rychlému ukládání dat, která budeš později zpracovávat. (Ovšem pozor, SLA na to nedávají.)

  • Verzování: Spíš jen připomínám. Aplikace může existovat ve více verzích, to se nastavuje v appengine-web.xml. Když děláš nový release, nastav mu novou verzi, v případě problémů se budeš moct snadno vrátit k verzi předcházející. Také můžeš spustit dvě verze současně a A/B testovat.

  • SendGrid: S tímhle vlastní zkušenost nemám, mám to v bufferu z GDE komunity na G+. AppEngine mailovaní není moc přívětivé, především stran “FROM” hlavičky. Odesílatel musí být skutečný Google účet, který potvrdí pozvánku. A to nebývá moc praktické. A to nemluvím o nějaké kontrole nad odeslanými emaily, statistikami apod. Řešením může být služba třetí strany - SendGrid.

  • AppStats: Co uděláš, když zjistíš, že máš problém s výkonem nebo s cenou, kterou platíš?

Julie: Začnu optimalizovat.

Tomucha: Nikoliv. Začneš profilovat. A teprve, až budeš vědět co je špatně, pak optimalizuješ. AppStats ti pomůžou právě s tím profilováním.

  • A pokračujem s Jersey: Já vím, já vím. Endpoints ti vygenerují klientské knihovny, pomůžou s autorizací … Ale to je pro mě jen takové pozlátko - já chci mít svoje API 100% pod kontrolou. A Jersey si s AppEngine (a Guice) rozumí bez problémů. Go Jersey!

  • Google APIs: No a ještě ti připomenu, že Googlích API jsou tucty - v podstatě ke každé zajímavé službě. Většinu (ne-li všechny), můžeš volat i z AppEngine. BigQuery, URL Shortener, YouTube …


Julie: Dobřes’ mi to řek. Zkus mi to nějak zabalit. Jak teda používáš AppEngine ty?

Tomucha: Dělám v tom webové aplikace a backendy k mobilním app-kám. Aplikace skládám pomocí Guice, na přístup do Datastore mám Objectify, na API Jersey. Když potřebuji MVC, používám ze setrvačnosti StripesFramework, ale radost z toho nemám. Svého času to bylo skvělé, ale teď už je to bohužel mrtvé. Asi budu muset napsat nějaké Nette pro Javu. Nevíš o něčem?


Romeo: Cywe. Mě se z toho kukátka točí hlava.

Tomucha: Běžte děti, já si jdu číst noviny a nadávat na poměry. Až si vzpomenete na kvalitní lightweight MVC, které si rozumí s Guice, hoďte mi to do komentu.