Pro e contro del Google App Engine

[Elenco aggiornato 21 agosto 09]

Aiutami a compilare un elenco di tutti i vantaggi e gli svantaggi della creazione di un’applicazione sul motore di Google App

Professionisti:

  1. Non è necessario acquistare server o spazio sul server (nessuna manutenzione).
  2. Rende più semplice la risoluzione del problema del ridimensionamento.
  3. Liberare fino a un certo livello di risorse consumate.

Contro:

  1. Bloccato in Google App Engine?
  2. Gli sviluppatori hanno accesso in sola lettura al filesystem su App Engine.
  3. App Engine può eseguire solo il codice richiamato da una richiesta HTTP (ad eccezione delle attività in background pianificate).
  4. Gli utenti possono caricare moduli Python arbitrari, ma solo se sono pure-Python; I moduli C e Pyrex non sono supportati.
  5. App Engine limita le righe massime restituite da un’entity framework e arriva a 1000 righe per chiamata Datastore. ( Aggiornamento – App Engine ora supporta i cursori per accedere a query più grandi)
  6. Le applicazioni Java possono utilizzare solo un sottoinsieme (La lista bianca della class JRE) delle classi dall’edizione standard JRE.
  7. Le applicazioni Java non possono creare nuovi thread.

Problemi noti!! : http://code.google.com/p/googleappengine/issues/list

Limiti difficili

App per sviluppatore – 10
Tempo per richiesta – 30 sec
File per app: 3.000
Dimensione della risposta HTTP: 10 MB
Dimensione articolo archivio dati – 1 MB
Dimensione del codice dell’applicazione: 150 MB
Aggiorna archivio Blob ora consente l’archiviazione di file fino a 50 MB

Pro o Con?
L’infrastruttura di App Engine rimuove molte delle problematiche di amministrazione e sviluppo del sistema per la creazione di applicazioni in scala fino a raggiungere milioni di accessi. Google gestisce la distribuzione del codice in un cluster, il monitoraggio, il failover e l’avvio delle istanze delle applicazioni secondo necessità.

Mentre altri servizi consentono agli utenti di installare e configurare quasi tutti i software compatibili * NIX, App Engine richiede agli sviluppatori di utilizzare Python o Java come linguaggio di programmazione e un insieme limitato di API. Le attuali API consentono di archiviare e recuperare dati da un database non relazionale BigTable; fare richieste HTTP; inviare e-mail; manipolare le immagini; e memorizzazione nella cache. La maggior parte delle applicazioni Web esistenti non possono essere eseguite su App Engine senza modifiche, poiché richiedono un database relazionale.

Professionisti:

  • Scalabile
  • Facile e più economico (a breve termine).
  • Buona opzione per start-up / individui.
  • Adatto per app che archiviano e recuperano solo dati.

Contro:

  • Non adatto per calcoli intensivi della CPU. Sono più lenti e costosi.
  • La scalabilità non importa molto se un’app funziona su Google, quindi probabilmente fa abbastanza soldi per funzionare sui propri server.
  • Hanno un sacco di limiti buttati qua e là, di conseguenza l’analisi profonda dei dati è difficile. Come se non fosse ansible produrre un grafico social utilizzando GAE.

Direi che non è pensata per le aziende serie e costosa a lungo termine.

(Un nuovo enorme) PRO: GAE ora supporta MySQL : https://developers.google.com/cloud-sql/

Professionisti:

  • interfaccia utente integrata per i log unificati

  • interfaccia web integrata per le code delle attività

  • indici incorporati nell’elenco di oggetti primari.

Contro:

  • tronchi sciolti molto veloci

  • Molto costoso

  • Molto costoso

  • Molto costoso

  • Un-hackable. Scala perché sei obbligato a codificare in un modo che scala.

  • Cicli di sviluppo più lunghi. A volte vuoi solo hackerare qualcosa insieme e buttarlo via dopo 5 hors. Con Appengine devi codificarlo correttamente e scrivere un sacco di roba per assicurarti che sia scalabile. Non puoi semplicemente fare un “find. | Grep .avi | xargs ffmpeg -compress ….” 🙂

  • Perderai le ore cercando di svolgere i compiti più semplici come inviare notifiche push ad APNS (iPhone). Anche se va bene se vuoi supportare Android solo in futuro.

  • Terribile fare pulizia sul database. È un enorme rompicapo per sistemare le righe nel database, principalmente perché terribilmente lento, ma richiede anche un sacco di codice per eseguire il ciclo correttamente all’interno dei limiti di tempo.

  • È stato un problema portare a Lucene a lavorare sul suo “filesystem”.

  • Lento per ciò che si paga.

  • Ancora più costoso se la tua app ha picchi di traffico. La mia app ha quei picchi se un utente che ha molti follower fa un’azione e dobbiamo inviare notifiche ai suoi follower. Per questo motivo devo tenere sempre attivi i 10 server inattivi ($$$$$) per gestire i picchi.

Appengine non è male a causa del fatto che ho la possibilità di masterizzare $$$$ invece di essere preoccupato per la scalabilità e il fissaggio dei colli di bottiglia per ridurre l’utilizzo del server. A volte ne vale la pena.

Il mio consiglio alle persone che iniziano nuovi prodotti è quello di andare su hetzner.de, che è il luogo in cui ospita i miei altri server di prodotti. È economico ed estremamente hackerabile. Ho un server su Hetzner che gestisce 3 volte più traffico del prodotto che ho su Appengine. La differenza di prezzo è di $ 100 al mese versioni $ 2700 al mese!

Ho esperienza di amministratore di sistema, quindi la linea di fondo è che non sceglierei appengine per avere il mio server ROOT. Non essere un ingegnere del software annoiato che vuole sperimentare cose nuove invece di creare ottimi prodotti!

Pro: scalabilità illimitata verso la tua applicazione e scalabilità con la domanda.

Con: Non disponibile in alcuni paesi (Argentina).

modificare

Disponibile in tutto il mondo, ma solo tramite Google Gruppi per App Engine.

Nel valutare i pro e i contro, penso che sia importante chiarire il mercato per il quale si sta rappresentando. Gli sviluppatori che cercano una soluzione economica per aiutarli con la parte ripida della loro curva di crescita del bastone da hockey progettata peseranno pesantemente i cons già elencati. Per un piccolo imprenditore, tuttavia, GAE è un Dio inviato. Queste persone cercano spesso “il cloud” come mezzo per gestire in modo più efficace la propria attività (ossia vendere prodotti e servizi fisici). Per la SMB, GAE i professionisti già elencati possono essere molto più preziosi rispetto allo sviluppatore in cerca di hockey-stick, mentre i contro pesano in una frazione della misura degli sviluppatori. Non vedo il team GAE fare qualcosa di correlato al posizionamento delle PMI, quindi suppongo che risposte come questa sono che sto solo indossando il mantello di Superman e sputando nel vento. Davvero GAE dovrebbe assolutamente governare lo spazio SMB ora. In caso contrario (non ho approfondimenti su: base utenti), allora si tratta di un errore molto deplorevole.

Credo che GAE debba ancora maturare in termini di fornitura delle funzionalità di base per attività serie come Datastore con chiave primaria complessa, supporto java.awt. *, Questi sono solo alcuni dei quali sto nominando.

Oltre allo spazio libero e alla costruzione di alcuni siti web “Hobby”, sento fortemente che GAE NON è il posto in cui i ragazzi di java dovrebbero guardare.

Sto sviluppando applicazioni su JSP / Servlet e MySQL, pensando di migrare a GAE, ma trovo che trascorrerò più “value time” sulla migrazione rispetto ad acquistare uno spazio da qualche provider di hosting java come EATJ, ecc. (Mi dispiace non marketing, solo un’esperienza).

Un altro grosso problema che ho riscontrato è la migrazione dei miei dati mySQL esistenti in GAE, bulkupload è davvero patetico e non ha supporto client.

Nessun supporto per il caricamento da Db locale a DB server.

Una volta che il GAE è pronto con “tutti gli aspetti negativi” di cui sopra, allora penserò che possiamo esaminare questa migrazione.

Sei costretto a possedere una linea telefonica e il tuo Paese + operatore telefonico deve essere in grado di ricevere SMS internazionali.

(Odio i telefoni cellulari e mia madre o i miei colleghi non riceveranno gli SMS)

Con: No Altri database RDBMS o NoSQL non sono possibili ….

Contro: tutta la tua base ci appartiene

… Una nota seria:

Contro: Non controlli l’ambiente in cui viene eseguita l’applicazione. Gli stessi svantaggi di esternalizzare qualsiasi componente. Divertimento per i giocattoli, non per gli affari (ancora) IMHO.

Varie cose come l’API per i backend proprietari di Google come il loro sistema di database e altri ‘lockdown’ e framework che significano che il tuo codice è legato, in qualche modo sciolto al loro sistema possono creare problemi di costo in seguito se vuoi migrare da GAE. Certo, potresti astrarre questi.

Mi piacciono GAE, AppJet e altri. Sono fantastici. Ma ogni cosa ha il suo posto. Se vuoi la libertà e la capacità di controllare i moduli della tua lingua, le API, le versioni della syntax / stdlib e quant’altro … non rinunci al controllo di un fornitore di servizi.

La mancanza di standard per gli ambienti e le specifiche per ciò che può aspettarsi la tua app mi preoccupa nel cloud.

roba del buon senso davvero.

Con: limitato a Java e Python