В мире информационных технологий постоянно происходят изменения, и разработчики и пользователи стремятся к более простым, быстрым и надежным решениям. В этом контексте часто поднимается вопрос об актуальности старых, но проверенных временем механизмов. Рассмотрим идею о том, что механизм Распределенных Информационных Баз (РИБ) в 1С:Предприятии мог морально устареть, и проанализируем предложенную концепцию «Анти-РИБ», а также сравним ее с уже существующими и перспективными решениями для обмена данными.
Механизм Распределенных Информационных Баз (РИБ) был создан в те времена, когда постоянное и стабильное интернет-соединение было скорее исключением, чем правилом. Основное его назначение — обеспечить автономную работу пользователей с данными в условиях отсутствия связи или для распределенной обработки информации. Ключевая особенность РИБ — это использование так называемых номеров сообщений для отслеживания и гарантирования доставки всех изменений, что обеспечивает транзакционную целостность обмена.
Несмотря на кажущееся "моральное устаревание" в некоторых сценариях, РИБ по-прежнему имеет ряд существенных преимуществ, которые делают его незаменимым в определенных условиях:
Таким образом, хотя РИБ может казаться избыточным для сценариев с постоянным высокоскоростным интернет-соединением, его способность обеспечивать надежный обмен и целостность данных в условиях нестабильной связи по-прежнему остается востребованной.
Предложенная автором концепция "Анти-РИБ" подразумевает отказ от номеров сообщений и файлового обмена в пользу пообъектной передачи данных через веб-сервисы (JSON/XML). При этом регистрация изменений удаляется сразу после отправки объекта в базу-получатель. На первый взгляд, это кажется простым и надежным решением, но, как мы выясним, такой подход имеет ряд критических недостатков, особенно для крупных и сложных систем.
Автор утверждает, что его схема "очень проста и надежна", а "транзакционная целостность - это для параноиков". Однако, в реальных распределенных системах, отказ от механизмов квитирования (подтверждения получения) и номеров сообщений неизбежно ведет к проблемам. Давайте разберем подробнее:
Практический совет для любой схемы: "Если при загрузке возникли ошибки, с регистрации данные в базе-источнике не снимать." Это обеспечивает возможность повторной отправки или ручной обработки проблемных данных.
Автор предлагает "регистрировать просто измененные объекты, без номеров сообщений". Однако он, похоже, упускает из виду, что план обмена — это основа службы регистрации изменений в 1С. Без этого невозможно организовать эффективный обмен только изменившимися данными. Независимо от выбранного транспорта (файлы, веб-сервисы, шина) или механизма преобразования данных (КД2, КД3), именно планы обмена позволяют системе отслеживать, какие объекты были изменены после последнего обмена с конкретным узлом.
Простая пообъектная передача данных без сложной логики не всегда применима в реальных бизнес-процессах. Рассмотрим сценарий, когда документ перемещается между узлами:
Есть Документ и в нем есть реквизит, например, Склад - по нему определяется в какой узел он уходит. Внесли документ со складом "Вологда" - он туда ушел. Позже поняли ошибку и поменяли в нем склад на "Кострома" - он ушел в новый узел. Требуется, чтобы этот документ либо пометился на удаление, а лучше был удален из узла "Вологда".
В такой ситуации простая передача объекта с новым складом в узел "Кострома" не решит проблему: в узле "Вологда" документ останется, создавая рассогласование. Для корректной работы требуются дополнительные механизмы:
Более того, в сложном учете часто передавать нужно не просто один документ, а состояние базы, то есть несколько связанных справочников и документов вместе. Передача отдельного документа может не иметь смысла, если связанные с ним объекты не были переданы или были переданы некорректно. Зависимость от бизнес-логики означает, что простой "универсальный" обмен без глубокой проработки нюансов будет нестандартным и подверженным ошибкам.
Номера сообщений играют важную роль при восстановлении из резервных копий. Если одна база была восстановлена из бэкапа, а вторая нет, наличие номеров сообщений позволяет определить, с какого момента необходимо возобновить обмен, чтобы обеспечить согласованность данных. Без этой информации синхронизация баз становится значительно более сложной и трудоемкой задачей, требующей ручного вмешательства и анализа расхождений.
К счастью, помимо РИБ и предложенного "Анти-РИБ", существуют более зрелые и гибкие подходы к интеграции, которые фирма "1С" активно развивает или которые широко применяются в индустрии:
Предложенная автором идея пообъектного обмена с записью данных в формате JSON/XML сразу в базу-получатель очень напоминает принципы работы сервисных шин предприятия (Enterprise Service Bus, ESB). ESB — это программная архитектура, которая обеспечивает централизованное, гибкое и надежное взаимодействие между различными приложениями.
ESB фактически реализует все принципы, которые автор пытался сформулировать, но с гораздо большей надежностью и функциональностью, включая квитирование и обработку ошибок на уровне шины.
Фирма "1С" также активно развивает собственные механизмы интеграции, и одной из перспективных разработок является Интеграционная шина 1С. Она призвана упростить взаимодействие между различными информационными системами, включая конфигурации 1С, с использованием современных подходов, таких как публикация данных по подписке и передача изменений в виде событий.
В самой платформе 1С существуют мощные и широко используемые механизмы для организации обмена данными, которые, в сочетании друг с другом, покрывают подавляющее большинство потребностей:
Опытные разработчики часто создают собственные механизмы обмена, используя веб-сервисы, HTTP-сервисы или другие прямые соединения. Эти решения могут быть высокопроизводительными и точно соответствовать специфике бизнеса. Однако, их разработка требует тщательного подхода к:
Такие решения могут быть эффективны, но требуют значительных усилий по обеспечению той самой "надежности", которая в РИБ реализована из коробки.
Концепция "Анти-РИБ" предлагает упрощенный подход к обмену данными, который может показаться привлекательным своей "простотой". Однако, как мы видим, эта простота достигается за счет отбрасывания критически важных механизмов обеспечения надежности, транзакционной целостности и управляемости, которые необходимы в большинстве реальных бизнес-систем.
РИБ, хоть и является более "возрастным" механизмом, остается актуальным для сценариев автономной работы и синхронизации конфигураций, обеспечивая гарантированную доставку данных. Для онлайн-сценариев и сложных интеграций существуют более современные и мощные инструменты: корпоративные сервисные шины (ESB), будущая интеграционная шина 1С, а также гибкие и проверенные временем связки ПланыОбмена с КонвертациейДанных 2.0 или более унифицированной КонвертациейДанных 3.0.
Разрабатывая собственные механизмы обмена, мы должны учитывать все уроки, полученные при создании РИБ и ESB, чтобы избежать потери данных, рассогласования и других проблем, которые могут привести к серьезным последствиям для бизнеса. Надежность — это не "для параноиков", это фундаментальное требование к любой информационной системе, обрабатывающей критически важные данные.