Это очень широкий вопрос.Вам нужно найти консультанта-архитектора, чтобы глубже понять ваше приложение, потому что вряд ли вы получите здесь содержательные подробные ответы.Однако в качестве приблизительного ориентира приводим несколько кратких ответов:
- К какой среде пользовательского интерфейса следует обратиться (Angular / React или домашняя).Angular кажется очень медленным, и нам нужна лучшая производительность в отношении загрузки страниц.
Это зависит от того, что приложение действительно должно делать.Угловой является одним из ведущих каркасов, и, как правило, совсем не медленно.Возможно, вы делаете что-то не так (вы делаете слишком много гранулярных вызовов? Ваш бэкэнд медленный?).React также является сильным соперником, но, похоже, теряет популярность, хотя это только субъективное мнение и может быть ошибочным.Angular - это более полнофункциональный фреймворк, а React - скорее комбинация инструментов.Вы бы просто сошли с ума, если бы думали, что можете сделать доморощенный и довести его до такой же зрелости, как эти готовые инструменты.
Должен ли пользовательский интерфейс / Javascript вызывать серверные веб-службы напрямую или в развернутом WAR должен быть прокси-контроллер пружины, который направляет вызовы пользовательского интерфейса в API.Это также поможет, если для одного вызова пользовательского интерфейса требуется получение / обновление данных из разных микросервисов.
Многие крупные микросервисные архитектуры часто используют шлюз API.Опять же, это зависит от вашего варианта использования.У вас также может быть проблема с CORS, поэтому неплохо было бы централизовать вызовы через шлюз прокси / API, даже если это простой обратный прокси (вам не нужно его разрабатывать).
Как мы должны охватить аспект безопасности микросервиса.
Опять не знаю, как выглядит ваша установка.JWT - это общий подход.Я предполагаю, что сам процесс аутентификации использует какой-то централизованный LDAP / Exchange или аналогичный процесс.После аутентификации вы можете подписать токен, который вы даете клиенту, который затем передается соответствующим микро-сервисам в заголовках авторизации HTTP.
Какой балансировщик нагрузки следует использовать, если мы хотим иметь несколько экземпляров одного и того же микросервиса.
Зависит от того, что вы хотите.Развертываете ли вы облачное решение, такое как AWS (в этом случае балансировка нагрузки обеспечивается инфраструктурой)?Собираетесь ли вы развертывать на установке Kubernetes, где балансировка нагрузки и масштабирование обрабатываются как часть его структуры развертывания?Требуется ли балансировка нагрузки на стороне клиента (входит в Spring Cloud)?
Поскольку это банковское приложение, наша организация не позволяет использовать Elastic Search / Lucene для поиска.Так что вам нужно предложение для отчетности с использованием только Oracle.
Без знания того, как выглядят данные в Oracle и каковы требования к отчетности, возможны все решения.
Как нам запускать бэкэнд-задания?
Зависит от выбранной вами инфраструктуры.Все возможно, от простых заданий cron до служб облачного планирования или встроенных механизмов Java-планирования, таких как Quartz.
Также будет основной платежный микросервис, который будет создавать платежи.Поскольку объем платежей огромен, следовательно, потребуется несколько экземпляров.Как мы будем управлять сеансом входа в систему.Должны ли мы пойти в распределенное хранилище сеансов в памяти (может быть memcache)
Не совсем.Это победит всю цель микросервисов.Токены JWT будут управляться браузером клиента и истекают автоматически.Вам не нужно управлять сеансом входа пользователя в систему в таких архитектурах.