Тестовые и рабочие среды на Amazon AWS

Я начинаю разрабатывать крупномасштабное приложение с помощью node.jsand DynamoDB. I use Git and will possibly use a CI server.

Мне нужна тестовая среда (серверная часть), максимально приближенная к рабочей среде. Изменения, которые я делаю в БД во время тестирования, не должны отражаться в производстве. Как лучше всего этого достичь? Есть копия базы данных для тестов? Как реализовать тестовую среду при запуске приложения в Elastic Beanstalk?

3 ответа

  1. Никогда не занимайтесь разработкой или тестированием в производственной среде. Всегда делайте копию среды для целей тестирования и разработки.

    Elastic Beanstalk позволяет создавать несколько копий приложения. Таким образом, легко запустить вторую (или третью, или четвертую) копию приложения для разработки и выполнения тестов.

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

  2. Elastic Beanstalk позволяет легко управлять несколькими средами в пределах приложения. Дополнительные сведения см. здесь.

    Что касается DynamoDB, вам придется придумать свое собственное решение. Один из способов, который может работать, — это управление таблицами DynamoDB с помощью шаблонов CloudFormation. Это позволит вам определить таблицы, первичные ключи, любые индексы в файлах шаблонов JSON. Если вы сделаете это таким образом, у вас будет:

    • Шаблоны CloudFormation в JSON, которые определяют и автоматически создают таблицы DynamoDB.
    • Вы можете хранить копии этих шаблонов в репозитории git, где у вас может быть филиал для каждой среды, что упрощает управление средами.

    Если это звучит слишком сложно, проще будет просто иметь копии ваших таблиц с префиксом «dev-» или что-то подобное в DynamoDB, однако CloudFormation может очень пригодиться, когда у вас есть много таблиц.

  3. Я понимаю, что вы хотите, чтобы среда была как можно ближе к производству, но я собираюсь предложить вам проверить DynamoDB Local на случай, если вы не слышали об этом. Вот ссылка на документацию: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html

    Это позволяет иметь локальную версию DynamoDB. Это означает, что вы можете тестировать без использования единиц чтения/записи. Есть некоторые различия между ним и производственной службой DynamoDB, но большинство тестовых случаев можно выполнить в локальной версии.