Псевдосреднее приложение — Angular 2 Node Api

#javascript #angularjs #node.js #mongodb #azure

#javascript #angularjs #node.js #mongodb #azure

Вопрос:

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

Цель:

  • Создайте веб-приложение Angular 2 (SPA), вызывающее api
  • NodeJS API (RESTful)
  • MongoDB
  • Хост в Azure

Вот первый вопрос:

  1. Чтобы разместить на Azure и, надеюсь, использовать непрерывное развертывание с github, нужно ли мне создавать два веб-приложения Azure? Один для приложения Angular 2 и один для API NodeJS?
  2. Или я могу интегрировать RESTful NodeJS API в приложение с приложением Angular 2? Вероятно, для этого потребуется только одно веб-приложение в Azure. Если это возможно, я не понимаю, как выполнить как API, так и приложение Angular 2 в Azure. Кажется, команда «npm start» обычно запускает приложение Angular 2, но можно ли также запустить API NodeJS?

Любая ясность для этого приветствуется.

Ответ №1:

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

Но, чтобы ответить на ваш вопрос, да, возможно иметь одно монолитное приложение с интерфейсом Angular 2 и полноценным бэкэндом NodeJS с экземпляром MongoDB

Варианты следующие:

  • Иметь монолит с вышеупомянутой конфигурацией. Плюсом является то, что его будет проще реализовать и развернуть. Если ваше приложение очень простое и с низким трафиком, вы можете использовать этот подход.
  • Иметь многоуровневую архитектуру с интерфейсным приложением Angular 2, уровнем API с NodeJS и, возможно, Express. Облачный экземпляр MongoDB или кластер на любом провайдере, например MongoLabs для вашего уровня данных. Это позволяет выборочно масштабировать ваши слои в соответствии с трафиком. Если вы работаете в более крупной команде, каждая команда может работать на своем собственном уровне.

Комментарии:

1. Допустим, в Azure какое развертывание было бы самым простым и менее дорогостоящим? Я думаю, это ваш первый пункт, поскольку оба уровня интегрированы в одно монолитное приложение. Для второго пункта в Azure, будут ли необходимы два экземпляра веб-приложения для этого сценария (увеличение стоимости)? Один для приложения Angular 2 и один для API NodeJS? MongoLabs или MongoDB Atlas — мой текущий выбор.

2. Наименее дорогостоящим будет монолит, так как вам нужно иметь только одно приложение и один запущенный экземпляр Mongo (если вы не хотите масштабироваться). Вы можете масштабироваться, если хотите, но вам нужно будет масштабировать все ваше приложение, а не уровень пользовательского интерфейса или уровень API выборочно, как это возможно в подходе № 2

3. И да, как вы уже догадались, если это многоуровневая архитектура, накладные расходы заключаются в том, что вам потребуется хотя бы один экземпляр вашего веб-приложения и один экземпляр вашего уровня API. И да, это увеличит стоимость

4. Это то, что я предполагал, но не был уверен. Спасибо за ответ.