Внутренние Java-сервисы регионального банка в России — кредитные заявки, справочники, отчёты — переехали с коммерческих серверов приложений на открытые. Перенос выполнил Евгений Росляков: он делает сайты и веб-системы с 2016 года, оформлен как самозанятый, работает по договору и готовит закрывающие документы для юридических лиц. Встречается с заказчиками в Москве, всё остальное делает удалённо.
У банка набралось около десятка Java-приложений. Они росли много лет и жили на двух серверах приложений. Часть работала на Oracle WebLogic Server, часть на IBM WebSphere. Лицензии и техподдержка обоих продуктов для банка недоступны. Пока всё крутится, это терпимо, но обновить сервер, закрыть уязвимость или добавить мощности уже нельзя, и это вопрос времени.
Сложность в том, что приложения привязаны к серверам не только названием. Источники данных заданы в консоли WebLogic. Имена JNDI вшиты в код. Рядом лежат дескрипторы, которые понимает только свой сервер. В приложениях с EJB есть очереди JMS, а у WebSphere они устроены иначе, чем у соседа.
Требования банка были жёсткими. Кредитные заявки терять нельзя. Ночных окон на переезд каждого приложения мало. Если что-то пойдёт не так, всё должно вернуться как было. И ни один шаг нельзя пробовать на живых данных клиентов.
Сначала сделал инвентаризацию. Для каждого приложения выяснил, на чём оно держится: только сервлеты и JSP или ещё EJB и JMS, какие библиотеки подтянуты, что настроено вне кода. По этому списку приложения разошлись на два лагеря.
Лёгкие веб-приложения, в основном справочники и отчёты, поехали на Tomcat. Полноценный сервер приложений им не нужен: хватает контейнера сервлетов, источника данных и нормальной настройки журналов.
Приложения с EJB и JMS, прежде всего кредитные заявки, получили Jboss, а точнее его открытую версию WildFly. В ней есть и EJB, и обмен сообщениями через встроенный брокер, так что структура приложений почти не менялась.
Дальше пошла самая нудная и самая важная часть. Всё, что было заточено под WebLogic и WebSphere, переписал под новые серверы. Это пулы соединений и источники данных, имена JNDI, дескрипторы вроде weblogic.xml и ibm-web-bnd.xml, очереди, порядок загрузки классов. Вызовы закрытых расширений WebLogic заменил стандартными. Конфликты библиотек разбирал руками: в старых сборках они копились годами.
Для проверки подняли тестовый контур с обезличенными данными. Каждое приложение прогонялось по сценариям, которые описали менеджеры банка, и под нагрузкой, близкой к самым тяжёлым дням месяца.
Переключал по одному приложению в нерабочее время. Для каждого заранее написал короткий план отката: старый сервер остаётся нетронутым и поднимается обратно, пока не закончится период наблюдения.
Внутренние сервисы банка работают на открытых серверах и больше не зависят от лицензий на WebLogic и WebSphere. Сотрудники переезд почти не заметили: те же экраны, те же заявки, при переключении ничего не потерялось.
У банковской ИТ-службы появилось то, чего раньше не было. Настройки лежат в файлах, а не в закрытых консолях, а для каждого приложения есть описание, как его собрать и развернуть. Новую версию теперь можно поставить на тестовый стенд своими силами, не вызывая подрядчика.
Есть и неудобная сторона. Административные консоли у Tomcat и Jboss скромнее прежних, и то, что раньше делалось кнопкой, теперь делается конфигурацией. Администраторам придётся привыкать. Платной поддержки производителя нет, зато есть документация и сообщество, а обновления можно ставить, когда удобно банку.
Дальше стоит подтянуть версии самих приложений: часть из них до сих пор собирается под старые выпуски Java. Но это отдельный проект, и торопиться с ним не нужно.
Лицензия на сервер приложений не продлевается, а сервисы на нём должны работать дальше? Пишите мне через сайт freelance.ru и приложите перечень приложений и серверов. Отвечу, что отправить на Tomcat, а что на Jboss.