J'aime mettre en place des outils et des services de production, de mise en scène et de développement local. J'aimerais utiliser Amazon Redshift, et à partir de 180 $ par mois semble assez raisonnable pour une base de données de magasins en colonnes, mais dois-je réellement y penser comme 180 $ x # d'environnements/mois? Existe-t-il un moyen d'avoir un environnement de transfert et local gratuit pour Redshift?
C'est également agréable de pouvoir faire du développement sur une instance locale plutôt que de s'appuyer sur le réseau. Je suppose que ce n'est pas possible avec Redshift.
Que faites-vous pour rendre le développement local plus facile, plus rapide et moins cher lorsque vous travaillez avec Redshift?
Amazon Redshift a été spécialement créé pour fonctionner sur l'infrastructure AWS. Il n'est pas disponible en téléchargement. (Fait intéressant, Amazon DynamoDB a une version téléchargeable à des fins de développement.)
L'option la moins chère pourrait être de arrêter vos instances Dev & Test chaque nuit et le week-end. Prenez un instantané avant de supprimer le cluster, puis créez un cluster le lendemain matin en fonction de l'instantané. Cela peut être automatisé via l'interface de ligne de commande AWS (CLI), ce qui facilite la planification avec cron ou des tâches planifiées.
Vous pouvez également avoir un instantané de données de test et restaurer cet instantané chaque matin, ce qui signifie que la base de données de test ne se remplit pas de cas de test.
Une autre économie de coûts pourrait être de réduire le nombre de nœuds pour les systèmes hors production. Les requêtes s'exécuteront plus lentement et la quantité totale de stockage sera réduite, mais cela pourrait être plus rentable. Ou même utilisez un nœud "Dense Storage" de 2 To au lieu de plusieurs instances SSD "Dense Compute" - elles fourniront plus de stockage sur moins de nœuds.
En plus de John Rotenstiens qui explique comment réduire les coûts si vous avez décidé d'exécuter un deuxième cluster pour la mise en scène, il existe d'autres options, lorsque votre cas d'utilisation n'est pas critique pour la mission.
Comme Redshift est un fork de postgres 8, vous pouvez utiliser les pilotes JDBC postgresql 8.4 fournis par Amazon ou ODBC pilotes, et les pointer vers une instance de postgres 8 exécutée localement. Cela fonctionne bien pendant le développement, car ce qui fonctionne ici fonctionnera généralement sur votre système de production (il y a quelques exceptions).
L'autre option consiste à avoir une table distincte sur votre cluster Redshift pour exécuter les activités hors production. Cela pourrait vous être utile pour le développement de la suite de tests et du "test final".
Ensuite, vous pouvez organiser votre déploiement en production et surveiller l'environnement de transfert pour détecter les problèmes avant le déploiement complet.
Une autre solution de réduction des coûts consiste à traiter chaque base de données comme un environnement dans un seul cluster. Les bases de données ne coûtent rien, et vous êtes autorisé 60 d'entre elles dans un cluster
Nous avons essayé la solution Postgres-as-emulator, et ça a été plutôt bien, mais
Nous nous sommes éloignés de cela pour le moment, mais à mesure que nous grandissons, nous devrons peut-être utiliser une solution hybride où les tests d'acceptation et la mise en scène sont des bases de données dans Redshift, tandis que les développeurs recommencent à utiliser Postgres.
Voici la meilleure alternative pour accéder à tous les services AWS localement, hors ligne, sans payer pour les services cloud. Localstack!
https://github.com/localstack/localstack
Tous les principaux services AWS comme Redshift, S3, DynamoDB, cloudwatch, etc. sont pris en charge.
Vous pouvez l'utiliser pour tous vos environnements non prod et ne payer que pour les services Production AWS