Окончательный ответ невозможен, но на основании предоставленной вами информации это, по-видимому, не проблема, если ваше приложение не имеет состояния, поэтому оно только перенаправляет запросы в SAP и возвращает ответы. В этом случае он вообще не поддерживает никакого состояния. Если речь идет, например, о асинхронная обработка сообщений, временное хранение базы данных или управление состоянием сеанса становится все более сложным. Если это так и нет необходимости поддерживать состояние, вы можете легко масштабировать свое приложение до десятков серверов приложений без изменения архитектуры приложения.
По моему опыту, это не обязательно относится к интеграции SAP, подумайте о корзине покупок, которую вы хотите заполнить, основываясь на продуктах, доступных в SAP. Возможно, вы захотите сохранить эту корзину в своем приложении и отправить только окончательную корзину в SAP. В противном случае вы в конечном итоге создадите приложение электронной коммерции внутри своего бэкэнда.
Наиболее важным является то, что вы сокращаете загрузку ЦП в своем приложении, чтобы избежать «слишком большого» кластера и уменьшить все виды ввода-вывода, где это возможно, например, небольшие сообщения SOAP для уменьшения количества операций ввода-вывода в сети.
Кроме того, я рекомендую создать правильный слой абстракции поверх JCo, включая JCO.PoolManager для пула соединений. Вам также может понадобиться продуманная концепция авторизации, если вы работаете с пулом соединений, управляемым только одним техническим пользователем.
Просто некоторые (не очень хорошо структурированные) мысли ...