Создаем свой CD-контейнер с блэкджеком и 1С или Как мы обновляем микросервисы

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Боль

Каждый кто разрабатывает и поддерживает микросервисы в 1С (расширения, доп. отчеты обработки) рано или поздно сталкивается с потребностью механизма автоматической поставки и обновления этих самых микросервисов. В официальном облаке 1сфреш это реализовано в виде магазина расширений, где пользователи могут в любой момент установить дополнение в свое приложение, обновить (обновления даже проходят автоматически) и это достаточно удобно. А для локальных версий такого магазина расширений пока нет (точнее он появляется 1С Плюс и 1СStore от Инфостарта, но попасть туда сложно, не каждого берут, да и не всем надо).

"Дорогу осилит идущий." Сенека. Брежнев. Лоскутов.

Постановка задачи

Итак у нас есть расширение, например Легкий документооборот. Для каждой конфигурации соответственно отдельный файл расширения. А еще для каждой редакции скорее всего будут разные расширения, например для УНФ 1.6 и для УНФ 3.0. И даже на одной редакции УНФ 3.0 могут быть разные расширения для разных версий. Нам нужно чтобы пользователь не задумываясь о версиях мог обновить расширение в своей локальной базе и желательно одной кнопкой, откатиться к прошлой версии если понадобится. И уж совсем жир: пользователь соглашается на автообновление и оно само обновляется по расписанию. И еще хотелось бы ограничить период обновлений для одного пользователя, так как мы продаем подписку на обновления с ограниченным периодом. Ну и, разумеется, так как расширение платное, то мы не должны выкладывать его в открытый доступ.

Доп. обработка-установщик

Чтобы пользователь смог работать с микросервисами прямо в интерфейсе 1С понадобится какой‑то установщик — доп. обработка или расширение, которая сможет:

  1. Узнать текущую версию конфигурации

  2. Пойти в «нужное место» и проверить доступные версии расширения для текущей конфигурации

  3. Подобрать среди доступных версий самую свежую и подходящую

  4. Хранить секретный ключ (Токен) с помощью которого мы сможем скачать версию (с ограниченным периодом действия)

  5. Скачать его из «нужного места»

  6. Установить в информационную базу (ИБ)

Вот так выглядит установщик
Вот так выглядит установщик

"Нужное место" курильщика

Первое что пришло на ум: сделать «нужное место» в облаке. + понадобится там же держать файл (ini) с описанием какая версия расширения для какой конфигурации подходит. Это костыль решение в целом имеет право на жизнь. Но в нем много неудобств и ограничений:

  1. Много времени занимает правильное хранение версий с отражением этого в текстовый файл

  2. Для каждого микросервиса делать отдельную папку со своим паролем?!

  3. Как ограничить доступ по периоду?!

Маяковский
Маяковский

и мы пошли другим путем.

"Нужное место" здорового человека

Итак, нужен какой‑то сервер для хранения версий микросервисов. И чтобы он умел выдавать файлы по запросу (имел REST API). И чтобы его можно было легко и привычно администрировать. И чтобы его легко можно было бы дорабатывать (желательно на привычном языке 1С). И чтобы он сам делал бэкапы. Ну а так как мы 1Сники, то решение пришло само по себе: пусть это будет привычная информационная база (ИБ) 1С в облаке. С облаком вопросов не возникало — мы выбрали ГРМ. С конфигурацией немного пришлось подумать: сначала было желание сделать на «голой» конфигурации с нуля. Но потом все‑же приняли решение использовать одну из передовых конфигураций УНФ — и это правильно.

Примерно вот так это выглядит сейчас

ИБ в сервисе ГРМ
ИБ в сервисе ГРМ
Продукты которые доступны
Продукты которые доступны
Страница Легкого документооборота
Страница Легкого документооборота
Версии Легкого документооборота
Версии Легкого документооборота
В версии продукта хранятся файлы расширений и доп отчетов/обработок
В версии продукта хранятся файлы расширений и доп отчетов/обработок
Статистика скачиваний
Статистика скачиваний

Итоги

  • Система работает уже несколько месяцев достаточно стабильно

  • Можно продавать просто Токены (хоть на Инфостарте хоть на других ресурсах) и отправлять бесплатный установщик

  • Установщик может определить есть ли вообще это решение для конфигурации пользователя

  • Установщик может по расписанию автоматически обновлять расширение

А потом мы подумали что это может быть полезно другим разработчикам решений, и начали пилить доступ в «нужное место» для разработчиков, но это уже в следующей истории.

Александр Манжела

Разработчик, ООО «Манжела»

Источник: https://habr.com/ru/articles/854630/


Интересные статьи

Интересные статьи

Сегодня ночью AMD представила новое семейство процессоров Ryzen 7000. Изучили бенчмарки и теперь думаем, какой из процессоров взять для тестирования в Selectel Lab. Что выбрали бы вы? Голосование — ...
Когда речь заходит об изобретателях, все сразу вспоминают Николу Теслу, Томаса Эдисона, братьев Райт, Циолковского и прочих людей, оставивших заметный след в истории. Однако многие создатели важных и ...
Существует традиция, долго и дорого разрабатывать интернет-магазин. :-) Лакировать все детали, придумывать, внедрять и полировать «фишечки» и делать это все до открытия магазина.
В 1С Битрикс есть специальные сущности под названием “Информационные блоки, сокращенно (инфоблоки)“, я думаю каждый с ними знаком, но не каждый понимает, что это такое и для чего они нужны
Если Вы используете в своих проектах инфоблоки 2.0 и таблицы InnoDB, то есть шанс в один прекрасный момент столкнуться с ошибкой MySQL «SQL Error (1118): Row size too large. The maximum row si...