1С:Предприятие — это отличная платформа для разработки бизнес-приложений.
Постараемся рассказать про это подробно и убедительно.
Что такое 1С:Предприятие? Мы говорим, что это система программ. Она состоит из платформы, приложений, экосистемы, различной методической информации и, конечно, специалистов, которые работают с этими технологиями и приложениями.
Но в основе лежит платформа, на которой пишутся бизнес-приложения и сегодня поговорим о том, почему платформа, зачем она нужна, чем она хороша и почему на ней разрабатывать лучше, чем на обычных универсальных языках программирования.
Платформенные решения стали модными.
Раньше приходилось объяснять — зачем вообще нужен платформенный подход?
Ускорение разработки, упрощение разработки и унификация разработки.
Зачем вообще нужны все инструменты разработки и фреймворки? Повышение уровня абстракции. Для того, чтобы ускорить и упростить разработку.
Платформа 1С:Предприятие решает эту задачу в области разработки бизнес-приложений.
Есть такая замечательная книга Станислава Лема, которая называется «Сумма технологии». Платформа 1С:Предприятие — это такая цивилизация в области разработки бизнес-приложений, которая является суммой технологий.
Если мы уже заговорили про литературу, то хочется еще сказать про замечательную книгу Эрика Эванса «Предметно-ориентированное проектирование» (DDD). В этой книге описывается взгляд на разработку бизнес-приложений со стороны моделирования предметной области. Предметно-ориентированное программирование позволяет ускорить разработку, упростить ее и, что важно, приблизить ее к конечному пользователю.
В нашем случае мы ведем разработку от метаданных, и это дает высокую наглядность проектного решения для разработчика.
Мы закрываем единым фреймворком все аспекты разработки.
Платформа предоставляет ответы на все вопросы, которые возникают у прикладного разработчика.
Это сильно отличается от того, как ведут разработку на обычных языках с использованием большого количества отдельных фреймворков.
Важно, что все фреймворки, которые входят в платформу, тесно интегрированы. То есть разработчик практически не видит швов между этими механизмами.
В нашей платформе разработчик работает с единой системой типов: одинаковый тип он использует и в базе данных, и во встроенном языке на сервере, и во встроенном языке на клиенте, и на мобильном устройстве — это существенно упрощает разработку.
Еще один аспект — это быстрая разработка от предметной области. Мы, кроме технологических инструментов, предоставляем разработчику высокоуровневые прикладные инструменты, которые приближены к объектам предметной области. Важно, что они отражают семантику самой предметной области. По сути, они решают типичные задачи автоматизации и из них, как из кубиков, разработчик собирает бизнес-приложения.
В качестве одного примера приведем механизм регистров накопления. По сути, это готовый инструмент для отражения любых операций по движению и остаткам каких-то средств: это могут быть материальные средства, денежные средства и так далее. Разработчику не нужно его создавать с нуля — можно пользоваться готовым инструментом, который соответствует задачам предметной области.
Все, что можно, описывается декларативно. Важно, что это — именно декларативное описание, потому что императивный код всегда более сложный: и в разработке, и в поддержке, и в наглядности.
Декларативное описание всегда позволяет повысить уровень абстракции и снизить сложность разработки. Все, что можно, работает из коробки и работает само.
Почему этого нет в большинстве других систем?
Потому что в нашей системе платформа знает о том, из чего состоит приложение. Прежде всего за счет того, что прикладные объекты включают знания о семантике тех аспектов, на которые они ориентированы.
По сути платформа после декларативного описания уже знает, зачем нужно приложение, из чего оно состоит, и многие механизмы, многие задачи она может решить сама в готовом виде из коробки, без участия прикладного разработчика.
В основе лежит модель. Бизнес-объекты знают семантику и платформа, зная семантику этих объектов, многие задачи решает сама без участия прикладного разработчика. На основании знания этой семантики платформа много чего выполняет самостоятельно.
Примеры того, что платформа может делать сама:
Во-первых, собственно, то, что отражает данные предметной области и процессы — это хранимые данные и работающие процессы.
Во-вторых, все то, чтобы с этим работали пользователи и работали другие программы. Это пользовательский интерфейс и интеграционные механизмы.
И, в-третьих, это много разных полезных функций, которые поставляются уже в готовом виде и работают с использованием знания предметной области. Например, администрирование, диагностика, полнотекстовый поиск, чат-боты, механизмы печати.
Платформа позволяет не просто разрабатывать отдельные приложения, но и создавать целые композиции приложений — это механизмы для автоматической синхронизации данных, это шина данных, 1С:Шина — наш новый инструмент класса ESB, это интеграция работы пользователей, чаты, видео, эта система single sign-on для обеспечения единого входа в разные приложения.
По сути, каждое приложение может выступать в качестве микросервиса для организации композиции приложений. И у нас есть много реальных примеров: это и наши приложения, тиражируемые, которые мы поставляем, которые интегрированы между собой, это и интеграция приложений на местах — разрабатывается композиция приложений, которая нужна именно этому предприятию.
Платформа 1С:Предприятие — это инструмент для разработки решений для бизнеса.
С одной стороны, на всю ширину — это самые разные приложения: и для управления персоналом, и для управления финансами, и для производства, и для документооборота.
Но и на всю глубину: от самых малых предприятий — до самых крупных организаций.
По сути мы поддерживаем уникальную масштабируемость: с одной стороны, половина решений однопользовательские, но на этой же платформе автоматизированы крупнейшие отечественные коммерческие и государственные структуры.
Важно, что это дает возможность прикладным разработчикам начать от простейших задач: внедрение на уровне, например, маленького магазина, и развиться до решения сложных масштабных задач корпоративного рынка. Нам часто говорят: «Не может быть такого, что одно решение, одна технология закрывает такой большой scale потребностей бизнеса».
Мы считаем, что может.
Прежде всего, конечно, — это ускорение разработки и, соответственно, ускорение развития бизнеса этих предприятий.
Также для бизнеса очень важно, чтобы решения были по-настоящему сопровождаемыми.
То есть, можно просто передать заказчику исходные коды какого-то приложения. Но это не обеспечит реальную возможность сопровождения, например, передача проекта другой команде, расширение команды, подключение новых специалистов.
В нашем случае, при построении всех решений по единой методологии, на основе единой технологии и наличии более 300 тысяч специалистов это становится действительно возможным и, по сути, это защищает инвестиции наших клиентов, наших пользователей в разработку и развитие приложений.
В этом, кстати, очень помогает то, что система построена на основе моделей и, соответственно, она прозрачна для разработчика, который владеет этим инструментом, и он может быстро войти в новый проект, влиться в команду и начать развивать приложения.
Конечно, важно заметить, что все наши приложения поставляются в виде исходных кодов, и заказчик, клиент может посмотреть, как они устроены, анализировать и изменять, если ему это нужно.
Также важно, чтобы приложения были действительно кастомизируемыми.
Не просто номинально, потому что есть исходные коды, а чтобы можно было их адаптировать под развивающиеся потребности предприятия.
И тут помогает не только то, что у нас есть обученные специалисты, есть единая методология, но и то, что платформа содержит специальные инструменты для быстрой и удобной кастомизации, то есть изменения приложений, которые включают, в том числе, возможности автоматического объединения тех новых возможностей, которые добавляют вендор, то есть поставщик приложения, и тех кастомизаций, модификаций, которые делаются при внедрении — это очень важно.
И еще важно, что приложения автоматически развиваются вместе с развитием платформы. Например, система взаимодействия: когда мы ее разработали, наши пользователи сразу получили возможность общаться в чатах внутри своих приложений. Другой пример — это механизм истории данных. Когда мы его разработали, наши пользователи практически сразу получили возможность просматривать историю изменений.
Об этом сейчас много говорят. Я бы сказал, что это специалисты по разработке бизнес-приложений. По-моему, это замечательная профессия.
Это люди, которые умеют понимать бизнес, умеют понимать пользователей, умеют понимать бизнес-логику. Они тоже разные: есть начинающие, есть очень опытные, есть те, кто разрабатывает тиражные решения, которые используют сотни тысяч и миллионы пользователей, есть те, кто делает заказные решения для конкретного предприятия.
Но у них общее качество — широкий кругозор, разносторонняя подготовка, понимание задач от предметной области до особенности конкретных технологий и дизайна пользовательского интерфейса.
У них может быть тоже свой какой-то уклон: у кого-то — в технологическую область, у кого-то — в особенности бизнес-логики, у кого-то — в юзабилити.
Но все-таки их отличает комплексный подход к решению задач.
Есть крутые системные разработчики — «системщики». Системщики, которые разрабатывают компиляторы, технологии in-memory обработки данных, технологии искусственного интеллекта.
Есть те, кто хорошо понимает прикладную разработку, понимает, как ведется прикладная разработка.
Есть те, кто любит и умеет создавать инструменты для разработчиков.
Есть те, кто любит создавать низкоуровневые и высокотехнологичные решения.
Но все они любят создавать универсальные решения и фреймворки.
На наш взгляд, это одна из самых интересных задач для системных разработчиков, и в мире не так много тех, кто решает подобного рода задачи.
Хорошо, что у нас есть много направлений системной разработки и разработчики могут выбирать то, что им интересно.
Ну, например, это направление highload. Причем, это и highload для очень крупных предприятий, и highload для облачных решений, в которых работают сотни тысяч небольших предприятий.
Интересно построение распределенных систем, интересна разработка технологии искусственного интеллекта, интересно создание инструментов разработки. И список таких интересных направлений можно продолжать, и продолжать.
Это очень интересный и теперь модный вопрос.
Вообще, мы делали простые в использовании инструменты разработки очень давно. Но вот недавно оказалось, что это направление с очень модным современным словом low-code.
Конечно, мы относимся классу low-code технологий, мы поддерживаем model driven development и другие, более детальные, аспекты этого направления. Но хочется заметить, что у нас весьма масштабный low-code, то есть, на нашем low-code инструменте можно создавать не только небольшие, простые приложения, но и большие приложения вплоть до ERP-систем, систем управления огромными холдингами, федеральными госструктурами.
И важно, что наша low-code система позволяет вести разработку не только маленькими командами: одним человеком, двумя-тремя, но и десятками и даже сотнями разработчиков.
Есть хорошие low-code системы, на которых делаются небольшие приложения для решения текущих потребностей бизнеса, уровня отдела предприятия, например. Но с их помощью не сделать большое, комплексное приложение.
Есть платформы разработки бизнес-приложений, крупных приложений, но их инструменты, в основном, используются для кастомизации поставляемых вендором приложений.
Есть очень немного технологий, которые позволяют, с одной стороны, кастомизировать приложения, поставляемые вендором, с другой стороны, использовать их как независимые инструменты разработки, на которых можно делать бизнес-приложения, в том числе и с нуля.
Но важно, что в отличие от большинства таких технологий, наша платформа позволяет разрабатывать приложения как для облака, так и для on-premise внедрений.
Что у нас крутого внутри?
У нас есть много серьезных технологических решений собственной разработки.
Например, отказоустойчивый масштабируемый распределенный кластер серверов. Дата акселератор — это in-memory база данных нашей разработки. Технологии искусственного интеллекта, компьютерное зрение, распознавание речи и так далее.
Есть и наши уникальные проектные решения. Конечно, мы здесь не говорим о всей платформе, которая тоже является уникальным проектным решением. Например, это наша технология multitenancy — это множественное владение данных, которые используется для облачных приложений.
Это технология системы компоновки данных, которые используются для отчетов, для сложных выборок данных и так далее.
Это механизм расширений, который используется для той самой кастомизации, про которую мы говорили.
Из новых технологий можно назвать 1С:Аналитику — это система класса BI, 1С:Шина, соответственно, это ESB, и технологию 1С:Предприятие.Элемент.
Важно сказать, что при этом весь комплекс — это очень большой продукт, который работает в самых разных условиях: в разных операционных системах, в разных браузерах, с разными СУБД.
Очень важно, что при этом он прост в установке и прост в обслуживании, в администрировании.
С одной стороны нам важно развивать технологию для наших существующих клиентов, чтобы реализовывать их текущие пожелания, потребности и так далее.
С другой стороны, нам важно ориентироваться на новых клиентов, а также на наших сегодняшних клиентов, у которых завтра могут появиться совершенно новые потребности.
Поэтому, с одной стороны, наши сегодняшние технологии становятся с каждым выпуском лучше — это и кластеризация, и работа с большими данными, и кроссплатформенность. С другой стороны, они развиваются, чтобы соответствовать современным трендам.
Развитие обязательно должно быть.
Среди трендов развития платформы есть достаточно очевидные, которые понятны в современном уровне развития IT — это облачность, мобильность, современные технологии искусственного интеллекта, in-memory обработки данных, развитие интерфейса UI/UX.
Но есть не совсем очевидные: например, развитие в сторону поддержки консьюмерских приложений, то есть, приложений не для бизнес-пользователей, работающих на предприятии, а для любых людей.
С другой стороны, появляется потребность в приложениях, которые работают на предприятиях, с которыми работают люди, сотрудники предприятия, которые совершенно не имеют опыта работы с бизнес-приложениями.
Еще один тренд — это работа больших команд разработчиков. Слаженная, нацеленная на создание больших сложных систем.
Другой тренд — это очень крупные внедрения.
Дальше — это повышение роли интеграции. Сейчас интеграция является очень важным аспектом бизнес-приложений, на которую нацелена чуть ли не половина усилий команд разработки.
И кроме того, появляется новый тренд — это коллаборация. Коллаборация людей, работающих с бизнес-приложениями и коллаборация самих приложений, самой системы с людьми. То есть, совместная работа людей и системы.
Примеры такого развития — система 1С:Аналитика, 1С:Шина, технологии
искусственного интеллекта, технология 1С:Предприятие.Элемент.
Технология 1С:Предприятие.Элемент — это направление развития, которое расширяет использование платформы 1С:Предприятия в сторону парадигмы консьюмерски-ориентированных программ.
Например, на этой технологии мы создали приложение 1С:Кабинет сотрудника, которое позволяет любым сотрудникам организаций и предприятий получать различную кадровую информацию, оформлять отпуск, получать информацию о зарплате и т. д.
В технологии 1С:Предприятие.Элемент мы развиваем технологические решения, инструменты, с которыми работает разработчик и пользователь, например, язык программирования, технологию пользовательского интерфейса, облачную технологию, технологию модульной разработки и другие.
Очень важно, что новые технологии, такие как, искусственный интеллект, 1С:Предприятие.Элемент и другие, должны работать не отдельно, а в едином комплексе, например, в ERP-системе, в других наших приложениях, тогда они работают как единая экосистема, и за счет синергии разных технологий для пользователей появляется новое качество.