Последние несколько лет я и на Инфостарте, и в жизни, стараюсь подтолкнуть людей к расширению профессионального кругозора. Я убежден, что в современном мире невозможно занять достойное место, занимаясь узкоспециализированной деятельностью – только узкоспециализированной деятельностью (за редкими исключениями).
Есть, например, ребята, которых называют «кодеры» - они ничего не хотят знать о предметной области, заботятся только о качестве кода, о производительности, о правильной структуре данных.
Оно, конечно, неплохо, но такие ребята постоянно находятся в зависимости от окружения. Им нужен переводчик – методист, который транслирует задачу заказчика в термины, понятные кодеру.
Соответственно, у кодера есть ограничение по местам работы – подходит крупный франч или предприятие с большим и разношерстным ИТ-отделом..
Универсал имеет немного больше возможностей – он умеет понимать язык пользователей, почти все диалекты. Но универсал, как правило, не умеет говорить на языке бизнеса (этот язык отличается от диалектов пользователей). На схожую тему уже есть статья, повторяться не буду.
Но сегодня – не об этом, сегодня – о технологиях.
Недавно я вылез из уютного желтого домика и обнаружил, что в мире много задач определенного класса, которые лично я совсем не умею решать. Звучат задачи примерно так: создавать бизнес-приложения высокой доступности. Проще говоря, веб-приложения (для бизнеса).
Конечно, раньше я слышал о таких приложениях, я ведь ИТ-директором работал. Компании нужен был сайт, компания хотела облачную CRM, компания хотела доступную из любого места систему управления задачами и проектами, компания хотела интернет-магазин. К сожалению или к счастью, я всегда умел уходить от самостоятельного решения таких задач с помощью известного всем приема – найти подрядчиков или готовое решение по модели SaaS. В итоге компания тратила огромные деньги, не получая достойного результата. Но об этом позже. Единственное исключение в этом списке – система управления задачами и проектами, которую я сделал на 1С в тонком клиенте, но гордиться тут нечем.
Еще сидя в уютном желтом домике, я вместе со своими ребятами поковырялся в битриксе и его интеграции с 1С. Нашли одну удобную для себя нишу: оказалось, что внутри битрикса скрывается база данных на MySQL, и с ней вполне-таки можно работать через механизм внешних источников данных 1С. Можно и писать, и читать, и создавать таблицы.
В голове зародилась мысль, что на этой простейшей технологии можно построить неплохие, полезные и эффективные решения. Например, мы переделали свой слайдер из «Кастомизации на лету», заменив PowerPoint на страничку корп.портала в битриксе, на которой стоял уже настоящий слайдер (который листается пальцем на телефоне), а в его слайдах выводятся графики по показателям из 1С средствами Google Charts. Выглядело забавно, реализовывалось элементарно, и весьма симпатично смотрелось на телефонах руководителей – масштабировалось до фулскрина, понимало поворот экрана, листалось, не требовало обмена данными и установки мобильного приложения, правильная авторизация есть в коробке битрикса.
Я даже поговорил со знакомыми вебщиками (битриксоидами и обычными) о том, насколько востребованы у заказчиков интеграции битрикса и 1С, хотел плотно заняться этой темой вместе с ними. Никто же не мешает, например, вместо таблиц с показателями гнать в битрикс таблицы с данными – те же документы или справочники, чтобы реализовать, например, личные кабинеты поставщиков. Интеграция простая, понятная 1Снику, можно реагировать на события системы, ставить произвольные фильтры, использовать схемы компоновки и т.д. Особенно эта технология стала мне нравиться после того, как я реально поработал с типовой выгрузкой каталога номенклатуры из 1С в битрикс (да простят меня ее разработчики).
Но что-то как-то не пошло, вебщики не проявили интереса к моей гениальной технологии J, ну да ладно.
Сильно меня, смущало отсутствие знаний и опыта разработки внутри битрикса, т.е. на php. Простые формы нарисовать с горем пополам и с помощью друзей-вебщиков получилось, но чувствовалась большая неуверенность в своих силах. Сам себе стал напоминать того самого кодера, который находится в зависимости от коллег.
Можно было еще долго закрывать глаза на этот пробел в своих знаниях, но я вроде других учу быть честными с собой, признавать наличие колхоза в себе, чтобы получить стартовый толчок в развитии. Решил и сам воспользоваться своими рекомендациями, признал свою никчемность в разработке веб-приложений для бизнеса (не считать же веб-приложением опубликованную на IIS базу 1С) и пошел в падаваны к джедаям этой темы.
На веб-приложения я смотрю через призму своего опыта работы с 1С, и с соответствующими стереотипами. Поэтому, если вы – матерый веб-мэйкер, прошу быть снисходительным к моему невежеству и грубым ошибкам. Я еще в начале пути.
Первое, что бросается в глаза при разработке веб-приложений – бесчисленное количество инструментов и технологий. Это языки программирования, фреймворки, форматы передачи данных, среды исполнения и отладки, нотации и правила разработки, доступные к использованию СУБД и т.д. Перечислять и анализировать не буду, вы и сами все это знаете.
Второе бросается в глаза не сразу, а после нескольких месяцев общения с клиентами, действующими и потенциальными, но повергает меня, как 1Сника, в шок: почему такая огромная масса технологий, такое невероятное количество специалистов, создают такой унизительно маленький спектр решений для бизнеса? Речь, в первую очередь, не о готовых решениях, а о платформах и технологиях их создания (я же 1Сник старой закалки :)).
С веб-приложениями для людей все понятно – там есть все, или почти все, что нужно обывателю. Социальные сети там, человека по фоточке найти, поговорить голосом или буквами, поиграть в танчики, видосы посмотреть и т.д.
А для бизнеса что?
Самое распространенное бизнес-приложение – просто сайт о компании. Мне, 1Снику, с натяжкой удается называть сайт бизнес-приложением, но факт остается фактом. Теоретически, сайты создаются для решения задач бизнеса. Например, для привлечения клиентов, на эту тему есть очень широкий спектр услуг. Единственное, что смущает – цены изготовления сайтов, даже на популярных платформах. Те сайты, что я видел изнутри компаний, не приносили почти никакого толка для бизнеса, но цены были сродни стоимостям проектов внедрений учетных систем.
Второе по распространенности веб-приложение для бизнеса – интернет-магазин. Вариантов реализации тоже достаточно много, и готовых, и на заказ. Стоимость тоже сильно варьируется, как и польза для бизнеса. Нет, есть конечно бизнесы, построенные вокруг интернет-магазина, и ничего кроме него не имеющие – тот же дропшип. Но в основном интернет-магазин – это такая модная пришлепка к сайту. Тем более, что она обычно идет в коробке платформы, чего ж не развернуть (за деньги заказчика).
Есть еще разного рода коммуникаторы – плагины и платформы для организации обратной связи. Например, на сайтах такое окошко, которое назойливо просит ввести номер телефона, чтобы кто-то потом перезвонил.
Более крупная тема – системы управления задачами и проектами в облаке. Таких систем масса, обычно распространяются по модели SaaS, соответственно не кастомизируются, плохо интегрируются (в смысле возни больше, чем пользы). В качестве учетной системы для задач годятся, но великой пользы тоже не приносят.
Что еще? А, да, сервисы. У 1С, например, много сервисов, наподобие директ-банка, поиска контрагентов по ИНН, электронного документооборота. Поставляются также как SaaS, но встроенная в учетную систему клиента часть может кастомизироваться. Полезные, конечно, штуки в жизни, но переворота в бизнесе не сделают.
Такие веб-приложения, как почта или облачные хранилища, или аренду серверов и мощностей для рендеринга, упоминать не буду. Они или узкоспециализированные, или уже настолько само собой разумеющееся, что стоят в одном ряду с вордом и экселем.
Есть, конечно, и готовые решения – у всех крупных западных ERP примерно в одни и те же годы появилась веб-морда. Джедаи говорят, что она построена на устаревших на данный момент технологиях, но я пока не готов это обсуждать. Меня, повторюсь, смущает недостаточная кастомизируемость готовых решений от больших вендоров. Это – готовые решения, как Бухгалтерия базовая. Построить с их помощью небольшое решение для малого или среднего бизнеса за разумные деньги невозможно. Да и стоимость лицензий конская.
А малый и средний бизнес продолжают атаковать. Они хотят личные кабинеты поставщиков, личные кабинеты дилеров, распределенные системы на несколько сотен или тысяч людей для гос.сектора, невизуальные сервисы приема заказов, гибко настраиваемые системы управления задачами, системы сбора данных с оборудования с аналитикой в реальном времени, быстрой консолидации нескольких баз без покупки Великой и Могучей Конфигурации.
Они хотят работать с дилерами, клиентами, поставщиками в единой базе, через веб. Они не хотят содержать еще какую-то систему, гонять туда-сюда данные и работать в разных интерфейсах (исключение дружно делают для малышек БП, ЗУП и КА, как без них-то).
Они (почти все, как ни странно) хотят возможности работать офлайн, работать при разрыве соединения (это, увы, еще беда в наших колхозах), при этом не хотят держать базу на клиенте и выполнять обмены, обрабатывая потом коллизии. Хотят как электронной почте, которая спокойно живет в телефоне при отсутствии интернета – можно смотреть все письма, можно писать новые (без отправки, разумеется) – а при появлении соединения все это само собой синхронизируется с облаком. Такими они хотят видеть и свои приложения.
Почти все, чего хотят клиенты в части бизнес-логики, легко реализуется на платформе 1С. В ней есть практически все необходимое для решения учетных и аналитических задач.
Например, справочники, в которых легко можно разложить взаимосвязанную нормативно-связанную информацию. Или документы, которые правильно (ну, или хотя бы привычно) отражают события хозяйственной жизни предприятия. Регистры накопления, в которых правильно лежат остатки и обороты в нужной аналитике. Отчеты, которые вкупе с СКД дают невероятный простор для кастомизации работы аналитиков. Ну чего я тут рассказываю, вы сами знаете.
Но на 1С правильные веб-приложения для бизнеса не делают, по двум основным причинам: скучная желтая морда и неудовлетворительная производительность при большом количестве подключений (включаем сюда все аспекты производительности – объем пожираемых ресурсов, блокировки, и т.д.).
Если абстрагироваться и представить себе, что у 1С правильная морда и нет проблем с тысячами одновременных пользователей (это такой мысленный эксперимент), то получится идеальная платформа для создания бизнес-приложений высокой доступности.
Посудите сами. Представьте в рамках мысленного эксперимента, сколько вам нужно времени для создания интернет-магазина в конфигурации УТ 10.3? Если не думать об интерфейсе и производительности, то вроде затраты на такую задачу будут от нуля до нескольких часов. Просто делаем правильный RLS (пользователь видит все документы, относящиеся только к нему), запускаем пользователя в систему, и… все! Зашел, оформил сам для себя заказ покупателя, выбрал номенклатуры (фотки, цены и остатки видно в форме выбора), провел документ, и наслаждайся жизнью.
Конечно, надо будет кое-что подкрутить для самообслуживания. Например, оплату. Или авторезервирование с выдачей дат доставки. Но, согласитесь, для 1Сника такие задачи – плюнуть и растереть. Тем более, что они все уже решены.
Можно еще и разделение данных добавить, тогда вообще кайф будет.
Ровно столько же времени, а то и меньше, нужно для организации личных кабинетов поставщиков.
Для организации системы управления проектами и задачами вообще ничего делать не нужно – просто запускаешь людей в свою 1С:Документооборот 2 и правильно настраиваешь профили.
Если так рассуждать, то почти любая из известных мне задач для "бизнес-приложений в вебе" может быть решена с помощью платформы 1С.
Теперь снимаем розовые очки и вспоминаем, что это был мысленный эксперимент. Никого мы никуда не запустим, потому что здоровый человек не захочет работать в желтом интернет-магазине. Здоровый бизнес не захочет держать адский физический кластер серверов, который выдержит наплыв пользователей через веб-клиенты в несчастную БД. Не говоря уже о том, сколько денег придется отдать за лицензии.
Некоторые ребята выкручиваются, разделяя 1С и веб на разные приложения, и организуя связь посредством http-сервисов. Это очень увлекательное занятие, но суть теряется – мы опять имеем два слабо связанных приложения, и в веб-части придется еще раз описывать бизнес-логику, хранить данные, рисовать формы и отрабатывать события.
Причем, с высокой вероятностью можно сказать, что в веб-части системы либо получится скучная поделка (как это обычно получается у кондовых вебщиков), либо придется провести адскую работу.
Почему адскую? Теперь это уже понятно: потому что там нет платформы 1С с ее структурой данных. Там нет справочников и документов, нет регистров накопления, нет отчетов. Есть голая БД, пустые формы, никаких объектов, примитивные события, всемогущий javascript и, как упоминалось в начале, бесчисленное количество доступных технологий низкого уровня (для создания объектов высокого уровня). Например, react js.
Говоря проще, чтобы создать веб-приложение для бизнеса, как на 1С, придется сначала написать веб-платформу 1С. Хотя бы кусочек – справочник там, документик небольшой, отчетик, диаграммку. Поведение этих классов хоть минимальное придумать и запрограммировать.
Собственно, этим зачастую и занимаются веб-мэйкеры. Оттого такие конские цены на создание взрослых бизнес-приложений в вебе. Оттого так мало взрослых бизнес-приложений в вебе – никто не хочет платить конские деньги.
Есть, конечно, люди, которые такую работу покупают. Много таких проектов в государственном и муниципальном секторе, в сфере ЖКХ (типа личных кабинетов потребителей э/э, воды и т.д.), электронные дневники для школ. О качестве таких приложений можете судить сами, вы сами такими пользуетесь раз в месяц. Это, конечно, не бизнес-приложения, и зачастую делаются не за «свои» деньги, но думаю, упомянуть их стоило.
Итоговая – дилемма:
В вебе решены вопросы красивой морды и высокой доступности приложений и данных, но нет платформы для быстрого описания бизнес-логики.
В 1С решены вопросы быстрого описания бизнес-логики, но некрасивая, неподвластная разработчику желтая морда, и низкая доступность приложения и данных.
Что делать? Ответ очевиден – объединить лучшее в одном флаконе. Создать платформу «как 1С» для разработки бизнес-приложений высокой доступности.
Нетрудно догадаться, что я говорю о metadata.js. И это не реклама.
На самом деле, таких платформ несколько – вы легко найдете другие примеры. Если расскажете о практике разработки бизнес-приложений на таких платформах – буду очень признателен. Мой поверхностный анализ показал, что эти платформы не подходят под мое определение – платформа «как 1С» для разработки бизнес-приложений высокой доступности.
Metadata.js – она как 1С. Там есть все знакомые классы – документы, справочники, перечисления, отчеты, регистры и т.д. Не все еще работают, но это потому что платформа молодая. Например, не работает класс бизнес-процессы. Честно говоря, мне кажется, он и в 1С не работает, в смысле толку от него мало, только картинки красивые.
В metadata.js, как и в 1С, есть ссылочная типизация. Я так же, как в 1С, записываю объект, и у него появляется guid. Как и в 1С, я, зная ссылку, могу ей воспользоваться из любой точки приложения. Равно как и ее реквизитами, табличными частями, методами, методами ее менеджера, получить объект, с его свойствами и методами поработать. Знакомо и привычно, только на javascript.
Про то, как в metadata.js решены вопросы производительности и доступности данных, офлайн-работы, репликаций, рассказывать не буду – есть статьи ее разработчика (вот, например).
В разработке приложений на metadata.js пока не обойтись без конфигуратора 1С – в нем мы рисуем метаданные – документы, справочники, отчеты, реквизиты, таб.части, параметры выбора, связи параметров выбора и т.д. Потом дружно выгружаем все это в CouchDB, и веб-приложение пользуется готовой структурой метаданных.
Приложение на metadata.js работает само по себе.
Это не веб-интерфейс для 1С или какой-то другой системы.
Приложение на metadata.js само хранит данные, само рисует интерфейсы, само обрабатывает события, само обеспечивает офлайн-работу при необходимости, само строит отчеты.
Есть, конечно, интеграция с 1С, куда без нее. Она хорошая, красивая, но это – интеграция, это две системы. Красивее, чем в описанных выше примерах, но лично мне все равно не нравится. Красивее хотя бы потому, что метаданные в вебе воспроизводить не надо, и базовые методы и свойства классов – тоже. Хотя, иногда это самое «красивее» может сэкономить миллионы рублей клиента.
Подробно рассказывать о разработке на metadata.js в этой статье не буду. Во-первых, сам еще мало знаю, могу ввести в заблуждение. Во-вторых, итак уже длинная статья получилась. В-третьих, раскрывать особенности разработки на metadata.js хочу постепенно, в нескольких статьях (если будет спрос, разумеется).
Уверен, что многие из вас, как и я, захотят разрабатывать бизнес-приложения высокой доступности на metadata.js.
Уверен, что кому-то из вас придется научиться разрабатывать бизнес-приложения высокой доступности на metadata.js.
Потому что скоро появятся клиенты, которые будут знать, что их задача теперь может быть решена быстро и красиво, и им не придется отваливать конские деньги за скучный функционал.
Узнают они об этом от нас, Окнософта, а придут к вам. С нами у клиентов работать не получится, потому что пока только мы делаем решения на metadata.js, а спрос такой, что очередь можно выстроить на годы вперед.
А у нас ведь еще и долг перед обществом – мы не только решения на metadata.js делаем, мы и саму metadata.js развиваем. Должны развивать. Сейчас вот интерфейс на react js перерисовываем. Кстати, если есть желание и возможности, вы тоже можете поучаствовать в разработке платформы metadata.js. Представьте, от 1С такое услышать - давайте вместе платформу делать J.
Клиенты придут не только к вам, конечно, еще и к соседям, и к кондовым вебщикам , и попросят решить задачу. Увидев конский бюджет вебщиков, или стоимость лицензий для 1С на каждого потенциального клиента, они спросят – «а вы разве на metadata.js не можете сделать?». Надо будет что-от ответить.
Первое время, конечно, можно посылать людей куда подальше. Если все вокруг сговорятся, то так можно поступать до бесконечности. Но кто-нибудь да нарушит сговор, и денежный поток резко изменит направление – с желто-красного океана на голубой.
P.S. Чуть не забыл упомянуть о своих робких успехах.
Личные кабинеты поставщиков для УПП сделал за день примерно. БОльшая часть дня ушла на то, чтобы развернуть приложение, установить все нужные компоненты, и накатить библиотеку интеграции на УПП. Говоря проще, на тупёж ушло время – я ж первый раз.
Несколько поделок для интеграции 1С и веб-части приложения тоже сделал. Гордиться там нечем, но при внедрениях систем, стоЯщих «нараскаряку» (1С+веб), иногда сильно выручают.
Самое большое мое дело на metadata.js началось совсем недавно, это система управления потоками задач flowcon. Как только будет, что о ней рассказать и показать – обязательно сделаю.
P.P.S Если вы подумали, что это рекламная статья – вы ошиблись. Платформа metadata.js распространяется по лицензии MIT (=бесплатно).
Статья выражает лично мое мнение, лично мой опыт, лично мои наблюдения, не является заказной, никто ее не редактировал.