Подтвердить что ты не робот

Node vs python для создания веб-сервисов RESTful

Я создаю backend для REST API для мобильных приложений. Мне трудно решить между Twisted matrix в python и Express Framework в Nodejs.

Я просмотрел несколько ссылок:

Как и каждый другой ребенок на блоке, у меня тоже есть те же требования:

  • Простота обслуживания.
  • Масштабируемый для большого трафика.
  • Следует поддерживать MongoDB/NoSQLs
  • Должно быть безопасным и легко аутентифицироваться.
  • Другие стандартные требования к веб-сервисам.

Я понимаю факты:

  • "Это решение, которое масштабируется, а не технология".
  • Хорошее решение по любой технологии будет успешным.
  • Большинство стеков технологий имеют некоторые большие истории успеха, чтобы похвастаться.

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

Мой конкретный вопрос: я планирую использовать Twisted Matrix в python для создания RESTful API. Поскольку у меня есть предыдущий опыт работы с python и django, и код очень аккуратный. Есть ли какая-нибудь причина убийства, с которой я должен пойти с Node или другим техническим стеком?

Пожалуйста, не обсуждайте расширенные обсуждения.

ps1: дать некоторое представление о мобильном приложении, о его широкомасштабном обмене сообщениями на основе геопозиций. API-интерфейсы REST должны иметь дело с пространственными расчетами.

ps2: Я готов совершить прыжок веры.

4b9b3361

Ответ 1

Учитывая все, что вы заявили в своем вопросе, и вы готовы принять скачок веры. Я думаю, у меня есть ответ:

  • Являясь разработчиком python-django, я не буду предпочитать python в первую очередь из-за проблемы, с которой вы имеете дело.

  • В геоприложении, которое будет частью очень большой системы, у вас будет concurrency и проблемы оптимизации в тот момент, когда вы закончите реализацию первой фазы вашего приложения.

  • Я думаю, что вы должны пойти на node.js без всяких сомнений [Возможно, потребуется время для его реализации, но это будет лучшее решение), вот почему:

    • По своей сути из-за дизайна javascript решает большинство проблем с производительностью, с которыми вы столкнетесь.
    • Вам не понадобится прокси-сервер, например nginx для его обслуживания, он снова сохранит ваши служебные данные.
    • Он отлично работает с mongo db, который снова служит большим кэшем.

    • Вы можете достичь производительности, эквивалентной nginx с 10 line веб-сервером в node.js.

В двух словах, python работает синхронно по дизайну, а tornado и Twisted позволяет ему идти async с помощью сложной потоковой передачи - почему бы не выбрать технологию, которая по своей сути приходит с решением самой проблемы, на которую вы нацеливаетесь?

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

Возникает вопрос: зачем использовать nosqldb, когда у вас отличная реляционная база данных, например postgres? Вы знаете ответ, который вы можете: не делайте что-либо с postgres, которое вы можете сделать с помощью nosqldb, например, манго и наоборот.

Итак, ваша проблемная область является родной для node.js, поэтому нет смысла пытаться изобрести колесо с помощью python.

Соображения:

  • Вы столкнетесь с первоначальным трением с node.js, так как это новая технология для вас.
  • javascript может быть сложнее поддерживать для разработчика python изначально.
  • Прыжок веры является обязательным, поскольку вы нацеливаете долгосрочные цели на это, а не на краткосрочную выгоду, чтобы экономить время на проверенных и проверенных технологиях.

В качестве примера:

  • Facebook использует php для всех своих веб-страниц, но для своего чата он использует встроенный erlang.
  • Рассмотрение erlang было бы более логичным, чем рассмотрение эмуляции python.

Ответ 2

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

1) На каком языке у меня больше всего опыта?

2) На каком языке мне удобнее писать?

3) Если я должен привлечь больше людей в проект, как они ответят на предыдущие два вопроса?

4) На каком языке имеются более/более полные библиотеки для обработки общих задач, которые будут возникать в моем проекте?

5) Какой язык/среда, скорее всего, будет найден/проще настроить в большинстве хостинговых сред, которые я бы рассмотрел для своего проекта на ранних этапах.

Даже не думайте о том, чтобы спросить себя: "Какой технологический стек был бы лучше, если бы мой проект стал следующим Facebook?". ЕСЛИ вам когда-либо удастся достичь этого момента, вы не будете использовать тот же самый технический стек, с которого вы начали. Не пытайтесь оптимизировать преждевременно.

Ответ 3

Вы также должны учитывать тот факт, что если вы идете с Node, вы сможете использовать один и тот же язык как на стороне сервера, так и на клиенте (если необходимо), что может быть огромным плюсом. Когда вы приобретете опыт работы с JavaScript, в этом случае вы выиграете обе стороны вашего проекта.