Domanda

Quali alternative ci sono a GAE, dato che ho già un buon po 'di codice funzionante che vorrei mantenere. In altre parole, sto scavando il pitone. Tuttavia, il mio caso d'uso è più un basso numero di richieste, un caso d'uso più elevato di utilizzo della CPU e sono preoccupato di non poter rimanere con App Engine per sempre. Ho sentito molte persone parlare di Amazon Web Services e di altri tipi di fornitori di cloud, ma non riesco a vedere dove la maggior parte di queste altre offerte forniscono la gamma di servizi (query di dati, autenticazione utente, ridimensionamento automatico) che l'app Il motore fornisce. Quali sono le mie opzioni qui?

È stato utile?

Soluzione

Non penso che ci sia un'altra alternativa (per quanto riguarda la portabilità del codice) a GAE in questo momento poiché GAE è in una classe a sé stante. Sicuramente GAE è il cloud computing, ma vedo GAE come un sottoinsieme del cloud computing. Amazon EC2 è anche il cloud computing (così come Joyent Accelerators, Slicehost Slices), ma ovviamente sono anche due bestie diverse. Quindi in questo momento ti trovi in ??una situazione che richiede di ripensare la tua architettura in base alle tue esigenze.

I vantaggi immediati di GAE sono che è essenzialmente esente da manutenzione in relazione all'infrastruttura (server web scalabile e amministrazione del database). GAE è più su misura per quegli sviluppatori che vogliono concentrarsi solo sulle loro applicazioni e non sul sistema sottostante. In un certo senso puoi considerarlo amichevole per gli sviluppatori. Ora si dovrebbe anche dire che queste altre soluzioni di cloud computing cercano anche di permetterti di preoccuparti della tua applicazione quanto vuoi, fornendo immagini / modelli di macchine virtuali. Alla fine le tue esigenze detteranno l'approccio che dovresti adottare.

Ora, con tutto ciò in mente, possiamo anche costruire soluzioni ibride e soluzioni alternative che potrebbero soddisfare anche le nostre esigenze. Ad esempio, GAE non sembra direttamente adatto a questa specifica app che devi descrivere. In altre parole, GAE offre un numero relativamente alto di richieste, un basso numero di cicli di CPU (non sono sicuro se la versione a pagamento sarà diversa).

Tuttavia, un modo per affrontare questa sfida è costruire una soluzione personalizzata che coinvolga GAE come front-end e Amazon AWS (EC2, S3 e SQS) come back-end. Alcuni diranno che potresti anche costruire l'intero stack su AWS, ma ciò potrebbe comportare anche la riscrittura di un sacco di codice esistente. Inoltre, come soluzione alternativa, un precedente post stackoverflow descrive un metodo di simulazione delle attività in background in GAE. Inoltre, puoi esaminare HTTP Map / Reduce per distribuire anche il carico di lavoro.

Altri suggerimenti

AppScale

AppScale è una piattaforma che consente agli utenti di distribuire e ospitare le proprie applicazioni di Google App Engine. Si esegue automaticamente su Amazon EC2 ed Eucalyptus, nonché su Xen e KVM. È stato sviluppato ed è gestito da AppScale Systems . Supporta le piattaforme Google App Engine di Python, Go, PHP e Java.

http://github.com/AppScale/appscale

Nel frattempo ...

... è quasi il 2015 e sembra che i container siano la strada da percorrere. Stanno emergendo alternative a GAE:

Google ha rilasciato Kubernetes , il software di pianificazione dei container sviluppato da loro per gestisci i contenitori GCE , ma può essere utilizzato anche su altri cluster.

Ci sono alcuni PaaS imminenti su Docker come

Cose interessanti da tenere d'occhio.

Un po 'in ritardo, ma vorrei provare Heroku:

  

Heroku è una piattaforma applicativa cloud poliglotta. Con Heroku, tu   non devi assolutamente pensare ai server. Puoi scrivere app usando   moderne pratiche di sviluppo nel linguaggio di programmazione del tuo   scelta, esegui il backup con risorse aggiuntive come database SQL e NoSQL,   Memcached e molti altri. Gestisci la tua app usando Heroku   strumento da riga di comando e si distribuisce il codice utilizzando il controllo di revisione Git   sistema, tutto in esecuzione sull'infrastruttura Heroku.

https://www.heroku.com/about

A partire dal 2016, se sei disposto a raggruppare PaaS (piattaforma come servizio) ) e FaaS (funzione come servizio) nella stessa elaborazione senza server , quindi hai alcune opzioni FaaS.

Proprietario

AWS Lambda

  

AWS Lambda ti consente di eseguire il codice senza provisioning o gestione dei server. Paghi solo per il tempo di calcolo che consumi - non ci sono costi quando il tuo codice non è in esecuzione. Con Lambda, è possibile eseguire il codice praticamente per qualsiasi tipo di applicazione o servizio back-end, il tutto senza amministrazione. Basta caricare il codice e Lambda si prende cura di tutto il necessario per eseguire e ridimensionare il codice con elevata disponibilità. Puoi impostare il codice in modo che si attivi automaticamente da altri servizi AWS o chiamarlo direttamente da qualsiasi app Web o mobile.

Funzioni AWS Step integra AWS Lambda.

  

AWS Step Functions semplifica il coordinamento dei componenti di applicazioni distribuite e microservizi mediante flussi di lavoro visivi. La creazione di applicazioni da singoli componenti che svolgono ciascuna una funzione discreta consente di ridimensionare e modificare rapidamente le applicazioni. Step Functions è un modo affidabile per coordinare i componenti e scorrere le funzioni dell'applicazione. Step Functions fornisce una console grafica per disporre e visualizzare i componenti dell'applicazione come una serie di passaggi. Ciò semplifica la creazione e l'esecuzione di applicazioni in più passaggi. Step Functions attiva e monitora automaticamente ogni passaggio e riprova in caso di errori, quindi l'applicazione viene eseguita nell'ordine e come previsto. Step Functions registra lo stato di ogni passaggio, quindi quando le cose vanno male, è possibile diagnosticare ed eseguire il debug dei problemi rapidamente. Puoi modificare e aggiungere passaggi senza nemmeno scrivere il codice

Funzioni cloud di Google

A partire dal 2016 è in alfa.

  

Google Cloud Functions è una soluzione di calcolo asincrona leggera, basata su eventi, che consente di creare piccole funzioni monouso che rispondono agli eventi cloud senza la necessità di gestire un server o un ambiente di runtime. Gli eventi di Google Cloud Storage e Google Cloud Pub / Sub possono attivare le funzioni cloud in modo asincrono oppure puoi utilizzare la chiamata HTTP per l'esecuzione sincrona.

Funzioni di Azure

  

Un'esperienza di calcolo senza server basata su eventi per accelerare il tuo sviluppo. Può ridimensionarsi in base alla domanda e paghi solo per le risorse che consumi.

Apri

Serverless

  

Serverless Framework consente di distribuire funzioni di ridimensionamento automatico, pay-per-esecuzione e guidate da eventi su qualsiasi cloud. Al momento supportiamo Lambda di Amazon Web Service e ci stiamo espandendo per supportare altri provider cloud.

IronFunctions

  

IronFunctions è una piattaforma di elaborazione serverless open source per qualsiasi cloud: privato, pubblico o ibrido.


Resta da vedere quanto FaaS sia in concorrenza con CaaS (container as a service). Il primo sembra più leggero. Entrambi sembrano adatti alle architetture di microservizi.

Prevedo che le funzioni (come in FaaS) non sono la fine della linea e che tra molti anni vedremo ulteriori astrazioni di servizio, ad es. sviluppo di soli test, seguito da scenari in linguaggio semplice.

Elastic Compute Cloud o EC2 di Amazon è una buona opzione. Fondamentalmente esegui VM Linux sui loro server che puoi controllare tramite un'interfaccia web (per accendere e spegnere) e, naturalmente, l'accesso tramite SSH o qualunque cosa tu abbia normalmente impostato ... E poiché è un'installazione Linux che controlli, puoi ovviamente eseguire Python se lo desideri.

Microsoft Windows Azure potrebbe valere la pena di essere preso in considerazione. Temo di non averlo usato, quindi non posso dire se va bene e dovresti tenere presente che al momento è un CTP.

Dai un'occhiata qui.

Se sei interessato al cloud e forse vuoi crearne uno tuo per la produzione e / o il test devi guardare Eucalyptus . È presumibilmente compatibile con il codice EC2 ma open source.

Potresti anche dare un'occhiata a AWS Elastic Beanstock - ha una equivalenza più vicina a Funzionalità GAE, in quanto progettata per essere PaaS, piuttosto che IaaS (ovvero EC2)

Sarei più interessato a vedere come App Engine può essere facilmente accoppiato con un altro server utilizzato per richieste ad alta intensità di CPU.

TyphoonAE sta provando a farlo. Non l'ho provato, ma mentre è ancora in beta, sembra che sia almeno in fase di sviluppo attivo.

Il passaggio al cloud computing sta avvenendo così rapidamente che non hai tempo da perdere per testare piattaforme diverse. Ti consiglio di provare Jelastic se sei interessato anche a Java.

Una delle cose migliori di Jelastic è che non è necessario apportare modifiche al codice dell'applicazione, ad eccezione di quelle relative alla funzionalità dell'applicazione, ma non per il motivo per cui la piattaforma scelta lo richiede. Con riferimento a questo non perdi tempo, il processo di distribuzione è semplicemente impeccabile e puoi distribuire il tuo file .war ovunque. L'utilizzo di GAE richiede di modificare l'app in base alle loro esigenze di sistema. Nel caso in cui ti capiti di lavorare con Java e inizi a cercare una piattaforma più flessibile, Jelastic è un'alternativa compatibile.

Puoi anche usare il progetto Cape Dwarf di Red Hat, per eseguire le app GAE sulla parte superiore del appserver Wildfly (precedentemente JBoss) senza modifiche.

Puoi verificarlo qui:

http://capedwarf.org/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top