Стоит ли давать Derby.js или Meteor для приложения для проверки подлинности?

Я начал читать о Derby.js и Meteor, чтобы сделать некоторые исследования по проекту я Я работаю. Он использует много функциональных возможностей в реальном времени, поэтому они оба кажутся удобными. Но у меня есть некоторые серьезные проблемы, и мне интересно, имеет ли смысл использовать их в это время.

  • Готовы ли они еще готовить? Или существуют серьезные проблемы с безопасностью?
  • Они теперь поддерживают сеансы и аутентификацию?
  • Я прав, полагая, что, полагаясь на фреймворки, которые выполняют большую часть работы, вам может быть проще для простых вещей, но гораздо сложнее, если это немного усложняется?
  • Я согласен с предположением, что я мог бы достичь точно таких же эффектов (с точки зрения пользователей), когда я просто использую Express + Socket.io(или express.io) и что мне просто нужно больше времени инвестировать/работа?

На данный момент меня больше привлекает Express + Socket.io и думаю, что Derby и Meteor немного раздуты. Как вы думаете?

Чтобы лучше понять, что я планирую:

  • Требуется аутентификация пользователя.
  • Необходима сложная маршрутизация
  • SEO - проблема.
  • Полнотекстовый поиск с использованием Elasticsearch
  • DB возможно MongoDB
  • Сложные отношения между объектами
  • Обновления в реальном времени (Socket.io)
  • Безопасность - проблема.
  • Производительность и масштабируемость - это проблемы.

Спасибо!

Ответ 1

Я могу ответить на ваши вопросы для метеор:

  • Да. Многие из нас управляют метеор в производстве для компаний, генерирующих доходы.

  • Да. С октября 2012 года у Meteor была система accounts.

  • Чем больше система делает для вас, тем труднее манипулировать основной механикой. Я нахожу, что метеорит дает разумный баланс.

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

Другие требования

  • Идентификация пользователя: Да, см. выше.

  • Сложная маршрутизация: да, см. iron-router и flow-router.

  • SEO: Да (?), см. spiderable и ssr и этот пост.

  • Elasticsearch: Да, (независимо от выбора вашей структуры). У Meteor нет бэкэнда ES, но вы, безусловно, можете поговорить с хранилищем данных ES через модуль node.js или напрямую через HTTP.

  • MongoDB: Да, эта стандартная (и только официальная) база данных метеор.

  • Сложные отношения: Да (независимо от выбора вашей структуры).

  • Обновления в реальном времени: Да, так работает метеорит.

  • Безопасность - это проблема: Да, Эмили Старк вас охватила! Также см. этот пост на открыть блог metetor.

  • Производительность и масштабируемость: используйте oplog-tailing и отслеживайте свое приложение с помощью kadira.

Ответ 2

Есть ответы Метеор, и для Derby должно быть:

  • Да, с версии 0.6 Derby достаточно стабильна, и есть некоторые сайты, использующие ее в производстве, например: Lever.

    /li >
  • Да, есть несколько модулей auth, например: derby-login, который использует passport

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

  • Да и нет. Например, если вы серьезно относитесь к реальному времени, лучше иметь некоторый механизм разрешения конфликтов (OT или CRDT или smth else), и это не тривиально реализовать. Кстати, у Метеор нет, он использует LWW-стратегию.

Другие требования

  • Идентификация пользователя: Да, есть несколько модулей.

  • Сложная маршрутизация: Да, изоморфный Express-подобный маршрутизатор.

  • SEO: Да, встроенный изоморфный (клиентский и серверный) механизм шаблонов. Html для первого запроса отображает на сервере, для последующих URL-изменений он отображает на клиенте.

  • Elasticsearch: Да, конечно. Это не проблема каркаса.

  • MongoDB: Да, для этого есть адаптер, и на данный момент это лучший выбор.

  • Сложные отношения: Да, не проблема с картой.

  • Обновления в реальном времени: Да, с OT.

  • Безопасность - это проблема: Да. С точки зрения сервера Derby просто Express. Чтобы обеспечить безопасность всех этих взаимодействий в реальном времени, используйте некоторый модуль контроля доступа, например: share-access

  • Производительность и масштабируемость: Да, у меня нет тестов, но теоретически Derby должен быть более активным при масштабировании, чем Meteor. Существует подтверждение .

Как насчет Метеор, я использовал его перед Дерби. Он имеет хорошую документацию, учебные пособия, поддержку и маркетинг. Это полезно для загрузки небольшого приложения за пять минут. Хорошо понимать такие понятия, как: db на клиенте, изоморфный код, в реальном времени и т.д. Но он довольно монолитный и не гибкий. Этот способ реализации реального времени очень прост, но он не имеет разрешения на конфликт и имеет проблемы с производительностью. Он не может использоваться для автономного использования любым разумным способом. Большинство Derby-разработчиков пришли из Meteor.

Попробуйте оба варианта и сделайте выбор. Удачи!

Ответ 3

Я согласился почти со всеми ответами от @David Weldon, всего несколько вещей, которые вам нужно рассмотреть: сложные отношения и масштабируемость.

Когда вы говорите сложные отношения между объектами, мне интересно, является ли MongoDB правильным выбором для вас. Поскольку все данные хранятся в документах, тем меньше отношений между Collections тем лучше.

О масштабируемости, как было сказано выше, если у вас есть несколько довольно "реляционных" коллекций (MANY-TO-MANY и т.д.), вы можете столкнуться с серьезными проблемами масштабируемости в будущем (усложненный урок).

Если вы действительно это делаете, вам следует подождать, пока Метеор официально поддержит другие РСУБД.