Допустим, у меня есть приложение django
Будет ли лучше (с точки зрения производительности) обслуживать статические файлы с помощью s3 или настроить сервер nginx на экземпляре ec2?
Nginx будет быстрее обрабатывать ресурсы сайта, такие как CSS, изображения навигации и т. Д. Если клиентский браузер уже имеет открытое соединение для динамической страницы и настроены пакеты поддержки активности, он будет использовать то же соединение.
Теперь вы можете поддерживать CloudFront с размещенным содержимым EC2, поэтому S3 больше не является требованием на этом уровне. Кроме того, вы можете использовать облачный интерфейс с созданным django, но не часто меняющим контент. Вы можете использовать встроенное кеширование nginx для полудинамического контента. Если вам все равно придется запускать сервер для части django, это не составит большого труда.
Если файлы, которые вам нужно разместить, имеют больший размер, S3 начинает выглядеть лучше, потому что производительность диска на меньших экземплярах EC2 не идеальна.
В конце концов, если вы не имеете дело с десятками запросов в секунду, оба варианта будут достаточно близкими, чтобы будет сложно измерить различия.
Есть много вещей, которые могут сыграть в этом роль, но если это вариант, я бы просто служил напрямую из S3, если вы можете. Производительность будет по крайней мере такой же или, возможно, лучше, чем при использовании nginx, и это дает вам простой способ начать использовать AWS CloudFront CDN в будущем, если это будет необходимо.
Как упоминал Coeus Blue выше, это зависит от вашего сценария использования. Если ваш сайт должен загружаться как можно быстрее, все ресурсы должны находиться в одном домене (поддомены разделены), поскольку запросы DNS могут занимать 1-2 мс при очень быстром соединении или 40-50 мс при плохом соединении.
Вызовы DNS обычно кэшируются, поэтому на любом сайте с несколькими внешними ресурсами это не сильно повлияет на скорость из-за поиска DNS.
Однако S3, вероятно, будет быстрее, чем экземпляр EC2, обслуживающий тот же файл с nginx / Apache. Хранилище S3 дешевле, чем EBS (и вам понадобится EFS для кластера веб-серверов nginx / Apache), а исходящие интернет-передачи S3 дешевле, чем исходящие передачи EC2, если я не ошибаюсь