Создаем свой 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С в облаке. С облаком вопросов не возникало — мы выбрали ГРМ. С конфигурацией немного пришлось подумать: сначала было желание сделать на «голой» конфигурации с нуля. Но потом все‑же приняли решение использовать одну из передовых конфигураций УНФ — и это правильно.

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

ИБ в сервисе ГРМ

ИБ в сервисе ГРМ

Продукты которые доступны

Продукты которые доступны

Страница Легкого документооборота

Страница Легкого документооборота

Версии Легкого документооборота

Версии Легкого документооборота

В версии продукта хранятся файлы расширений и доп отчетов/обработок

В версии продукта хранятся файлы расширений и доп отчетов/обработок

Статистика скачиваний

Статистика скачиваний

Итоги

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

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

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

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

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

5f638daf9b46f28edd52e3fd5e62af90.jpgАлександр Манжела

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

© Habrahabr.ru