Является ли S3 более дешевым, чем решение EC2 DIY (для небольших файлов)

Является ли S3 более дешевым, чем решение EC2 DIY (для небольших файлов)

Действительно ли дешевле размещать изображения и скрипты через S3, чем с помощью экземпляра EC2, на котором запущены nginx/varnish и т. д.?

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

решение1

Вы тут как бы пытаетесь сравнить яблоки и апельсины. Сервисы Amazon EC2 (Elastic Compute Cloud) и S3 (Simple Storage Service) служат двум совершенно разным целям. S3 предназначен для избыточного хранения и не является «сервером» как таковым. Да, если бы у вас был веб-сервер, размещенный в другом месте, вы могли бы использовать S3 как форму CDN, используя S3 вместе с Cloudfront, но основная цель — хранение. EC2, с другой стороны, — это VPS (виртуальный частный сервер), который может запускать демоны, такие как nginx, Varnish, Apache и т. д. Сам по себе S3 не может сделать этого за вас.

Если вы создаете собственный AMI (образ машины Amazon) для EC2, то вы будете хранить их в S3 и платить за хранение, связанное с этим. Экземпляр EC2 может работать без использования S3 вообще. Однако, как уже упоминалось, экземпляры EC2 не хранят данные после выключения, когда экземпляр больше не работает. Чтобы сохранить данные между запусками и выключениями, вам нужно либо хранить их в S3, либо использовать EBS (Elastic Block Store), который может сохранять данные для вас.

Существуют различные уровни ценообразования на входящую, исходящую и внутри определенного региона пропускную способность, а также емкость хранилища, запросы ввода-вывода и т. д. Это усложняется, и есть несколько калькуляторов, которые помогут вам разобраться. Я написал собственную электронную таблицу с формулами, в которую импортирую свои загрузки CSV истории использования, чтобы оценить будущие затраты на использование. Я управляю несколькими экземплярами сервера для клиента в EC2 уже более 9 месяцев. Я обнаружил, что самая простая стоимость для расчета — это время выполнения экземпляра, поскольку это простая почасовая ставка за экземпляр. После этого объем EBS и емкость хранилища S3 легко подсчитать, но запросы ввода-вывода и пропускная способность порой могут удивлять.

Мои расходы на хранилище S3 обычно довольно незначительны (обычно < $2/месяц), и я храню несколько AMI и некоторые документы, к которым обращаются серверы приложений, а также первоначальный запуск экземпляров. Мои экземпляры используют сервер Puppet, поддерживаемый на VPS за пределами Amazon, который также служит моим сервером мониторинга и jumpbox. Запустив около 7 экземпляров в среднем, я обнаружил, что мои запросы ввода-вывода составляют от 5 до 8 миллионов и стоят в среднем < $1/месяц. За последние 6 месяцев я в среднем использовал около 10 ГБ в томах EBS, и это стоит всего чуть больше $1/месяц. Я использую тома EBS для своего статического контента вместе с файлами базы данных MySQL и двоичными журналами. Входящая передача данных составляла от 20 до 24 ГБ и в среднем ~ $2,25/месяц, в то время как исходящая передача данных составляла от 241 до 326 ГБ и в среднем ~ $42/месяц. Моя региональная пропускная способность между инстансами составляла от 130 МБ до 535 ГБ, поскольку не все мои инстансы находятся в одних и тех же зонах доступности, и в среднем составляла ~ $2,45/месяц. При всем при этом, поскольку я указал, что почасовая ставка является самой простой для расчета, мы получаем свыше $1700/месяц для самих инстансов EC2. В настоящее время мы хотим перейти на зарезервированные инстансы вместо инстансов по требованию и должны снизить ее примерно до $600/месяц после первоначальной стоимости ($6-9 тыс.) получения зарезервированного инстанса.

решение2

С S3 вы платите за передачу и хранение. С EC2 вы также платите за время, в течение которого экземпляры работают. В любом случае, вы платите за передачу и хранение, поэтому в любом случае будет дешевле использовать S3 только для хостинга файлов. EC2 всегда должен быть дороже, потому что вы платите за время, в течение которого экземпляр работает, в дополнение к хранению и передаче. У Amazon естькалькулятор ценкоторые вы можете использовать для экспериментов с числами, исходя из вашего собственного варианта использования и предполагаемых объемов передачи и хранения.

решение3

Вам необходимо учесть объем трафика, который будет передавать данные s3 на веб-сервер. В ec2 вы платите по часам, но получаете 160 ГБ локального хранилища, в s3 вы платите за хранилище и пропускную способность.

В общем, я бы сказал, что для веб-сервера экземпляр ec2 будет либо дешевле, либо равен s3. Но взгляните на калькулятор цен, чтобы убедиться

решение4

Поскольку S3 по сути предоставляет распределенную сетевую файловую систему, попробуйте рассмотреть возможность использования узлов EC2 для ее создания.

MongoDB/GridFS было бы убедительным сравнением.

Предположительно, S3 время от времени испытывает тайм-ауты чтения/записи, и создание собственного слоя кэша также может помочь.

Связанный контент