Come dovrei ospitare i nostri processi di lavoro scalabili?

0

Stiamo progettando una nuova architettura per un'azienda. I principi che abbiamo seguito finora non è quello di sviluppare quello che puoi (possibile acquistare e) schierare, cioè, non reinventare nessuna ruota.

In questo modo abbiamo deciso su CQRS, RabbitMQ, Riak e un sacco di altre cose. Abbiamo ancora bisogno di scrivere / alcuni / codice aziendale e questi saranno sotto forma di processi di lavoro, che consumeranno comandi da una coda di messaggi e dopo ogni effetto collaterale, produrranno eventi su un'altra coda di messaggi. L'idea alla base di questo è che attraverso il design dei consumatori in concorrenza avremo un design scalabile fin da subito.

Un'opzione è di scrivere un'infrastruttura di gestione che saprà come:

  • deploy code
  • istanziare i processi
  • uccidi i processi
  • aggiorna la configurazione
  • etc

IE fornisce tolleranza agli errori e scalabilità. Inoltre, questo è esattamente ciò che fa per te GAE ed Heroku, ma in un contesto pubblico e nella nostra organizzazione, il pubblico è cattivo.

La mia domanda è: esiste una soluzione pronta all'uso che possiamo utilizzare per ospitare i nostri consumatori? Come un cloud privato o una piattaforma privata come servizio. Heroku privato o GAE. Esiste una sorta di software o prodotto software con cui possiamo fare tutte queste cose e quindi ottenere scalabilità e tolleranza ai guasti sui nostri consumatori?

    
posta Pieter Breed 12.06.2012 - 15:07
fonte

4 risposte

1

Dipende davvero dai tuoi requisiti di ridimensionamento.

Se non hai eccessive esigenze "rapide" (ad es. la crescita è piccola, puoi prevedere quando avrai bisogno di una nuova scatola per gestire il carico e avere il tempo di fornirla), non ti preoccupare molto . Puoi fare abbastanza bene con un semplice meccanismo di provisioning automatico dei server (ad esempio Puppet), assicurarti che tutte le tecnologie sottostanti siano facilmente raggruppate in cluster, se necessario, o facili da eseguire il failover se non è necessario ridimensionarle.

D'altra parte, se questo non è abbastanza ... hai un problema. Costruire un cloud true non è banale e richiede una notevole quantità di risorse. Ci sono soluzioni in quest'area: mi vengono in mente Eucalyptus e OpenStack.

Fortunatamente, quasi nessuno ha bisogno di quest'ultimo. Valuta attentamente se hai bisogno di una soluzione cloud true con ridimensionamento dinamico automatico, probabilmente no. Se non ne hai bisogno e ne imposti erroneamente uno, è probabile che non raggiungerai mai il tuo obiettivo o lo raggiungerai con un incredibile sovraccarico sulla soluzione non dinamica.

In ogni caso, dal punto di vista del software più puro, hai cose come Celery che implementa questo molto bene; scrivere un codice in modo "impegnativo" è piuttosto semplice e indolore.

    
risposta data 27.06.2012 - 21:08
fonte
1

I fornitori di servizi cloud hanno iniziato a risolvere questo problema. In particolare, controlla:

  1. Iron.io - Hanno un prodotto chiamato "IronWorker" che supporta diverse lingue
  2. heroku - Offrono "dynos di lavoro"
  3. Windows Azure: la loro offerta di servizi cloud ha processi web e di lavoro
risposta data 02.12.2012 - 12:13
fonte
1
  • Kubernetes fa molto di ciò che hai menzionato. Se puoi Dockare la tua applicazione, puoi ridimensionarla con Kubernetes nel tuo cloud privato.
  • CapeDwarf è un'alternativa open source a Google App Engine, che consente di eseguire app GAE in un cloud privato. Il progetto sembra comunque inattivo.
risposta data 12.09.2016 - 22:39
fonte
0

Potresti voler esplorare il collegamento come piattaforma (come in PaaS) e alcune implementazioni EC2 (come in IaaS ) come Eucalyptus (http://www.eucalyptus.com/).

    
risposta data 02.12.2012 - 14:00
fonte

Leggi altre domande sui tag