Конвейер бизнес-аналитики на основе сервисов AWS — пример из практики

Опубликовано: 2019-05-16

В последние годы мы наблюдаем повышенный интерес к анализу больших данных. Руководители, менеджеры и другие заинтересованные лица используют Business Intelligence (BI) для принятия обоснованных решений. Это позволяет им немедленно анализировать критически важную информацию и принимать решения, основанные не только на их интуиции, но и на том, что они могут узнать из реального поведения своих клиентов.

Когда вы решаете создать эффективное и информативное решение для бизнес-аналитики, одним из самых первых шагов, которые должна сделать ваша команда разработчиков, является планирование архитектуры конвейера данных. Существует несколько облачных инструментов, которые можно применить для построения такого конвейера, и нет единого решения, которое было бы лучшим для всех предприятий. Прежде чем выбрать конкретный вариант, вы должны рассмотреть свой текущий технический стек, цены на инструменты и набор навыков ваших разработчиков. В этой статье я покажу архитектуру, созданную с помощью инструментов AWS , которая была успешно развернута как часть приложения Timesheets.

Обзор архитектуры

Архитектура разнообразных данных для отслеживания

Табель учета рабочего времени — это инструмент для отслеживания рабочего времени сотрудников и составления отчетов. Его можно использовать через веб-приложения, приложения для iOS, Android и настольные компьютеры, чат-бот, интегрированный с Hangouts и Slack, и действие в Google Assistant. Поскольку доступно множество типов приложений, также необходимо отслеживать множество разнообразных данных. Данные собираются с помощью Revolt Analytics, хранятся в Amazon S3 и обрабатываются с помощью AWS Glue и Amazon SageMaker. Результаты анализа сохраняются в Amazon RDS и используются для построения визуальных отчетов в Google Data Studio. Эта архитектура представлена ​​на графике выше.

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

Аналитика бунта

Revolt Analytics — это инструмент, разработанный Miquido для отслеживания и анализа данных из приложений всех типов. Чтобы упростить реализацию Revolt в клиентских системах, были созданы SDK для iOS, Android, JavaScript, Go, Python и Java. Одной из ключевых особенностей Revolt является его производительность: все события ставятся в очередь, сохраняются и отправляются пакетами, что обеспечивает их быструю и эффективную доставку. Revolt дает владельцу приложения возможность идентифицировать пользователей и отслеживать их поведение в приложении. Это позволяет нам создавать полезные модели машинного обучения, такие как полностью персонализированные системы рекомендаций и модели прогнозирования оттока, а также для профилирования клиентов на основе поведения пользователей. Revolt также предоставляет функцию сеансизации. Информация о пользовательских путях и поведении в приложениях может помочь вам понять цели и потребности ваших клиентов.

Revolt можно установить на любую выбранную вами инфраструктуру. Такой подход дает вам полный контроль над затратами и отслеживаемыми событиями. В случае Timesheets, представленном в этой статье, он был построен на инфраструктуре AWS. Благодаря полному доступу к хранилищу данных владельцы продуктов могут легко получить представление о своем приложении и использовать эти данные в других системах.

Revolt SDK добавляются к каждому компоненту системы Timesheets, которая состоит из:

  • Приложения для Android и iOS (созданные с помощью Flutter)
  • Настольное приложение (построено с помощью Electron)
  • Веб-приложение (написано на React)
  • Бэкенд (написан на Голанге)
  • Онлайн-чаты Hangouts и Slack
  • Действие в Google Ассистенте

Revolt предоставляет администраторам Timesheets информацию об устройствах (например, о марке устройства, модели) и системах (например, о версии ОС, языке, часовом поясе), используемых клиентами приложения. Кроме того, он отправляет различные пользовательские события, связанные с активностью пользователей в приложениях. Следовательно, администраторы могут анализировать поведение пользователей и лучше понимать их цели и ожидания. Они также могут проверить удобство использования реализованных функций и оценить, соответствуют ли эти функции предположениям владельца продукта о том, как они будут использоваться.

Клей AWS

AWS Glue — это сервис ETL (извлечение, преобразование и загрузка), который помогает подготавливать данные для аналитических задач. Он запускает задания ETL в бессерверной среде Apache Spark. Обычно он состоит из следующих трех элементов:

  • Определение обходчика. Искатель используется для сканирования данных во всевозможных репозиториях и источниках, их классификации, извлечения из них информации о схеме и сохранения метаданных о них в каталоге данных. Например, он может сканировать журналы, хранящиеся в файлах JSON на Amazon S3, и сохранять информацию о их схемах в каталоге данных.
  • Сценарий задания — задания AWS Glue преобразовывают данные в нужный формат. AWS Glue может автоматически генерировать сценарий для загрузки, очистки и преобразования ваших данных. Вы также можете предоставить свой собственный скрипт Apache Spark, написанный на Python или Scala, который будет выполнять нужные преобразования. Они могут включать в себя такие задачи, как обработка нулевых значений, создание сеансов, агрегирование и т. д.
  • Триггеры . Сканеры и задания могут запускаться по требованию или могут быть настроены на запуск при срабатывании указанного триггера. Триггером может быть расписание на основе времени или событие (например, успешное выполнение определенного задания). Эта опция дает вам возможность легко управлять актуальностью данных в ваших отчетах.

В нашей архитектуре расписаний эта часть конвейера представлена ​​следующим образом:

  • Триггер на основе времени запускает задание предварительной обработки, которое выполняет очистку данных, назначает журналы событий, соответствующие сеансам, и вычисляет начальные агрегации. Результирующие данные этого задания хранятся на AWS S3.
  • Второй триггер настроен на запуск после полного и успешного выполнения задания предварительной обработки. Этот триггер запускает задание, которое подготавливает данные, которые непосредственно используются в отчетах, анализируемых владельцами продукта.
  • Результаты второго задания сохраняются в базе данных AWS RDS. Это делает их легко доступными и удобными для использования в инструментах бизнес-аналитики, таких как Google Data Studio, PowerBI или Tableau.

AWS SageMaker

Amazon SageMaker предоставляет модули для создания, обучения и развертывания моделей машинного обучения.

Он позволяет обучать и настраивать модели любого масштаба и позволяет использовать высокопроизводительные алгоритмы, предоставляемые AWS. Тем не менее, вы также можете использовать пользовательские алгоритмы после того, как предоставите правильный образ докера. AWS SageMaker также упрощает настройку гиперпараметров с помощью настраиваемых заданий, которые сравнивают метрики для разных наборов параметров модели.

В расписаниях экземпляры SageMaker Notebook помогают нам исследовать данные, тестировать ETL-скрипты и готовить прототипы диаграмм визуализации для использования в инструменте BI для создания отчетов. Это решение поддерживает и улучшает совместную работу специалистов по данным, поскольку гарантирует, что они работают в одной среде разработки. Кроме того, это помогает гарантировать, что никакие конфиденциальные данные (которые могут быть частью выходных данных ячеек блокнотов) не будут храниться за пределами инфраструктуры AWS, поскольку блокноты хранятся только в корзинах AWS S3, и для совместного использования работы между коллегами не требуется репозиторий git. .

Заворачивать

Решение о том, какие инструменты больших данных и машинного обучения следует использовать, имеет решающее значение при разработке архитектуры конвейера для решения бизнес-аналитики. Этот выбор может оказать существенное влияние на возможности системы, стоимость и простоту добавления новых функций в будущем. Инструменты AWS, безусловно, заслуживают внимания, но вам следует выбрать технологию, которая будет соответствовать вашему текущему набору технологий и навыкам вашей команды разработчиков.

Воспользуйтесь нашим опытом в создании решений, ориентированных на будущее, и свяжитесь с нами!