Подтвердить что ты не робот

Локальное развитие и постановка с помощью Amazon Redshift

Мне нравится создавать инструменты и услуги с производством, постановкой и локальным развитием. Я хотел бы использовать Amazon Redshift, и начиная с 180 долларов в месяц, кажется довольно разумным для базы данных хранилища столбцов, но действительно ли мне нужно думать об этом как 180 x # среды/месяца? Есть ли способ иметь бесплатную промежуточную и локальную среду для Redshift?

Также хорошо иметь возможность делать разработку против локального экземпляра, а не полагаться на сеть. Я предполагаю, что это невозможно с помощью Redshift.

Что вы делаете, чтобы сделать локальную разработку проще, быстрее и дешевле при работе с Redshift?

4b9b3361

Ответ 1

Amazon Redshift был специально создан для работы в инфраструктуре AWS. Он недоступен для загрузки. (Интересно, что Amazon DynamoDB имеет загружаемую версию для целей разработки.)

Самый дешевый вариант может заключаться в выключении ваших демонстраций Dev и Test каждую ночь и в выходные дни. Сделайте снимок перед удалением кластера, а затем создайте кластер следующим утром на основе моментального снимка. Это может быть автоматизировано с помощью интерфейса командной строки AWS (CLI), что упрощает планирование с помощью cron или запланированных задач.

У вас также может быть моментальный снимок тестовых данных и восстановление моментального снимка каждое утро, что означает, что тестовая база данных не заполняется тестовыми примерами.

Еще одна экономия затрат может заключаться в сокращении числа узлов для непроизводственных систем. Запросы будут выполняться медленнее, и общий объем хранилища будет уменьшен, но он может быть более рентабельным. Или даже используйте "Dense Storage" 2TB node вместо нескольких экземпляров SSD "Dense Compute" - они будут обеспечивать большее количество хранения на меньших узлах.

Ответ 2

В дополнение к John Rotenstiens, который излагает, как сократить расходы, если вы решили запустить второй кластер для постановки, есть и другие варианты, когда ваш случай использования не является критическим.

Поскольку Redshift является fork postgres 8, вы можете использовать предоставленные Amazon postgresql 8.4 JDBC или ODBC-драйверы и указывать их на локально запущенный экземпляр postgres 8. Это хорошо работает во время разработки, поскольку то, что работает здесь, обычно будет работать на вашей производственной системе (есть некоторые исключения).

Другой вариант - иметь отдельную таблицу в вашем кластере Redshift для запуска непроизводственных действий. Это может послужить хорошим для вас набором тестов и разработкой "окончательного тестирования".

Затем вы можете выполнить развертывание в процессе производства и контролировать промежуточную среду для проблем до полного развертывания.

Ответ 3

Другое решение для сокращения затрат - рассматривать каждую базу данных как среду в одном кластере. Базы данных ничего не стоят, и вам разрешено 60 из них в кластере

Мы попробовали решение Postgres-as-emulator, и это было нормально, но

  • Рабочие характеристики радикально отличаются
  • Легко использовать функции Postgres, которых нет в Redshift (или наоборот)
  • Трудно поддерживать схему, имеющую необязательные части (например, индексы для одной, ключи сортировки для другой).

На данный момент мы отступили от этого, хотя по мере роста нам, возможно, придется использовать гибридное решение, где приемочное тестирование и промежуточное тестирование являются базами данных в Redshift, а разработчики возвращаются к использованию Postgres.

Ответ 4

Здесь лучшая альтернатива для доступа ко всем сервисам AWS локально, автономно, без оплаты облачных сервисов. Localstack!

https://localstack.cloud/

https://github.com/localstack/localstack

Поддерживаются все основные сервисы AWS, такие как Redshift, S3, DynamoDB, cloudwatch и т.д.

Вы можете использовать это для всех ваших непроизводительных сред и оплачивать только услуги Production AWS