#deployment #amazon-s3 #amazon-ec2
#развертывание #amazon-s3 #amazon-ec2
Вопрос:
Я пытаюсь настроить механизм для простого переноса изменений с нашего (локального) сервера разработки / тестирования на несколько конечных точек в облаке. Приложение является ASP.NET веб-приложение, версия которого контролируется с помощью Mercurial.
Есть некоторые проблемы, которые привели к этому:
- Скорость соединения между нашей локальной сетью и экземплярами EC2 чрезвычайно низкая, ее практически невозможно использовать
- Само приложение довольно большое, ~ 0,6 гигабайта
Система, которую я представляю, была бы способна на следующее:
- Простое автоматическое управление (нам просто нужно указать команду «обновить»)
- Быстро
- Будут ли обновлены только требуемые изменения
- Было бы обратимым (т. Е. мы могли бы при необходимости откатывать обновления)
- Было бы возможно отправлять обновления с любого сервера, а не только с сервера разработки (не так важно, как другие моменты)
Итак, в основном я представлял себе комбинацию клиент / сервер, которая будет находиться на каждом сервере и ждать команд обновления. Проблема со скоростью, похоже, может быть устранена с помощью S3 от Amazon.По какой-то причине загрузка на S3, а затем загрузка из облака намного быстрее, чем загрузка непосредственно в облако. В идеале мы бы использовали их API в приложении.
Вопрос в том, существуют ли инструменты, которые уже выполняют то, что я пытаюсь выполнить? А если нет, то каков наилучший способ передачи команды «обновить» на другие серверы?
Ответ №1:
В итоге мы создали небольшое клиент-серверное приложение, которое прослушивает удаленные команды и выполняет push / pull / update / patch и все остальное, что может потребоваться.
Чтобы обойти проблему регулирования, мы в конечном итоге использовали Amazon S3, как мы и предполагали. Для локальной связи (у нас все еще есть несколько локальных серверов) мы создали простой метод передачи на основе TCP, но при общении с облаком прибегли к S3. Оно было создано с использованием AWS SDK.