Какова правильная архитектура \ дизайн для выполнения javascript-клиента к системе отслеживания веб-сайтов базы данных aws? - PullRequest
0 голосов
/ 19 января 2019

Мы хотим построить систему передачи данных, которая отслеживает взаимодействия / события на сайте. Цель состоит в том, чтобы отслеживать поведение пользователей на веб-сайте, поэтому мы хотели бы выбрать правильную архитектуру для ее реализации, имеющую следующие два ограничения: 1) система Амазон 2) это бюджетный проект, поэтому мы не можем использовать для этого красное смещение

Исходя из вышеупомянутых двух ограничений, я планирую реализовать следующую архитектуру:

веб-сайт javascript -> AWS-S3 -> (AWS-Lambda) -> AWS-RDS

веб-сайт клиента JavaScript - Система доставки данных aws-firehose на S3 - отслеживает взаимодействие с пользователем и загружает его в aws-firehose, который в итоге записывает их в aws-S3.

AWS Lambda (Python) - Периодическая задача, которая извлекает ежедневные события из AWS-S3 и загружает их в AWS-RDS.

Причина, по которой я выбрал AWS-RDS, связана с его экономической эффективностью для этой цели

Благодарим за любой комментарий к вышеупомянутой реализации или любому другому предложению архитектуры, которое вы можете порекомендовать использовать вместо вышеупомянутого

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Если я правильно понимаю ваш вопрос, вы предлагаете следующее решение для выполнения веб-аналитики для вашего приложения:

WebServer -> Firehose -> AWS-S3 -> AWS-Lambda --> AWS-RDS

Я вижу ниже плюсы и минусы с вышеупомянутым дизайном

Плюсы:

  1. низкая стоимость
  2. легковнедрить

Минусы:

  1. RDS может быть недостаточно продаваемым для обработки аналитики на огромных объемах потоковых данных, которые обычно быстро растут
  2. Нужно обрабатывать балансировку нагрузки, сценарии сбоев и другие сложности для лямбды
  3. Вам необходимо обрабатывать преобразование данных для RDS, так как он ожидает, что структурированные данные будут включены в реляционные таблицы

Предложение для храненияданные в S3 через Firehose звучат как хорошее решение.Но имейте в виду, что минимальный интервал для Firehose составляет одну минуту, поэтому ваше приложение должно выдерживать эту небольшую задержку.Вы можете использовать Kinesis Streams с задержкой в ​​миллисекунды, но тогда вам нужно управлять собственным кодом приложения и экземплярами для обработки потоков.

После загрузки данных в Kinesis Firehose или Streams вы также можете изучить следующие варианты:

  • Использование Kinesis Analytics для отслеживания активности веб-пользователей в режиме реального времени, если она доступна в вашем регионе AWS,В настоящее время он доступен только в отдельных регионах AWS
  • В Firehose преобразуйте свои данные с помощью лямбды и сохраните их в S3 в оптимизированном формате для дальнейшего анализа с помощью AWS Athena
  • . Используйте Elastic Search в качестве места назначения и выполнитевеб-аналитика со стеком ELK вместо RDS
  • Хотя вы упомянули, что не можете использовать RedShift, это все же может быть лучшим решением для анализа временных рядов.Изучение RedShift, RedShift Spectrum и отформатированных данных, хранящихся в S3, все еще может быть экономически эффективным решением с лучшими возможностями

Добавление нескольких ссылок из AWS, с которыми вы можете ознакомиться, прежде чем принять решение о решении:

Веб-аналитика в реальном времени с решением Kinesis Data Analytics

Практически в реальном времени аналитика при потоковой передаче данных с Amazon Kinesis и Amazon Elasticsearch

конвейер аналитики схемы при чтении с использованием Amazon Athena

Amazon Redshift Spectrum расширяет хранилище данных до экзабайт - загрузка не требуется

0 голосов
/ 19 января 2019

Эй, ребята, это становится все более и более распространенным.

Обычно шаблон представляет собой события клика в потоки Kinesis, после чего вы можете отслеживать взаимодействие пользователя с веб-сайтом в режиме реального времени с помощью аналитики Kinesis. Вы можете подключить поток к пожарному шлангу, чтобы выгрузить данные в корзину S3, а также включить Lambdas для преобразования данных.

Существует некоторая сложность в параллельной обработке потоков Lambdas и Kinesis, поэтому это решение может быть не таким масштабируемым, как при использовании AWS Kafka. Или, возможно, запустите задание, чтобы переместить ваши данные s3 в rds для любых отчетов, которые вам могут понадобиться, - adhoc.

Вот шаблон, который AWS уже имеет веб-аналитика в реальном времени с кинезисом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...