Поводом для публикации послужила запись в блоге Rstudio: «Shiny 1.1.0: Scaling Shiny with async», которая может очень легко пройти мимо, но которая добавляет очень весомый кирпичик в задаче применения R для задач бизнеса. На самом деле, в dev версии shiny асинхронность появилась примерно год назад, но это было как бы несерьезно и «понарошку» — это же dev версия. Перенос в основную ветку и публикация на CRAN является важным подтверждением, что многие принципиальные вопросы продуманы, решены и протестированы, можно спокойно переносить в продуктив и пользоваться. А что еще есть в R, кроме «бриллианта», что позволяет превратить его в универсальный аналитический инструмент для практических задач?  Является продолжением предыдущих публикаций. Если говорить о практическом применении R для различной обработки данных в бизнес-процессах реальной компании, то основными пользователями аналитических результатов будут выступать менеджеры различного уровня. Слой DS аналитиков мы оставляем за скобками, им нужен широкий спектр инструментов, включая прямодй доступ в БД. Они сами все могут и умеют. Графический web-based АРМ будет являться удобным подспорьем, но никак не ключевым дифференциатором. В отличии от DS специалиста, обычному менеджеру нужен удобный интерфейс, который будет снабжать его всей информацией (исторической, аналитической, прогнозной и т.д.), необходимой для принятия решения или отчета перед руководством. Собственно говоря, интерфейс Пользователя есть «альфа и омега» любой enterprise Системы. Никто и никогда не будет заглядывать под капот (ну разве что только на долгих и мучительных этапах RFI-RFP). Никто и никогда не будет разбираться выходить экспериментировать за границами своих user-story, указанных в должностных обязанностях. Никто и никогда не будет размышлять на тему протоколов, алгоритмов, проверки достоверности и точности. С помощью Shiny можно нарисовать весьма разветвленный интерфейс, который будет включать в себя текст, графику, таблицы, почти все структурные html элементы (bootstrap framework). JS позволяет добавить сложную тюнинг веб интерфейса, CSS — сделать произвольное стилевое оформление. Также весьма несложно на R сделать несколько важных вещей, которые качественно меняют работу с интерфейсом, а именно, динамическая генерация контента. Тут речь идет о: Нет интерфейса — нет Системы. И ровно в этой точке становится почти очевидным, почему R, а не python. Потому что у R есть Shiny (пакеты + среда исполнения) с помощью которого непосредсвенно на R можно делать Пользовательские интерфейсы для систем процессинга данных почти любой алгоритмической степени сложности, а у python, увы, такого нет и в ближайшем будущем пока не анонсировано. Само по себе shiny приложение исполняется последовательно, на каждую url ссылку (shiny app) в shiny server open-source поднимается один backend R процесс, который обслуживает вычисления в соответствии с пользовательской активностью. Вплоть до последнего релиза open-source версия shiny была полностью синхронной. Это означало, что любое длительное вычисление в рамках кода «замораживало» отклик приложения для всех пользователей, которые одновременно им пользовались. Естественное, что в enterprise версии Shiny Server Pro вопрос управления пользовательскими сессиями был решен. У Потребителя была возможностью выбора — получить ли за 5 секунд все что любят при enterprise применении или же дополнить самому. В принципе, такую особенность shiny приложений можно было нивелировать путем: Однако, теперь стало все многократно удобнее. Асинхронность через механизмы promise(s) позволяет парой строчек порождать дополнительные R потоки в которых будут проводится ресурсоемкие вычисления, без влияния на производительность потока и время отклика основного shiny приложения. Так что формально вопрос параллельной работы многих пользователей можно считать решенным и в open-source версии тоже. Время пить кофе и ждать результата — это не про Shiny.  Говорить о моделях и ML в рамках enterprise применения любят много и часто, но реально к решению этих задач можно подступаться только после оцифровки задачи и подготовки данных. И это все можно сделать в рамках R.
Естественно, что одним R не всегда обходится, в зависимости от масштаба задачи и объема данных может потребоваться и open-source olap backend и open-source подсистема сбора данных. Но это ничего не меняет, поскольку пользователь работает только с Приложением Пользователя (см. выше).
На многие из историй ранее выпускались специальные продукты от «больших вендоров», внедряемые годами за миллиардные бюджеты. Но теперь все решается гораздо проще и дешевле. Практика показывает, что 99% задач бизнеса ложатся в один из трех нижеописанных кейсов. Типичная задача, которая заключается в создании оперативного контура обратной связи. Основные этапы: Классические экземпляры: Таких задач масса и все может быть решено средствами экосистемы R. Практика показывает, что Excel в подавляющем числе компаний является основным инструментом бизнес-аналитиков. Для простых задач это еще допустимо, для сложных задач с большим количеством данных такой подход превращается в черную дыру, которая засасывает любое количество ресурсов и ничего не дает на выходе. Типичная задача:
WHILE (!Fired) DO { Классические экземпляры:  Тут еще проще и наиболее приближено к чистому ML:  Классификация по кейсам не надумана, а получилась на основе реальных потребностей бизнеса (наука и чистый ML\AI\DL отдельно). Наверное, в ближайшее время можно будет «в скриншотах» поделиться про решение 2-3 задачек. Практика показывает, что R + Shiny позволяют «щелкать» подобные задачи весьма и весьма эффективно. Если есть задачи, имеет смысл посмотреть на эти инструменты более внимательно. Предыдущая публикация — Конструктивные элементы надежного enterprise R приложения. Data Science