2015-01-24 13 views
22

Mi piace impostare strumenti e servizi con produzione, gestione temporanea e sviluppo locale. Mi piacerebbe usare Amazon Redshift, e partire da $ 180 al mese sembra abbastanza ragionevole per un database di archivio colonnare, ma devo davvero pensarci come $ 180 x # di ambienti/mese? C'è un modo per avere una messa in scena libera e un ambiente locale per Redshift?Sviluppo locale e gestione temporanea con Amazon Redshift

È anche bello poter eseguire lo sviluppo su un'istanza locale anziché fare affidamento sulla rete. Presumo che non è possibile con Redshift.

Cosa si fa per rendere lo sviluppo locale più semplice, più rapido ed economico quando si lavora con Redshift?

risposta

14

Amazon Redshift è stato creato appositamente per l'esecuzione sull'infrastruttura AWS. Non è disponibile come download. (È interessante notare che, Amazon DynamoDB ha una versione scaricabile per scopi di sviluppo.)

L'opzione più economica potrebbe essere quella di spegnere il Dev & casi di test ogni notte e nei fine settimana. Effettuare un'istantanea prima di eliminare il cluster, quindi creare un cluster la mattina successiva in base all'istantanea. Questo può essere automatizzato tramite l'interfaccia a riga di comando di AWS (CLI), facilitando la pianificazione con cron o operazioni pianificate.

Si potrebbe anche avere uno snapshot di Test e ripristinare tale snapshot ogni mattina, il che significa che il database di test non si riempie di casi di test.

Un altro risparmio potrebbe essere quello di ridurre il numero di nodi per i sistemi di non produzione. Le query verranno eseguite più lentamente e la quantità totale di spazio di archiviazione verrà ridotta, ma potrebbe essere più conveniente. O anche utilizzare un nodo "Dense Storage" da 2TB invece di diverse istanze SSD "Dense Compute": forniranno più spazio su meno nodi.

+0

Una cosa da notare è che mentre questo è bello e tutto, non mi aiuta se non desidero o non riesco a connettermi ad AWS per lo sviluppo. Per la maggior parte dei servizi più grandi (SQS, Dynamo, S3, ecc.) Ho un analogo di sviluppo locale. – mjwenk

16

Oltre a John Rotenstiens che spiega come ridurre i costi se si è deciso di eseguire un secondo cluster per la gestione temporanea, ci sono alcune altre opzioni, per quando il caso d'uso non è critico.

Poiché Redshift è un fork di postgres 8, è possibile utilizzare i driver JDBC o ODBC postgresql 8.4 forniti da Amazon e indirizzarli a un'istanza Postgres 8 in esecuzione locale. Questo funziona bene durante lo sviluppo, dal momento che ciò che funziona qui di solito funziona sul sistema di produzione (ci sono alcune eccezioni).

L'altra opzione è di avere una tabella separata sul cluster Redshift per eseguire attività di non produzione. Questo potrebbe far bene alla tua suite di test e allo sviluppo del "collaudo finale".

Quindi è possibile allestire la distribuzione in produzione e monitorare l'ambiente di staging per problemi prima della distribuzione completa.

11

Un'altra soluzione di riduzione dei costi consiste nel trattare ogni ambiente come un database in un singolo cluster.Banche dati costano nulla, e si è permesso 60 of them in a cluster

Abbiamo provato le Postgres-as-emulatore soluzione, ed è stato sorta di OK, ma

  • le caratteristiche prestazionali sono radicalmente diversi
  • è facile da usare Postgres features that are not in Redshift (o viceversa)
  • è difficile mantenere uno schema con parti opzionali (indici per uno, chiavi di ordinamento per l'altro, ad esempio).

Abbiamo sostenuto lontano da che per il momento, anche se, come abbiamo più grande potremmo dover utilizzare una soluzione ibrida in cui test di accettazione & messa in scena sono i database di Redshift, mentre gli sviluppatori tornare ad usare Postgres.

+0

Questo è super utile. Grazie! – freyley

Problemi correlati