Как стать автором
Обновить

Как построить надежную архитектуру B2B-системы на основе 1С

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров1.6K

Здравствуйте! Меня зовут Дмитрий Гусаков, я менеджер проектов компании DD Planet. В своей статье я расскажу, почему нельзя использовать 1С как полноценный бэкенд в современных B2B-системах, с какими ограничениями могут сталкиваться разработчики, и как выстроить надёжную структуру, используя дополнительный слой бэкенда и брокеры сообщений.

В России существует острый дефицит отечественных продуктов для автоматизации бизнеса. 1С — один из немногих российских игроков на этом рынке. В условиях активного импортозамещения он стал основным кандидатом на замену западных систем, вроде Oracle CRM, ERP SAP и все больше российских компаний переходят на эту платформу. Однако сам по себе этот переход не решает всех проблем.

Обозначим проблему

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

Почему 1С нельзя использовать как полноценный бэкенд для разработки B2B-систем?

Ограничения по безопасности

  1. Отсутствие стандартных механизмов защиты от распространенных угроз. например, нет встроенной защиты от SQL-инъекций, XSS-атак, что требует от разработчиков самостоятельной настройки безопасности;

  2. Аутентификация. 1С частично поддерживает интеграцию с OAuth2 и OpenID Connect. 

  3. Необходимость в кастомных решениях. Для авторизации через JWT-токены остаётся необходимость разрабатывать этот функционал вручную или использовать сторонние сервисы. Реализация может зависеть только от квалификации самого программиста

Низкая отказоустойчивость и проблемы с нагрузкой

1С не оптимизирована для работы в условиях высокой нагрузки. При большом количестве пользователей система может:

  • Блокировать сессии и снижать скорость работы;

  • Не масштабироваться автоматически, в отличие от современных бэкенд-решений;

  • Не справляться с нагрузкой при резком росте запросов, особенно при массовом доступе к данным.

Сложности с интеграцией в микросервисную архитектуру

1С плохо интегрируется с другими сервисами, особенно в микросервисной архитектуре. Например, она не поддерживает гибкую маршрутизацию запросов.

Проблемы лицензирования при работе через браузер

Основным вопросом при работе с веб-решениями 1С является лицензирование. При использовании веб-клиента 1С:Предприятие через браузер требуется отдельная лицензия для каждого сеанса, что создает потенциальные проблемы:

  • При нехватке лицензий или сбое в системе лицензирования пользователи могут столкнуться с ограничениями в работе;

  • Лицензии веб-клиента предоставляются сервером, локальные лицензии с компьютера пользователя использовать нельзя;

  • Стоимость лицензий зависит от количества рабочих мест и начинается от 7 700 рублей за место. 

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

Как в 1С пытаются решить эти проблемы? 

У 1С есть облачная среда разработки — 1С:Элемент. Главное отличие от коробки состоит в том, что вся разработка ведется в браузере и локально установить среду невозможно. Сложность разработки кастомного UI так же остаётся в данном продукте

Основные особенности:

  • Язык программирования напоминает традиционный 1С, но использует русскоязычные конструкции, что может затруднить переход даже для опытных разработчиков;

  • Ограниченные возможности кастомизации UI;

  • На данный момент нет поддержки проведения документов и регистров накоплений;

  • Отчеты реализованы на основе 1С:Аналитика;

  • Присутствует помощник ввода текста (аналог автодополнения в современных IDE).

На текущей стадии разработки нет информации о том, устранены ли проблемы с безопасностью, которые присутствуют в веб-решении 1С:Предприятие.

Решение: архитектура B2B платформы на основе 1С

В архитектуре дополнительный слой бэкенд выполняет роль посредника между клиентскими приложениями, мастер-системой и внешними сервисами:

  1. Мастер-система: хранение основной бизнес-логики и данных осуществляется в 1С;

  2. Интеграционная шина (Kafka/RabbitMQ): реализует обмен сообщениями между B2B-порталом и 1С, обеспечивает безопасное соединение и снижает нагрузку на мастер-систему;

  3. Дополнительный слой бэкенд: вводится для распределения нагрузки. Выполняет функции API-шлюза, управляя запросами между клиентами, 1С и внешними сервисами;

  4. Кеширование и база данных: Redis позволяет сократить количество обращений к 1С;

  5. Взаимодействие с внешними сервисами осуществляется через REST API по протоколу HTTPS;

  6. Адаптеры данных: модули преобразуют данные из 1С в формат JSON вместо XML.

Архитектурная схема B2B кабинета на основе 1С
Архитектурная схема B2B кабинета на основе 1С

Как мы разрабатываем B2B кабинеты на основе 1С

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

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

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

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

Пример реализации B2B кабинета  

Так как являемся интегратором кастомных решений на .NET, то, естественно, выбор пал именно на эту платформу. В качестве базы данных выбираем PostgreSQL - признанный стандарт разработки в сочетании с .NET.

Основные модули проекта:

  1. Модуль авторизации
    Для аутентификации и управления пользователями используем Keycloak, что позволяет реализовать единую систему идентификации и аутентификации с поддержкой OpenID Connect и OAuth 2.0. В зависимости от специфики проекта возможна кастомизация механизма учетных записей.

  2. Модуль управления контентом
    Основная бизнес-логика системы реализуется в отдельном сервисе, построенном по трехслойной архитектуре. Для работы с данными могут использоваться ORM (например, Entity Framework Core) или более легковесные решения - Dapper, в сочетании с хранимыми процедурами для оптимизации запросов.

  3. Модуль управления файлами
    Взаимодействие с файлами организуется через REST API. В качестве хранилища могут использоваться облачные решения (например, MinIO, Amazon S3) или локальные файловые серверы, в зависимости от требований к безопасности и соответствия требования регуляторов.

  4. Модули интеграции с 1С
    Для синхронизации данных между нашей системой и 1С разрабатываются сервисы импорта, которые обрабатывают очереди сообщений RabbitMQ/Kafka.

  5. Планировщик задач
    Для автоматизированного выполнения фоновых задач: отправки уведомлений, обновления статусов заказов и экспорта данных, применяем Hangfire или аналогичные инструменты. 

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

Теги:
Хабы:
+4
Комментарии3

Публикации

Работа

Консультант 1С
64 вакансии
Программист 1С
43 вакансии
.NET разработчик
38 вакансий
Аналитик 1С
3 вакансии

Ближайшие события