Шаблон агента SaaS - PullRequest
       5

Шаблон агента SaaS

2 голосов
/ 12 февраля 2012

Этим утром я занимался настройкой нового инструмента для проекта для домашних животных и понял, что для каждого инструмента SaaS существует определенный шаблон: агент отправителя.

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

но есть ли лучший способ, который я пропускаю

Редактировать: позвольте мне лучше определить мои термины на примере.ServerDensity - это инструмент мониторинга, который мы используем.для каждого специализированного устройства, которое я хочу контролировать, я пишу агент отправителя (т. е. скрипт плагина, который публикует обновления SD через HTTP), потому что SD не может напрямую общаться с моей базой данных.сводится к проблеме RPC.

1 Ответ

2 голосов
/ 13 февраля 2012

Позвольте мне сначала обратиться к предположению, которое вы сделали: " ... что существует определенный шаблон, которому следует каждый инструмент SaaS: агент отправителя ". Я хотел бы, чтобы вы направили меня к источнику этого заявления. По своему опыту работы с SaaS я никогда не слышал о такой схеме.

Честно говоря, «агент отправителя» звучит так же широко и туманно, как «бизнес-компонент» или «ядро сервера».

У меня есть мое веб-приложение, но оно не может общаться со слоем базы данных (ни оно не должен, конечно)

Вы не сравниваете яблоки с яблоками здесь. Webapp - это уровень , база данных - это уровень. Уровень Webapp должен общаться с уровнем базы данных. Веб-приложение может иметь разные слои , и постоянный слой в веб-приложении будет взаимодействовать с уровнем базы данных.

... так что в моей закрытой сети есть агент, который публикует в веб-приложение.

Звучит так, будто веб-приложение - безжизненная статуя, а агент - скульптор, который бегает вокруг него и бросает в него куски глины. Webapp получает запрос от клиента, запрашивает уровень постоянства (это может быть кеш) и отправляет ответ. Какие бы агенты у вас ни были, они будут публиковать данные в постоянном хранилище или в очереди, а не в самом веб-приложении.

Читайте о слоях по сравнению с уровнями, это поможет вам лучше понять веб-приложения и модели SaaS: В чем разница между "Слоями" и "Уровнями"?

обновление

Спасибо за разъяснения, это существенно меняет вопрос. То, что вы делаете, звучит очень разумно. Вы работаете в рамках ограничений конкретной системы, и вам необходимо выполнить контракт плагина. Если в контракте указано, что это должен быть HTTP POST, то это то, что вам нужно сделать.

Есть множество способов, как это сделать. Вот только некоторые из них:

  • агент (ы) отправляет событие на сервер при наступлении события
  • в случае, если агенты могут создать слишком большую нагрузку на сервер, агент (ы) помещает событие в очередь. Затем очередь будет очищена выделенными и регулируемыми процессами, которые будут считывать вашу базу данных и отправлять события на сервер
  • запланированный процесс (демон) считывает вашу базу данных через определенные промежутки времени и отправляет обновления на сервер
...