Как разрабатывать приложения с интенсивным использованием данных: Примеры и практика

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

Проблемы разработки приложений для работы с большими объемами данных носят не только технический характер, но и связаны с обеспечением соответствия приложений требованиям бизнеса и их полезности для конечных пользователей.

Что такое приложение с большими объемами данных?

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

Отрасли, в которых требуется такое программное обеспечение, обычно имеют большое количество пользователей, большой объем данных и частое взаимодействие. Вот некоторые из них:

  • Банковские и финансовые услуги обрабатывают и анализируют большие объемы данных для выявления мошенничества, управления рисками и принятия инвестиционных решений на основе данных. Приложения с большим объемом данных помогают этим организациям управлять и анализировать информацию из различных источников, включая данные о клиентах, транзакциях, рыночные и нормативные данные.
  • Отрасль Data Science и Data Mining нуждается в приложениях с большим объемом данных для улучшения управления данными, разработки более точных моделей прогнозирования, машинного обучения, создания лучших визуализаций и аналитики в реальном времени. 
  • В сфере цифрового маркетинга приложения с большими объемами данных используются для анализа поведения потребителей, таргетирования рекламы и оценки эффективности маркетинговых кампаний. Эти приложения обрабатывают данные из различных источников, таких как социальные сети, посещаемость сайтов и данные о клиентах, и позволяют получить информацию, которая помогает маркетологам оптимизировать свои стратегии.
  • Компании, занимающиеся электронной коммерцией, генерируют данные о продажах в Интернете, поведении покупателей и посещаемости сайтов. Приложения, работающие с большими объемами данных, помогают им управлять этими данными и анализировать их для персонализации покупательского опыта, оптимизации ценообразования и товарных запасов, а также для улучшения управления цепочками поставок.

Для изучения основ извлечения данных из веб-источников рекомендуем ознакомиться с Полное руководство по извлечению веб-данных.

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

Общие проблемы приложений для работы с большими данными и способы их решения

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

Задача 1. Постоянно меняющиеся данные, которые часто необходимо обрабатывать в режиме реального времени

Управление подавляющим объемом информации является сложным и утомительным для пользователей. Слишком большое количество графических элементов может отвлекать и запутывать их. Именно поэтому проектирование для обработки данных в реальном времени требует тщательной проработки пользовательского интерфейса (UI). 

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

Задача 2. Проектирование для различных типов пользователей

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

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

Как мы успешно справились с этой задачей? Только благодаря тщательному исследованию пользователей и составлению карт персон.

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

  • Сначала мы провели интервью с техническим директором Involi, чтобы узнать о назначении продукта, его возможностях, дизайне и юридических ограничениях, ожиданиях заинтересованных сторон и, конечно, о его потребителях.
  • Затем мы провели собственный анализ программного обеспечения, чтобы узнать, как клиенты используют его, определить, что работает хорошо, а что нет, и предложить возможные пути улучшения.
  • На основе полученной информации нам удалось создать персоны пользователей, которые показали, какие данные необходимы каждому типу пользователей, какие функции они используют и с какими проблемами сталкиваются.

Задача 3. Масштабируемость и обслуживание

Для приложений, интенсивно использующих данные, типичен рост объема, сложности и трафика данных. Это требует надежной архитектуры и дизайна, которые можно поддерживать и обновлять по мере трансформации приложения.

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

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

Gamaya - это SaaS-платформа (пример облачной разработки / интеграции), которая обрабатывает и анализирует сельскохозяйственные данные. 

В приложении Gamaya используется React - фронтенд-инструмент для создания пользовательских веб-интерфейсов с компонентной архитектурой, которая позволяет разработчикам создавать многократно используемые компоненты и собирать их в различных комбинациях. И вот как мы воспользовались этой технологией, чтобы сделать приложение легко масштабируемым:

  • Мы использовали Ant Design, готовую библиотеку React UI, и адаптировали наш дизайн под эту библиотеку. 
  • Мы подготовили набор UI и руководство, чтобы помочь разработчикам реализовать необходимые компоненты дизайна с помощью Ant Design. 
  • Также мы провели демонстрационную сессию, на которой рассказали, как реализовать сложные компоненты. 

Задача 4. Представление данных

Эта задача связана с представлением сложных и больших объемов данных в наглядной и понятной для пользователей форме.

  • Одной из распространенных проблем является выбор правильного уровня детализации при представлении данных. Хотя детализация данных может обеспечить более полное понимание информации, она также может перегрузить пользователей, затруднив интерпретацию данных. С другой стороны, чрезмерное упрощение данных может привести к потере важной информации.

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