1b.app
Скопирована ссылка -

Использование лицензии при синхронизации через API

Пытаемся синхронизировать сайт с Onebox OS через API. Оказалось, что синхронизация привязана к сеансам наших лицензий. Иногда вместо нормального ответа с API приходит "errors": "Not enough licenses!".

Получается, что если все сотрудники одновременно сидят в админке, то синхронизация просто вылетает и может "лежать" часами, пока кто-то не разлогинится.

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

Как возможно исправить этот баг?

Ответы:

Сергей Александрович,
это спорный момент и не баг.

OneBox OS построен таким образом, что OneBox OS - это и есть API, через которое работает интерфейс OneBox'a.
Просто вы вызываете это API через REST, а сам OneBox вызывает это же API через direct call.
Поэтому, внутреннее API не понимает разницу: этот юзер получил токен через REST API или за ним настоящий человек лазит по боксу.

Нам пришлось так сделать по нескольким причинам:
1. чтобы хитрый юзер не мог получить token через API, а затем подставить его в браузере (через js-login-прослойку) и юзать больше одновременных токенов, чем ему положено.
2. для облака запросы в API создают куда-большую нагрузку на инфраструктуру, чем обычный юзер, поэтому я принял решение "пусть API зажирает лицензии". Это куда лучше, чем тарифицировать запросы в API (как делают 99% всех облачных серверов).

Я понимаю, что аргумент 2 хорош для облака, но плох для коробки.
Если наложить на этот момент условие, что компанию OneBox интересуют больше облачные пользователи, то технически нам не выгодно делать одни условия для коробок, а вторые для облака. Простыми словами: так как код одинаковый и разделять ветки мы не станем - то на коробке API будет тоже зажирать лицензию.
14.09.2021, 22:28
Как со мной связаться - никак :)
Задавайте вопросы на форуме публично - и я отвечу.
Подробнее - https://1b.app/ru/user/11/

Максим,

Я понял, что для вас более приоритетной является бизнес-модель по продаже облачного сервиса. Это Ваше право. Но коробочные пользователи остаются вашими клиентами, пускай даже менее любимыми.

Суть синхронизации заключается в бесперебойном доступе к данным в реальном времени. При такой архитектуре даже если мы докупим еще одну, две или несколько лицензий - может наступить момент, когда все лицензии будут заняты сотрудниками. И в таком случае все равно будут моменты, когда API будет недоступен. Мы не можем постоянно отслеживать, чтобы эту лицензию не занимали сотрудники. Иначе получится "автоматизация в ручном режиме".

Текущая ситуация требует решения, так как мы не можем завершить интеграцию без непрерывного доступа к API. Смысл автоматизации деятельности тогда просто теряется.

Наше предложение - создать "непользовательскую" лицензию и зарезервировать ее чисто под синхронизацию.
15.09.2021, 12:02

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

Сейчас у вас есть два варианта:
Способ 1. Понимать что API занимает лицензию и учитывать это (и, как варант, докупить еще одну под это дело)
Способ 2. Использовать API от имени действующего сотрудника, поставив ему галочку "разрешить работу с динамическими IP".
15.09.2021, 16:44
Как со мной связаться - никак :)
Задавайте вопросы на форуме публично - и я отвечу.
Подробнее - https://1b.app/ru/user/11/

Максим,

Варианты, которые Вы предложили не подойдут, как решение вопроса. Это полумеры. Костыли. А нужна стабильная работа системы.

Мы связались с вашим проектом два года назад. Пройдя воду, огонь и медные трубы, вложив уйму денег и энергии - мы настроили работу через вашу программу, которая помогает нам строить бизнес. Часть доработок, которые мы внедряли, используются в CRM One Box всеми действительными пользователями.

Стабильный доступ к API это не моя прихоть. Это необходимость, которую диктуют технологии. Нам, как клиенту все равно в какую точку вы движетесь. Нужно решить проблему, а не скидывать ее с больной головы на здоровую. Для ваших сотрудников решение этой проблемы (в формате, который я предложил в предыдущем сообщении) это три строчки кода.

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

Мы в ответе за тех, кого приручили (с). Антуан де Сент-Экзюпери
20.09.2021, 10:45

Сергей Александрович,

API OneBox потребляет 1 лицензионный ключ, потому что API это точно такой же пользователь (login=restapi).
К стабильности доступа к API это не имеет никакого отношения.
Фактически, вся эта тема - это способы заставить меня дать вам (и другим юзерам) +1 лицензию бесплатно, потому что только таким способом можно сделать чтобы API не жрало лицензию.

Бизнес OneBox - это не доработки и поддержка, а заработок на аренде софта и продаже лицензий. И я не стану делать что-либо, что уменьшает этот заработок, даже ценой негативного или позитивного отзыва. Это не "неуважение к пользователям", это бизнес-модель: если выбирать между "сделать плохо себе, а кому-то хорошо" - то я на такое не соглашаюсь.
20.09.2021, 20:12
Как со мной связаться - никак :)
Задавайте вопросы на форуме публично - и я отвечу.
Подробнее - https://1b.app/ru/user/11/

Максим,

Дело не в покупке лицензии: даже если мы докупим одну, две, три лицензии, то все равно придется мониторить пользователей онлайн вручную. У нас х лицензий, но пользователей х+5 (не сотрудников, именно пользователей CRM). Когда API пользователь в офф-лайн - синхронизация не будет работать. Смысл в избавлении от ручной работы и автоматизации процессов.

Вопрос стабильности работы может быть решен если "пользователь API" будет закреплен он-лайн, чтобы его сессия не заканчивалась. Это можно реализовать?
27.09.2021, 16:23

Максим, можно ли сделать пользователя "невыбиваемым"? то есть, чтобы он всегда оставался в сети?
08.10.2021, 16:53

Ответьте на вопрос выше
13.10.2021, 15:47


Кильбурт Сергей Александрович писал/а:
Максим,

Дело не в покупке лицензии: даже если мы докупим одну, две, три лицензии, то все равно придется мониторить пользователей онлайн вручную. У нас х лицензий, но пользователей х+5 (не сотрудников, именно пользователей CRM). Когда API пользователь в офф-лайн - синхронизация не будет работать. Смысл в избавлении от ручной работы и автоматизации процессов.

Вопрос стабильности работы может быть решен если "пользователь API" будет закреплен он-лайн, чтобы его сессия не заканчивалась. Это можно реализовать?

могу предложить настройку в restapi которая позволит рандомно выкинуть пользователя (либо последнего по активности) а пользователь для API станет онлайн и выполнит запрос
15.10.2021, 17:16

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