Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Привет! Сегодня расскажем большую историю: как мы разработали корпоративную платформу отчётности и решили сделать её общедоступной и бесплатной.
Что мы сделали?
Свою собственную систему корпоративной отчётности с блэкджеком и... возможностью быстро создавать отчёты на основе вьюшек в БД, выгружать их в Excel в формате, нужном получателю, взаимодействовать с корпоративными сервисами шифрования данных и управлять разграничением доступа как на уровне объектов системы, так и данных.
Зачем мы это сделали?
Потому что захотели сделать лучше, чем было! Расскажем, как было у нас и наверняка до сих пор продолжается в других крупных компаниях.
Анализ данных и системы отчётности в нашей компании развивались больше десяти лет по трём направлениям:
Суровый SQL. В бизнес-подразделениях давно существуют команды специалистов со знанием SQL. У них есть права в корпоративном хранилище данных, выделенные там зоны — «песочницы» и собственные небольшие сервера БД. С этим богатством ребята пишут запросы, получают и анализируют результаты, выгружают их в Excel и передают коллегам или руководству. Классика!
Массовая отчётность. Тысячи сотрудников компании ежедневно используют отчётность фиксированной формы для решения повседневных бизнес-задач. Выгружают данные из корпоративного хранилища данных в Excel и некоторые платные или бесплатные системы отчётности и BI.
Настоящий BI. Данные на лету фильтруются, агрегируются и визуализируются с разной степенью интерактивности и взаимозависимости форм. Как сказали бы лет 15 назад: «Полный фарш!», мечта всех аналитиков, выполненная на развитых BI-платформах.
Что делать с первым направлением примерно понятно: вы анализируете запросы пользователей, создаёте таблицы-агрегаты, решаете вопрос управления конкурентной нагрузкой на СУБД. С хорошей промышленной СУБД под хранилищем (кстати, у нас такая) вы можете эффективно решить последнюю задачу стандартными механизмами СУБД. Правда, если хранилище начнёт расползаться по нескольким системам с разной архитектурой, возникнут новые проблемы. Спросите о них у ребят из любой крупной компании. Но об этом в другой раз.
С развитием BI всё тоже понятно. Пусть мы и не делали на него большой фокус, но план действий всегда представляли твёрдо и чётко: покупаете современные и дорогие BI-системы, внедряете их, собираете обратную связь от пользователей, подстраиваете инструментарий под их задачи, и всё будет супер.
А вот развитие массовой отчётности нас не радовало.
Но сначала — не о плохом. У этого вида анализа данных есть ряд особенностей, которые нужно учитывать при планировании его развития:
Максимальная массовость. Тысячи пользователей из всевозможных подразделений компании и самых далёких филиалов.
Сложившиеся практики. За пару десятков лет эволюции этого направления в нём выработались подходы и практики, которые нужно учитывать. Резать обычные рабочие бизнес-процессы огромной компании категорическими изменениями — плохая идея.
Требования информационной безопасности. Один из ключевых моментов в этой теме. Тысячам сотрудников приходится работать с корпоративными данными, и должности у них самого разного уровня. Грамотно разграничить доступ к данным и обеспечить их конфиденциальность — нетривиальная задача.
По старой-доброй традиции в нашей компании, как и во множестве других, массово используется одно очень популярное средство анализа данных. Пусть нас и просили не упоминать в статье проприетарные бренды, но писать на эту тему и не говорить об Excel невозможно. Поэтому мы упоминаем его уже в четвёртый раз. Он остаётся универсальным и мощным BI-средством несмотря на развитие самых разных BI-систем. Это данность, с которой глупо бороться.
Говорят, что отчётность в Excel — это что-то из прошлого века (по факту, кстати, правы), и настало время перемен. Мы не до конца с этим согласны. Менять нужно ситуацию с файловым хаосом. Испытываете сложности с управлением массовой отчётностью и организацией доступа к ней? Лучше устраните их, а не плодите новые трудности от новых инструментов анализа.
Люди хотят и будут использовать Excel, и им нужно оставить эту возможность. Если предложить им альтернативные инструменты, помогать им в их освоении — будет совсем восхитительно. Мы это даже как-то пробовали: стали использовать дорогое BI-средство корпоративного уровня для создания массовой отчётности, вели активную просветительскую работу, но пользователи всё равно предпочитали выгрузить отчёт в Excel и работать с ним там дальше.
Поначалу мы винили инерционность мышления, нежелание принимать новое, но потом пришли к выводу более простому и правильному: любая новая технология работы с массовой отчётностью должна быть удобной пользователю. Поэтому Excel и богатые возможности по предоставлению данных в этом формате обязаны быть по дефолту. Это база. Под богатыми возможностями мы имеем в виду способы формировать файл с данными в том виде, которые нужны пользователю, а не в формате плоской таблицы.
К этому фундаментальному требованию добавим ещё два:
Низкая стоимость владения.
Возможность точно реализовать любое требование, без необходимости прибегать к обходным путям.
Что мы имели на старте?
Система массовой пользовательской отчётности развивалась не один год и стала обеспечиваться несколькими системами, которые сопровождали и развивали разные подразделения компании:
Файлы Excel с интерфейсом выбора параметров отчёта, реализованным через VBA. Файлы упорядочивались в системе сетевых каталогов, доступ к которым управлялся Windows-доменом.
Отчёты на корпоративном портале, созданном на основе свободно распространяемой системы Jasper Server. Естественно, несколько доработанной: с удобными интерфейсами выбора параметров отчётов и с учётом требований информационной безопасности по разграничению доступа к данным.
Отчёты в дорогой проприетарной BI-системы промышленного класса с ограничением числа пользовательских лицензий. Сотрудники использовали её как параметризированное средство выгрузки Excel-файлов, а не как BI-систему. Хотя мы пытались объяснить, как лучше.
Сложности управления настолько разнородными системами понятны без лишних слов. Организационные трудности тоже: каждую систему поддерживало отдельное подразделение компании и понять, к кому обращаться при возникновении новой задачи — отдельный квест.
Это тяжёлое наследие нужно было унифицировать. Но просто взять и перевести всю отчётность на одну из имеющихся систем было нельзя — у каждой свои серьёзные недостатки. Нам нужно было что-то новое, и мы пришли к двум естественным вариантам: бесплатная система с ограничениями или платная. Но дорогая.
Оказалось, что платная система с нужным нам функционалом будет непозволительно дорогой. Платить за неё, чтобы люди пользовались ей как средством выгрузки Excel-файлов — печальная история. Обязательное обучение работе с новой системой — ещё более печальная.
Бесплатные системы тоже не порадовали. На этот раз широтой своих возможностей. Подстраивать рабочий процесс такой крупной компании, как Магнит, под эти ограничения было нельзя — слишком велика стоимость неудобных и рутинных операций.
Кроме того, и в бесплатных, и в платных системах не выполнялось одно из наших фундаментальных требований — возможность точно реализовать любое требование, без необходимости прибегать к обходным путям. Можно подумать, что если их не могут реализовать системы с многолетним мировым опытом, они у нас какие-то астрономические. Или надуманные, от которых и отказаться не жалко. Но нет: наши требования проистекают из нашего опыта, от которого нельзя отказаться. Вы бы отказались от всего, что много лет строили и чем пользовались в своих хранилищах данных и системах отчётности? Вот и мы не стали отказываться.
Самый простой пример такого требования: пользователь хочет фильтровать выборку по одному из бизнес-ключей (код, номер, название — текстовые поля). Он вставляет перечень этих ключей в соответствующее поле и запускает запрос. Обычно системы отчётности делают это с фильтрацией по данному полю, записывая в WHERE значения, которые указал пользователь. Для некоторых СУБД (у нас как раз такая) эффективнее, когда в запрос попадает перечень суррогатных числовых ключей, играющих важную роль в архитектуре БД. Нам всегда очень не хватало шага преобразования бизнес-ключей в суррогатные перед выполнением запроса — небольшой промежуточный шаг, сильно увеличивающий эффективность обработки запросов базой. И при высоком уровне нагрузки на СУБД это очень важная штука. Спойлер: в своей системе мы это предусмотрели.
Словом, мы пришли к третьему варианту — созданию своей системы массовой корпоративной отчётности. Несмотря на кажущееся безрассудство, это было продуманное решение. И если честно, выстраданное: его целесообразность была оправдана масштабами кампании, в которой мы собирались его реализовывать.
Что у нас получилось?
Система корпоративной отчётности, которая сегодня выступает центральным корпоративным порталом, обслуживающим тысячи пользователей практически из всех подразделений компании. Название родилось естественным образом — Магрепорт (уверены, объяснять этимологию вам не нужно