Стоит ли давать 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 и т.д.), вы можете столкнуться с серьезными проблемами масштабируемости в будущем (усложненный урок).
Если вы действительно это делаете, вам следует подождать, пока Метеор официально поддержит другие РСУБД.