Почему я решил писать цикл статей по интеграции?
А можем мы конвертацию данных прикрутить к Шине?
Что в КД является узким местом?
Поможет переход на Шину ускорить обмены?
Если планы обмена такие плохие, то что делать?
У нас есть Кролик\Кафка, зачем нам Шина?
Сравнивать ESB и Кролик\Кафка не корректно
Почему я решил писать цикл статей по интеграции?
Во-первых, я обожаю интеграцию и уже написал немало статей, так или иначе связанных с интеграцией, а так как в платформе появились новые механизмы, которые не сильно освещены, пора заполнять пробелы.
Во-вторых, я видел несколько статей по внедрению 1С:Шины. Часть статей пересказывали примеры из официальной документации, скажем честно, сделано это было максимально неуклюже, оставляя все «косяки» примеров. Были попытки описания, для чего нужна 1С:Шина, но судя по комментариям… Ответов статьи так и не дали.
Также была новость на Инфостарте с громким заголовком «Все об 1С:Шине: возможности, преимущества и как внедрить»
Вот первый комментарий к новости:
Читая комментарии, я пришел к выводу, что многие не понимают, для чего нужна Шина. Поэтому я решил сделать по-другому. В данной статье я попробую дать ответы на те вопросы, которые часто звучали в комментариях и на вебинарах.
В-третьих, почему-то за кадром часто остается архитектура, а это очень важно, и на ее реализацию уйдет львиная доля времени при интеграции. В статьях мы с вами затронем Конвертацию данных, Планы обмена, Регистры сведений, http-сервисы, Сервисы интеграции и Историю данных. А может быть, затронем что-то еще.
Поговорим про этапы, которые нужно продумать прежде, чем писать хотя бы одну строчку кода. Я попытаюсь все объяснить на простых и понятных примерах.
Данная статья вводная, но чем дальше мы пойдем, тем больше будет мяса.
Впрочем, забегать вперед не буду...
- КД – конвертация данных.
- TOC – Theory of Constraints - теория ограничений.
- Шина – 1С:Шина.
- Кролик – RabbitMQ.
- Кафка – Apache Kafka.
Примерно год назад меня позвали на проект по внедрению 1С Шины. Почему позвали меня?
Когда-то я писал самописный обмен на HTTP сервисах для той организации. Помимо меня были обмены, написанные другими людьми. Были обмены на КД2, КД3, http-сервисах, но именно мои обмены работали, не ломаясь. В организации в какой-то момент поняли, что зоопарк надо заканчивать и приводить все к единому работоспособному виду, было решено переходить на Шину. На тот момент я не видел всей картинки по Шине и собирал ее по кусочкам, подобно пазлу. Сложность состояла в том, что полезной информации мало. Я не нашел ни одного примера, который хотя бы на 50% подходил нам. Когда я начинал, даже не думал, что откажусь от планов обмена, но не буду забегать вперед.
«Чтобы дойти до ответов - нужно задать вопросы»
Самый главный вопрос, на который предстоит ответить: - Нужна ли Вам Шина?
«На данный вопрос должны ответить вы сами, я лишь отвечу на вопросы, которые постоянно звучат. Но, скорее всего, сами вопросы и ответы должны подсказать вам ответ.»
Важно понимать следующее. Шина — это не про то, что установил и сказал: - «База 1 и База 2, меняйтесь!»
«Вы не Емеля с волшебной щукой и, если вы не справитесь, вам завернут леща»
Хорошо это или плохо?
Давайте разбираться.
Начну разбор со странного вопроса, который чаще других слышал на различных мероприятиях по 1С Шине.
«А можем мы конвертацию данных прикрутить к Шине?»
Лично для меня данный вопрос звучит так: -«Можно кирпичи возить на Ламборджини?»
Ответ:
Можно, и при покупке Шины в официальной документации вы найдете пример про ERP c Розницей, где это проделано. Самое смешное - этот пример сделали благодаря этому вопросу, так как он звучал чаще других. Но зачем тут Шина?
Если сказать простыми словами: - «Архитектура КД в принципе «Антипаттерн» для Шины»
КД решает интеграционные задачи «в комплексе». В КД уже все продумано, и Шине там отводится только транспортная роль. Сама КД как старый паровоз, и пока обмены небольшие, схема сносная. Но если у вас начались блокировки и большие временные лаги… Можно вас поздравить: - «Вы стали средним или большим бизнесом, и Вам не поможет смена только транспорта.»
Почему?
Давайте посмотрим на обмен, организованный через КД, глазами одного умного человека, которому я благодарен, так как именно из-за него втянулся в чтение бизнес-литературы.
Вот этот человек.
Я думаю, вы узнали автора таких книг, как «Цель 1», «Цель 2», «Цель 3», «Критическая цепь» и других. Он известен тем, что создал TOC.
И я уверен, что многие знакомы с 5 шагами ТОС:
Если кратко, нужно искать узкое место (бутылочное горлышко) и расширить его для того, чтобы пропускная способность увеличилась. После чего опять искать новое узкое место, и так можно продолжать до бесконечности.
Давайте подумаем: -Что в КД является узким местом?
У КД есть три вида транспорта (могу ошибаться, давно с КД не связывался, но думаю, ничего не изменилось):
1. COM – обмен, который можно назвать живым мертвецом. Linux встречается все чаще, поэтому лет через 5 этот вид транспорта останется только у «староверов» и в музеях. И у сектантов «Свидетели COM'овы».
2. Разные вариации с файлами. Этот вариант, кстати, наиболее часто встречается. Иногда так и хочется ущипнуть себя и проверить, может, я сплю и сейчас не 2024 год…
3. Web-сервисы. Самый редкий вариант.
Глядя на варианты транспорта, скажите: - Станет КД работать лучше и быстрее, если сменить транспорт на Шину?
Этот вопрос не про COM, конечно, и не про файлы, хотя и Шина может работать с файлами.
Давайте так. Вы используете web-сервисы. -Поможет переход на Шину ускорить ваши обмены?
Ответ: Может, и ускорится обмен, но прирост будет ничтожно мал. Все дело в самой архитектуре конвертации данных, в которой транспорт играет, наверно, одну из самых маленьких ролей.
Одно из основных узких мест КД - Планы обмена, которые при помощи подписки «ПередЗаписью» накапливают измененные объекты на каждом Узле обмена и далее происходит конвертация всего накопленного в сообщения в формате XML. Сами Узлы содержат на себе функционал фильтров, настроек для соединения с получателем и прочие вещи. Чем больше узлов, тем больше повторяющихся операций. Планы обмены — это не про событийную модель.
«Если планы обмена такие плохие, то что делать?»
Ответ:
При внедрении Шины использовать более современные механизмы регистрации данных. Лично я выбрал механизм Истории данных. Естественно, при внедрении интеграции на основе Истории данных нужно писать свои обмены, но зато можно получить ряд «плюшек». Подробнее про Планы обмена и Историю данных можно почитать в статье: Планы обмена VS История данных
«≈90% интеграций в 1С используют Планы обмена или Регистры сведений, при этом Планы обмена лидируют по использованию.»
Планы обмена — это фундамент КД, и его просто так не убрать.
Вообще описанное выше отвечает еще на один частый вопрос: -«У меня на конвертации несколько баз, меня все устраивает. Зачем мне Шина?» Повторюсь, проблемы с КД возникают у крупняков. Малышам Шина не к чему.
«У нас есть Кролик\Кафка, зачем нам Шина?»
Ответ:
Немножко пофантазируем:
Вариант 1. Представьте, что у вас есть любимый аттракцион. Вы идете в парк, где стоит один ваш любимый аттракцион, и вам больше и не нужно.
Вариант 2. Представьте, что есть парк, в котором куча ИП и самозанятых ставят аттракционы, ларьки с мороженым и прочие вещи. Они могут ругаться друг с другом, так как территория поделена на глаз и кому-то кажется, что его клиентов отбирают, и он недополучил прибыль. Все время какие-то конфликты происходят.
Вариант 3. Вы владелец парка аттракционов по типу Диснейленда и сами решаете, что разместить на своей территории. У Вас есть управляющий, который нанимает персонал, есть аналитики и маркетологи, которые мониторят спрос и продумывают предложения, у вас есть и другой персонал, закрывающий потребности. Вы можете убирать аттракционы и ставить новые.
Если у вас настроена Кафка или Кролик и вас все устраивает, тогда вам подходит Вариант 1. У вас не настало то время, когда одного аттракциона станет мало.
Если у вас зоопарк различных интеграций, тогда вы живете в Варианте 2.
Когда Вариант 2 выходит из-под контроля, пора переходить на Вариант 3.
Вариант 3 — это и есть Шина. Грубо говоря, в рамках шины вы управляете всеми интеграциями подобно дирижеру, управляющему оркестром.
Соответственно Шина нужна для наведения порядка в интеграциях и дальнейшего масштабирования.
Сравнивать ESB и Кролик\Кафка не совсем корректно.
Приведу принскрин из курса 1С + KAFKA
Как вы видите, Kafka закрывает лишь часть того, что закрывает ESB.
Нет смысла сравнивать аттракцион с парком развлечений.
Конкретно Шина от 1С платная, есть три вида лицензии.
На самом деле 4 вида, есть еще для франчайзи, почти халявный тип лицензии. Если смотреть на продукты ESB, можно найти условно бесплатные решения, и даже есть бесплатные. Но смысл в том, что с ними вы остаетесь один на один с вашими проблемами. Или наступает момент, когда вы начинаете платить за техподдержку, и ценник будет немалый.
Есть другие платные продукты, и цены на них более высокие, и при этом почему-то это не отпугивает покупателей. Например, цены на Datareon, сравните со стоимостью безлимитной версией 1С Шины.
По другим отечественным продуктам «Multi-D ESB», «Галактика ESB» и «Factor ESB», к сожалению, цен не нашел.
«У нас Dev и Prod сервера, сколько нам понадобится лицензий?»
Ответ:
В случае, когда у вас один сервер разработки и один сервер продакшн, понадобится 2 лицензии. Лично мы используем для разработки лицензию на 100 пользователей, а для продакшн сервера безлимитку.
1. Шина имеет коннектор к Кролику, а начиная с версии 4 к Кафке.
2. Шина может цепляться и к другим источникам и приемникам. Например, к SQL.
3. Шина в отличие от сторонних решений имеет платформенный коннектор – Сервисы интеграции.
Про сервисы интеграции я плотно напишу в следующей статье.
4. Шина написана на 1С:Элемент, что позволяет прикоснуться к нему ранее релиза.
5. Шину можно доработать и при желании сделать на ее основе самописный брокер с любым поведением, то есть ничто не мешает вам добавить регистр сведений в саму Шину или подключить ее к SQL’ной базе и сохранять сообщения подобно Кафке.
6. Отечественный продукт, входящий в реестр отечественного ПО.
7. Возможность навести порядок в интеграционных процессах. Вы получаете единую точку входа. Следовательно мониторинг и настройка интеграционных процессов тоже происходит в одном месте.
8. Работает на Linux и Windows. Для продакшн я рекомендую Linux. Мы используем Ubuntu.
1. Периодически в шине всплывают какие-то баги. Продукт новый, соответственно он в стадии разработки и доработки.
2. Еще одна инсталляция, которую кто-то должен обслуживать.
3. Для шины нет подсистемы, Вам придётся запланировать немало времени на архитектуру, если у вас в планах внедрение не для «галочки».
4. Документация по Шине отстает от ее возможностей.
5. Дополнительные затраты на лицензии и машинку для размещения Шины.
Вводная статья. «Нужна ли шина Вам»?
В следующей статье я плотно затрону механизмы Сервисы интеграции и Сообщения сервисов интеграции. Покажу, как и для чего они предназначены. Покажу неприятные моменты и баги. Выложу накопленные инструменты. Возможно, предложу неожиданные варианты по использованию этих механизмов.
После будет написана статья, в которой мы обсудим архитектуру и запланируем практическую часть.
Далее на github будет выложена подсистема PAPI, для упрощения выполнения задуманного примера. Планирую выложить в свой день рождения (в этот раз даю честное пионерское).
В конце будет ряд статей, в которых мы сделаем несколько обменов, применив все знания.
На этом статью заканчиваю. Как я и говорил, статья была вводная. Я попытался простыми примерами подтолкнуть вас к ответу на вопрос «Нужна ли Шина Вам?», надеюсь, после прочтения у вас появится ответ.
Всем желаю профессионального роста и интересных задач!
1. Настройка состава "Истории данных" - Бесплатная обработка по программному включению истории данных.
2. Версионирование объектов VS История данных – Сравнение двух конкурирующих механизмов и ковыряние в SQL по части Истории данных. В статье видно, что История данных на данный момент имеет много киллер фич по отношению к Версионированию объектов.
3. Планы обмена 1С - Подробная статья по устройству Планов обмена.
4. Планы обмена VS История данных – Статья про преимущества и недостатки, которые есть у Истории данных в сравнении с Планом обмена и Регистрами сведений.
5. Разворачиваем 1С:Шину на Ubuntu и Windows [Шпаргалка] – Установка и проблемы по установке Шины на Ubuntu.
6. 1С:Шина – Официальная страница, посвященная 1С:Шине, содержит много полезных ссылок. Очень рекомендую внимательно изучить.
7. Об 1С:Шине – Одна из статей с нетиповым примером. Пример маленький, но статья большая.
8. А вот и Шина подъехала! – Статья состоит из 3 частей, есть интересные вещи.