Моя компания будет нуждаться в серверной части для запуска своих сервисов, и я отвечаю за выбор инфраструктуры. Продукты будут состоять из нескольких приложений (мобильных, веб, настольных) с общим бэкэндом (что-то вроде огромного API, я думаю).
По сути, нам понадобится что-то вроде виртуальной машины (или нескольких виртуальных машин? Или выделенных серверов?), Где мы можем запускать все, что захотим (Python, Ruby, Node.js, PosgreSQL, MySQL, PosgreSQL, redis и т. Д.).
Какие вопросы следует задать (мне и моим коллегам), чтобы иметь точное представление о наших потребностях? Я не хочу осознавать, что через год мы забыли рассмотреть что-то важное (или, по крайней мере, я бы предпочел понять, что мы забыли 1, а не 10).
Я знаю, что этот вопрос может привести к категоричному ответу, но я думаю, что ответ всегда немного предвзят.
Если вам нужно несколько клиентов (веб, настольные приложения, мобильные приложения и т. Д.), Вам необходимо решить, как они будут взаимодействовать с серверной частью (ами). Вы можете использовать REST, это требует одного набора архитектурных решений; вы можете использовать (скажем) CORBA, это естественным образом приведет к принятию некоторых решений и т. д., т. д., т. д. и т. д.
Как только это будет решено, вы можете решить, хотите ли вы использовать только виртуальные машины на чужом оборудовании, виртуальные машины на собственном выделенном оборудовании или запускать машины «на голом железе» (то есть без промежуточного уровня гипервизора). Или, может быть, просто запускайте приложения (скажем, в Google AppEngine), с которыми вы общаетесь по протоколу HTTP.
Движущими факторами здесь являются:
Однако я не могу сказать вам, каков правильный ответ, лучшее, что я могу сделать, - это сказать «это зависит от обстоятельств».