@n1ksON
мидл

Как интегрировать микросервис?

Есть приложение A. Есть внешний микросервис B, который необходимо интегрировать в A.
Приложение A запускается в разных окружениях (на разных стендах) и для получения микросервиса, в зависимости от окружения, нужно обращаться по разным адресам для корректной аутентификации.
Возникают непреодолимые трудности в виде неудачных авторизаций.

Поэтому прошу помощи с вопросами:

1. Как правильно настроить webpack?
Изначально было решено использовать относительные пути, а запросы проксировать на нужные адреса в зависимости от стенда, чтобы не возникало проблем с аутентификацией (ну и в вебпаке указан тогда один remote).
new ModuleFederationPlugin({
  name: 'common',
  remotes: {
    filename: 'remoteEntry.js',
    appB: 'appB@appB/dist/remoteEntry.js'
  },
  shared: {}
})

Возможно стоило для разных стендов задавать свой url используя process.env?
Но в любом случае после получения микросервиса, он будет отправлять запрос за данными и проксирование по идее все равно понадобится.

2. Возможно стоило использовать iframe для этих целей, это бы избавило от проблем с авторизацией?
На данный момент все застряло на том, что при первом запросе к remoteEntry.js возвращается ошибка авторизации, так как аутентификационная кука после авторизации устанавливается только относительно нашего поддомена, а не общая.
Когда пробовали вариант с редиректом, то застряли на CORS ошибках.

3. Микросервису B необходимо разработать sdk, а данные получать по отдельным API-запросам? (То есть не использовать module federation).
Или возможно микросервису B нужно сделать какие-то дополнительные настройки, которые не делают по дефолту для микросервисов.

Все упирается в сложность с авторизацией, так как у приложения A и приложения B они разные.
Проблем с интеграцией внутренних микросервисов (то есть лежащих в нашем окружении с общей аутентификацией) не возникало.
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ответы на вопрос 1
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
Возможно стоило для разных стендов задавать свой url используя process.env?

Именно так и надо делать. Это вполне стандартная практика. Просто кладете рядом локальный файл со всеми переменными окружения - адреса, порты и прочее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы