AWS — обслуживание статических файлов с учетом производительности

Я работаю над своим проектом и ожидаю около 500-750 тысяч уникальных пингов в месяц.

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

Идея:

  • Экземпляр EC2 под управлением NGINX с включенным gzip
  • CloudFront для CDN

Что я размещаю:

  • HTML (всего 3 страницы)
  • CSS
  • SVG/PNG изображения

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

Редактировать: Или как насчет чего-то более простого, например, S3 с CloudFront?


person COOKIES    schedule 03.11.2017    source источник
comment
Вся производительность статического веб-сайта будет обеспечиваться CDN. Это служба, с которой будет взаимодействовать браузер пользователя. Так что нет причин задумываться о происхождении тех файлов, из которых будет извлекаться CDN, просто используйте S3. CloudFront, очевидно, является предпочтительным CDN на AWS, но на самом деле вы можете использовать любой CDN.   -  person Mark B    schedule 03.11.2017


Ответы (2)


Экономичное, высокодоступное, полностью управляемое, безопасное и отказоустойчивое решение для вашего случая — это AWS S3:

  1. Создайте корзину S3 (mybucket) и включите в ней статические свойства веб-сайта.

  2. Создайте пользователя IAM с разрешением на чтение/запись в этом сегменте.

        "Version": "2012-10-17",
        "Statement": [
          {
            "Action": "s3:ListAllMyBuckets",
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::*"
          },
          {
            "Sid": "Stmt1487841624000",
            "Effect": "Allow",
            "Action": ["s3:*"],
            "Resource": ["arn:aws:s3:::mybucket/*", "arn:aws:s3:::mybucket"]
          }
        ]
        }
    

    (Сохраните секретный ключ и ключ доступа, а также регион, в котором вы создаете корзину)

  3. Настройте свой секретный ключ и ключ доступа на своем ноутбуке

      aws configure;
    
  4. Затем загрузите свой статический веб-сайт:

      aws s3 sync /path/to/local/dir s3://mybucket; 
    

Поздравляю! ваш веб-сайт размещен: http://[BUCKETNAME].s3-website.[REGIONMAME].amazonaws.com

Если ты хочешь :

  • привязать сайт к другому домену

  • или/и использовать SSL

  • или/и интегрироваться с WAF.

  • или/и так далее...

Используйте также AWS CloudFront.

person Abdennour TOUMI    schedule 03.11.2017
comment
Да, я хорошо знаю об этом. Думаю, мой вопрос больше касался минусов и плюсов с точки зрения производительности. Тем не менее, спасибо за ваш ответ, я ценю это! - person COOKIES; 03.11.2017
comment
Когда вы слышите эти два слова: AWS + статический веб-сайт, интуитивно ваш мозг должен думать об AWS S3 + AWS CloudFront. ???? Поверьте , не причиняйте боли своими усилиями и своими деньгами. - person Abdennour TOUMI; 03.11.2017
comment
Даже в приложениях SPA (таких как React + ReactRouter) S3 по-прежнему действует с подходящей конфигурацией страниц индекса и ошибок при включении статического свойства веб-сайта. - person Abdennour TOUMI; 03.11.2017
comment
Я согласен. S3 + CloudFront, без сомнения, самый простой вариант. - person COOKIES; 03.11.2017
comment
Просто подумал об этом. Основным преимуществом использования пользовательского веб-сервера + CloudFront будут чистые URL-адреса (/about/ вместо /about.html) без необходимости взлома поведения S3. - person COOKIES; 06.11.2017

Могу я опоздать на вечеринку и тоже предложить S3. Вот некоторые показатели фактической производительности

S3 GET из корзины с высоким трафиком

Это график, показывающий задержку S3 при достаточно высокой нагрузке.

Как видите, среднее время до первого байта за каждый час колеблется от 30 до 60 мс.

Мы также обнаружили, что общий объем трафика не влияет на задержку, фактически существует обратная зависимость между средней задержкой и общим количеством запросов. Я предполагаю, что это произошло из-за автоматического масштабирования «под капотом» на стороне AWS.

Согласно документации AWS, часть S3 статической настройки веб-сайта подходит для 800 запросов GET в секунду, см. http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html

Извините, у меня нет статистики ngnix для сравнения. Мы не используем ngnix для этого типа рабочей нагрузки.

person Vorsprung    schedule 03.11.2017