L'esecuzione di redis su un banco prova è un'idea interessante. Probabilmente dovrai creare un buildpack di redis in modo che i tuoi dyno possano scaricare ed eseguire redis. Poiché "redis non ha dipendenze diverse da un compilatore GCC funzionante e libc", questo dovrebbe essere tecnicamente possibile.
Tuttavia, ecco alcuni problemi che potresti incontrare:
-
I banco prova Heroku non hanno un indirizzo IP statico
"i banco prova non hanno indirizzi IP statici .. non puoi mai accedere a un banco prova direttamente tramite IP"
Anche se configuri ed esegui Redis su un banco di prova, non sono a conoscenza di un modo per individuare quell'istanza di banco e inviargli richieste di ridistribuzione. Ciò significa che il tuo server Redis dovrà probabilmente funzionare sullo stesso banco di prova del tuo server web/applicazione principale.
Questo anche significa che se tenti di ridimensionare la tua app creando più dinamici web, creerai anche più istanze redis locali. I dati non saranno condivisi tra di loro. Questo non mi sembra un design particolarmente scalabile, ma se la tua app è abbastanza piccola da richiedere solo un web dyno potrebbe funzionare.
-
I dino di Heroku hanno un filesystem effimero
"nessun file scritto è visibile ai processi in nessun altro banco prova e tutti i file scritti verranno eliminati nel momento in cui il banco prova viene arrestato o riavviato"
Per impostazione predefinita, Redis scrive il suo file RDB e il registro AOF su disco. Dovrai eseguirne regolarmente il backup da qualche parte in modo da poter recuperare e ripristinare dopo il riavvio del banco prova. Consulta la documentazione sulla persistenza Redis.
-
I dyno di Heroku vengono riavviati spesso
"I dinamici vengono ciclati almeno una volta al giorno o ogni volta che il collettore dinamometrico rileva un guasto nell'hardware sottostante"
Dovrai essere in grado di avviare il tuo server redis ogni volta che si avvia il banco prova e ripristinare i dati.
-
I dinamici Heroku hanno 512 MB di RAM
"A ogni banco prova sono allocati 512 MB di memoria per funzionare all'interno"
Se il tuo server Redis è in esecuzione sullo stesso banco di prova del tuo server web, sottrai la RAM necessaria per la tua app principale. Quanta memoria Redis ti serve?
Ecco alcune domande che tentano di stimare e tenere traccia dell'utilizzo della memoria Redis:
- Redis:rapporto tra dimensioni del database e memoria?
- Profilazione dell'utilizzo della memoria Redis
--
In generale: Suggerisco di leggere su 12 Factor Apps per capire un po' di più sul modello di applicazione previsto da heroku.
La versione breve è che i dino sono destinati a essere lavoratori indipendenti che possono essere facilmente creati ed eliminati per soddisfare la domanda e che i dino accedono a varie risorse per leggere o scrivere dati e servire la tua app. Un'istanza redis è un esempio di risorsa. Come puoi vedere dagli elementi sopra, utilizzando un componente aggiuntivo redis ottieni qualcosa che è garantito per essere statico, stabile e accessibile.
Materiale di lettura:
- http://www.12factor.net/ - in particolare Processi e Servizi
- Il modello del processo Heroku
- Blog Heroku - Il modello di processo