Как разместить мультисервисное решение с отдельным интерфейсом - PullRequest
0 голосов
/ 20 февраля 2019

Для проекта я создаю веб-приложение, в котором используются различные компоненты, которые я разработал.Прямо сейчас у меня есть:

  1. API для анализа некоторых данных XSD (Java)
  2. API для подключения к некоторой удаленной базе данных в зависимости от предоставленных
    аргументов (NodeJS)
  3. API для анализа данных (Rstudio / Plumber)

Все компоненты RESTful.Прямо сейчас я использую компонент java (Spring) (1) для размещения своей веб-страницы и всего внешнего интерфейса.Я хотел бы, чтобы веб-страница также размещалась отдельно и чтобы у меня был правильный способ взаимодействия между компонентами (сейчас я просто запускаю их все и отправляю запросы на localhost: xxxx в зависимости от того, на каком порту они находятся).

В конечном итоге я хотел бы иметь один исполняемый файл со структурой, аналогичной приведенной ниже.Обратите внимание, что я не хотел бы, чтобы API были доступны извне среды моего решения. enter image description here

  • Есть ли способ сделать это с помощью Docker?
  • Как я могу запустить свой внешний интерфейс отдельно без какого-либо внутреннего интерфейса и сделать его доступным извне?
  • По какому адресу я могу получить доступ к API в моем коде, как только я получу его на работу?

1 Ответ

0 голосов
/ 20 февраля 2019

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

Есть ли способ сделать это с помощью Docker?

вы можете запускать эти apis в контейнерах независимо, но, как правило, вам нужно использовать какой-либо сервис оркестровки контейнера (например,kubernetes) для запуска ваших контейнеров.

По какому адресу я могу получить доступ к API в моем коде, как только я его заработаю?

Вы упаковываете все свои API-интерфейсы, включая веб-интерфейс, в контейнеры и развертываетеКубернетес, который является кластером узлов.только вашему внешнему интерфейсу будет назначен внешний ip, а другие ваши apis доступны только через внешний интерфейс, поскольку они находятся за брандмауэром с частным ip.kubernetes имеет свою собственную внутреннюю сеть, и сервисы (ваши API) в кластере могут быть доступны просто по имени сервиса.

другой способ - развернуть все apis в виртуальной сети, и только веб-интерфейс (с публичным ip) будет иметь доступ к этим сервисам.

Как я могу запустить свой внешний интерфейс отдельно без какого-либо внутреннего интерфейса и сделать его доступным извне?

Вы можете запустить свой внешний интерфейс в kubernetes какКонтейнер, как обсуждалось выше, или вы можете развернуть свой статический интерфейс (только htm css) на некотором статическом хостинге, например, на aws s3 или на лазурных статических веб-сайтах.

...