2010-02-07 14 views
12

Ho un'applicazione in esecuzione su AppEngine che utilizza circa 50 ore di CPU al giorno. La maggior parte viene spesa in attesa del datastore.Migrazione fuori AppEngine

Sto contemplando spostarlo fuori di AppEngine a qualcosa come server Rackspace cloud perché penso che la mia applicazione può essere più efficace se riesco a scaricare una parte del lavoro alla base di dati (più posso aggiungere ulteriori funzionalità che sarebbe difficile implementare su AppEngine).

Quindi, come farei per spostare un'app AppEngine? È sviluppato con il framework webapp e non utilizza molte API di Google diverse dal datastore. Idealmente, sarei in grado di mantenere il codice webapp e di scambiare le classi db con qualcosa che parlerebbe con un altro database (MySQL o PostgreSQL è probabilmente preferibile a qualcosa come CouchDB o MongoDB, ma anche quelli potrebbero funzionare).

AGGIORNAMENTO: In risposta ai commenti seguenti ... Ho già eseguito numerose applicazioni Web. Non ho mai eseguito applicazioni di produzione Python. Presumo che impostare l'aspetto di Python/webserver sia abbastanza semplice. La mia speranza di andare con qualcosa come i server Rackspace Cloud è che sarà 1 "server" che posso aggiungere anche risorse man mano che cresciamo. Al momento stiamo facendo circa 200k di colpi al giorno.

Per quanto riguarda le ottimizzazioni di AppEngine, stiamo usando memcache dove possiamo (non molti posti). Stiamo anche utilizzando Google Task e, mentre questo aiuta a superare i timeout delle richieste, aggiunge alle risorse utilizzate.

La mia domanda principale è una buona alternativa python per il livello dati che potrebbe richiedere il minor numero di modifiche al codice. Anche se so anche che probabilmente ci sono alcune domande rilevanti che non sto pensando di porre.

+0

solo per curiosità, stai aspettando le scritture o le letture di datastore? stai usando memcache e la coda dei compiti? –

+0

Inoltre, non è chiaro quale tipo di risposta stai cercando. Hai già eseguito un'app per lo stack completo? quanti colpi al giorno hai? avrai bisogno di più server web? Stai cercando consigli quadro o un passo per passo su come ospitare un'applicazione web in generale? –

risposta

9

Se è possibile ridistribuire a appscale, non sarà necessario riscrivere alcun codice del proprio App Engine.

+0

Immagino che questa sia la strada da percorrere. Avevo l'impressione che il framework webapp esistesse al di fuori di AppEngine, ma sembra che sia semplicemente basato su web.py. Mentre l'appscale mi sembra un po 'come un trucco, fornisce un percorso di migrazione che consentirebbe di riscrivere lentamente o in base alle necessità. Grazie. –

+0

@Jackson, è possibile riutilizzare il codice nell'SDK per iniziare (questo è quello che hanno fatto le persone dell'appartamento, credo), data la licenza open source del codice e l'architettura flessibile di "stub e hook", ma perché non approfittare di il lavoro che hanno già fatto? Soprattutto a livello di dati, dove hanno diversi adattatori per vari sistemi di archiviazione. Non sono sicuro di cosa si tratti di hacker (anche se penso che i commenti SO non siano il miglior forum per discuterne ;-). ((Disclaimer: non ho nulla a che fare con l'appscale, ma lavoro con Google e ho molti amici nel team appengine ;-)). –

1

È possibile utilizzare TyphoonAE, basato sull'SDK e progettato per distribuzioni su piccola e media scala, ad esempio singoli server su cluster di piccole dimensioni, e dovrebbe essere abbastanza semplice da configurare.

Mi dispiace vederti andare.

+0

Bene, ora devo almeno vedere come la nuova versione 1.3.1 cambia le cose :) –