Разработка решения для безсерверного хостинга в AWS - PullRequest
0 голосов
/ 14 июня 2019

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

Предпосылки:

  • бессерверный.
  • экономически эффективное решение на основе трафика по требованию.
  • все может быть публично доступно. вход не требуется.
  • сайт в HTML с использованием JS.
  • данные меняются 1 раз в день.

Функциональность:

  • Основная панель инструментов (график в JS) для чтения динамических данных (последние 30 отчетов). Данные могут быть прочитаны из файла: txt, json или, возможно, из базы данных: DynamoDB. Как это имеет быть публичным, я не думаю, что использование базы данных будет
    хорошая стратегия.

  • Страница компании. Пользователи могут публично оставлять комментарии и оценивать с запусками.

Как лично вы разработали бы это решение?

Мой первый подход заключается в следующем: сайт приборной панели читает данные из текстового файла, сайт компании использует DynamoDB для сохранения / отображения комментариев и оценок.

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Это действительно зависит от того, как часто ваши данные обновляются и как должно отображаться в режиме реального времени.

Если это просто ежедневные обновления, и вы можете позволить себе задержку в несколько минут, я быгенерируйте статические страницы с новыми данными каждый день, используя Jekyll (например, через Siteleaf) или Hugo (который может работать на AWS Lambda).

Затем автоматически экспортируйте эти страницы в корзину S3 и кешируйте все, используяCloudfront для повышения производительности и снижения затрат.Молниеносный, без движущихся частей, простой в обслуживании.

Если вам нужно, чтобы отображаемые данные были постоянно обновленными, используйте размещенное на S3 одностраничное приложение, которое извлекает ваши данные из Lambda-DynamoDBAPI на основе API-интерфейса.

Вы можете развернуть его с помощью инфраструктуры без серверов или чего-то подобного, что намного удобнее для пользователя, чем само CloudFormation.

0 голосов
/ 14 июня 2019

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

Вам также не следует беспокоиться о том, чтобы держать каждый из этих компонентов в отдельном git-репо.При необходимости вы также можете использовать разные языки программирования для каждого компонента.Это позволит вам проектировать его не только как «безсерверный», но и с использованием микросервисной архитектуры, которую AWS активно продвигает в этой области.

Этот пример должен помочь вам быстрее: https://serverless.com/examples/aws-node-single-page-app-via-cloudfront/

Статическая часть вашего приложения (HTML + JS) должна полагаться на API для сбора данных.

Эти API могут быть функциями Lamba с API-шлюзом перед ними.Это позволит вам безопасно подключаться к базе данных, не беспокоясь о безопасности.

Этот пример должен быстро запустить вашу часть API: https://serverless.com/examples/aws-node-rest-api-with-dynamodb-and-offline/

Учитывая, как работает ценообразование Lambda, S3 и DynamoDB (большие уровни бесплатного доступа), это, скорее всего, будет выполняться бесплатно в течение первых 50 тысяч ежемесячныхили около того, примерно с 2-3 евро за человека в месяц прирост посетителей на 50 тыс.

...