Разработка многопользовательской SaaS

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

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

У меня есть несколько основных сомнений в части программирования.

  1. Нужно ли мне разрабатывать приложение в функциональности карты/уменьшения Hadoop?

  2. Во-вторых, выбор базы данных. Поскольку данные по своей природе очень структурированы (например, sql), могу ли я использовать сервер sql для управления данными в облаке? В таком случае мне нужно какое-либо промежуточное программное обеспечение в дополнение к настройке IaaS и приложению SaaS?

  3. Я использую технологию J2EE для разработки SaaS. А количество арендаторов будет в пределах 50. Какой подход лучше с точки зрения базы данных. На самом деле безопасность здесь не при чем.

  4. Не могли бы вы рассказать мне, каковы основные требования для разработки мультиарендной SaaS? т.е. все ли приложение, платформа и база данных должны быть настроены для мультитенантности или только часть базы данных?

    Я новичок в этой технологии и предпочел использовать для разработки только технологии с открытым исходным кодом.

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

Спасибо за ваше драгоценное время.

С уважением,

Сангита


person Sangita    schedule 19.11.2010    source источник


Ответы (2)


Нужно ли мне разрабатывать приложение в функциональности карты/уменьшения Hadoop?

map/reduce не имеет отношения к SaaS или мультиарендности


Во-вторых, выбор базы данных. Поскольку данные по своей природе очень структурированы (например, sql), могу ли я использовать сервер sql для управления данными в облаке? В таком случае мне нужно какое-либо промежуточное программное обеспечение в дополнение к настройке IaaS и приложению SaaS?

Это в основном зависит от вашего использования данных. Однако одним из основных аспектов многопользовательской системы является расширение модели данных. Существует несколько установленных опций для поддержки этого в мире СУБД. Подробнее см. здесь.

В целом базы данных NoSQL предпочтительнее, поскольку они поддерживают более неструктурированные структуры данных.


Я использую технологию J2EE для разработки SaaS. А количество арендаторов будет в пределах 50. Какой подход лучше с точки зрения базы данных. На самом деле безопасность здесь не при чем.

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


Не могли бы вы рассказать мне, каковы основные требования для разработки мультиарендной SaaS? т.е. все ли приложение, платформа и база данных должны быть настроены для мультитенантности или только часть базы данных?

Брендинг (специальные темы пользовательского интерфейса и т. д.), рабочий процесс, расширения модели данных и контроль доступа — это 4 основных аспекта, которые необходимо учитывать для любой многопользовательской системы. (Источник). Таким образом, любой дизайн или архитектура, которую вы выберете, должны учитывать эти аспекты.

Предлагаемая литература: мультитенантная архитектура Force.com

person Aravind Yarram    schedule 19.11.2010

Базовое приложение SAAS должно:

  1. Используйте один экземпляр базы кода для многих экземпляров арендатора.
  2. Сопоставление URL-адресов с пользовательскими экземплярами приложения
  3. Сопоставьте арендаторов в базе данных с их экземплярами приложений.

Если вы используете SQL и у вас нет особых технологических требований к MSQL или Oracle, вы можете использовать Postgres или MySQL или то, что вам удобнее. Все они делают одно и то же. Когда вы создаете свои данные, убедитесь, что вы добавили дополнительный столбец «tenant_id» в каждую таблицу, чтобы иметь возможность выбирать содержимое, относящееся к этому экземпляру.

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

Что касается J2EE, я не могу вам помочь.

Одним из наиболее важных аспектов SAAS является безопасность экземпляра клиента. Вы должны всегда отображать правильные данные и должны следить за тем, чтобы любые изменения, внесенные в базу данных для одной учетной записи, не повлияли на другие учетные записи. Помимо всего прочего, база данных и кодовая база должны быть защищены от атак методом внедрения.

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

person Justin Mitchell    schedule 13.09.2013