AWS EC2 - синхронизация файлов исходного кода с S3 - это правильный подход? - PullRequest
6 голосов
/ 08 января 2010

На сервере приложений, на котором часто изменяются несколько исходных файлов, рекомендуется ли использовать следующий подход?

Используйте задание cron с S3tools для синхронизации исходных файлов с приватным сегментом S3 (например, каждые 15 минут).

При запуске сервера - используйте скрипт пользовательских данных для синхронизации с корзиной источников для получения последних источников.

Преимущества: 1. Не нужно подключать EBS для сервера приложений, чтобы сохранить несколько файлов 2. Аналогичная настройка для всех серверов приложений 3. Источники автоматически резервируются. 4. В качестве побочного продукта автоматически распределяет код на несколько серверов приложений.

Недостатки: хранение исходного кода на S3 другой

Что вы думаете об этой методологии? Является ли это правильным способом использования EC2, когда исходный код часто меняется (несколько раз в день), пожалуйста, порекомендуйте лучший подход для запуска экземпляров EC2, где источники часто меняются.

Ответы [ 2 ]

4 голосов
/ 08 января 2010

Я думаю, что вам лучше использовать правильный репозиторий исходного кода, такой как Subversion или Git, а не хранить исходные файлы на S3. Таким образом, вы можете иметь центральное расположение для исходных файлов, избегая проблем с согласованностью обновлений, упомянутых kdgregory.

Вы можете разместить исходный репозиторий на одном из ваших собственных серверов за пределами EC2 или разместить его на экземпляре EC2 (убедитесь, что файлы репозитория находятся на томе EBS в последнем случае).

2 голосов
/ 08 января 2010

Если вы собираетесь запускать большое количество экземпляров EC2, то будет меньше усилий, чтобы они синхронизировали себя из центрального расположения (т. Е. Вы синхронизировались с частным сегментом, серверы приложений синхронизировались из этого сегмента) .

ОДНАКО, признавайте, что обновления в контейнере S3 являются атомарными только на уровне объекта, и, что более важно, не гарантируется, что они будут немедленно согласованы (хотя я вспоминаю недавнее замечание о том, что конечная точка США-запад предлагает чтение после -записать последовательность).

Это означает, что ваши серверы приложений могут загружать набор новых файлов, которые внутренне несовместимы - некоторые будут старыми, некоторые будут новыми. Если это проблема для вас, вы должны реализовать схему, которая загружает непосредственно на серверы приложений и обеспечивает согласованность изменений (возможно, путем загрузки во временный каталог, который затем переименовывается).

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