Евгений Сайты › Peppers Сбер ID
Сайты, SEO и GEO, реклама, чат-боты, ИИ и дизайн | Москва
Рейтинг
9 371
№ 111 в каталоге
Отзывы
Профессионализм
9/10
Коммуникация
9 /10
Город
Москва
Опыт работы
11 лет
На сайте с
2016 года
Юридический статус
Самозанятый
Freelance.Boutique
Премиум-сервис для лучших исполнителей

Создание сайта — личный кабинет участника негосударственного пенсионного фонда: J2EE, EJB, JSP, Struts и Hibernate остались, расчёты не тронуты

Используемые навыки EJB Hibernate J2EE JSP Struts

Описание

Создание сайта в виде личного кабинета для участников негосударственного пенсионного фонда: баланс, выписка и заявления теперь открываются на телефоне так же легко, как на компьютере. Старый портал на J2EE Евгений Росляков не переписывал, а обновил вокруг работающих расчётов. Сайты и корпоративные системы он делает с 2016 года, работает самозанятым, подписывает договор, а юрлицам выдаёт закрывающие документы. С заказчиками встречается в Москве, остальную работу ведёт удалённо.

Портал фонда написан в 2008 году. Бизнес-логика лежит в EJB, страницы собраны на JSP под управлением Struts 1, а с базой всё общается через Hibernate. Внутри считаются накопления, взносы и выплаты. Эти формулы годами сверяли с бухгалтерией и актуариями, и лезть в них никто не хотел.

Снаружи кабинет выглядел как сайт из другой эпохи: мелкий шрифт и широкие таблицы, которые на телефоне уезжают за край экрана. А участники фонда заходят чаще с телефона, чем с компьютера. Потом они звонят в поддержку и спрашивают, где их накопления и как подать заявление.

Переписать всё с нуля предлагали не раз. Фонд отказывался, и правильно: ошибка в расчёте — это чья-то пенсия. Новую систему пришлось бы долго сверять формула за формулой.

Нужно было сделать кабинет современным и удобным с телефона, а всё, что считает деньги, оставить как есть.

Решение

Сначала я прочитал код и нарисовал карту. Какие EJB что считают, какие JSP какие методы вызывают, где лежат сущности Hibernate. По карте решили: расчётное ядро остаётся нетронутым, ни одну формулу не меняем.

Затем обновил сервер приложений и библиотеки. Часть версий давно не получала исправлений безопасности, а Struts 1 снят с поддержки уже много лет. Переходил по шагам на тестовом стенде. После каждого шага расчёты прогонялись на обезличенной выгрузке и сравнивались с эталонными значениями от специалистов фонда.

Над EJB появился REST-слой. Это тонкие методы: они вызывают прежние компоненты и отдают результат в JSON. На каждом вызове проверяется, что участник запрашивает только свой счёт и свои документы.

Новые страницы сделал для трёх самых частых сценариев: баланс, выписка за выбранный период и заявление. Вёрстка адаптивная, шрифт крупный, выписка скачивается файлом. Старые экраны на Struts для этих сценариев закрыты, прежние адреса ведут на новые. Остальные разделы пока живут на JSP, но в том же оформлении, и участник разницы почти не видит. Их переносят по очереди, когда фонд выбирает следующий сценарий.

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

Включал по одному сценарию и сначала для части участников. Если что-то шло не так, старая страница возвращалась за минуты, а расчёты не страдали, потому что их никто не менял.

Результат

Участник открывает кабинет с телефона, и баланс виден на первом экране. Выписка за нужный период скачивается за пару нажатий, заявление подаётся без бумаги и почты. В поддержку реже звонят с вопросами вроде «где это найти».

Для самого фонда важнее другое: расчёты те же, которым привыкли доверять. Сверять с нуля было нечего, поэтому риск ошибки в деньгах не вырос. Портал ни разу не останавливали, новые страницы включались постепенно.

Цену этого подхода я называю сразу. Стек остался прежним: J2EE-приложению с EJB по-прежнему нужны внимание, обновления и люди, которые его понимают. Пока часть разделов остаётся на старых JSP, у сайта два способа устроить экран, и новым сотрудникам фонда придётся об этом рассказывать.

Следующий шаг очевиден: переносить остальные сценарии по частоте обращений. Когда старых страниц останется мало, можно подумать, нужно ли выносить расчёты из EJB. Спешить с этим не стоит: пока формулы работают и сверяются, это не главная проблема.

Старый корпоративный портал на Java выглядит устаревшим, а переписывать его страшно? Откройте мой профиль на freelance.ru и отправьте сообщение: расскажите, что в нём считается, и я предложу, какие сценарии вынести первыми.

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT Приложение для кнопочных телефонов: обход оборудования на химзаводе на J2ME, поддержка Symbian и Bada, перенос с Palm, сервер на Java
Приложение для кнопочных телефонов: обход оборудования на химзаводе на J2ME, поддержка Symbian и Bada, перенос с Palm, сервер на Java
18
Веб-разработка и IT Создание сайта с 3D-конструктором гардеробных: веб-приложение на Three.js для мебельной фабрики в Москве, модели из SketchUp, цена на лету
Создание сайта с 3D-конструктором гардеробных: веб-приложение на Three.js для мебельной фабрики в Москве, модели из SketchUp, цена на лету
13
Дизайн и Брендинг Концепт электрокара-шаттла для курортов: автоскетчи и футуродизайн кузова, компоновка в SketchUp, AI Рендеринг для поиска образа и финальные рендеры в Keyshot
Концепт электрокара-шаттла для курортов: автоскетчи и футуродизайн кузова, компоновка в SketchUp, AI Рендеринг для поиска образа и финальные рендеры в Keyshot
14
ИИ и Нейросети Хранилище данных для сети АЗС в Армении: Data Warehousing в BigQuery, уход с Redshift, загрузки на Informatica и OLAP-отчёты
Хранилище данных для сети АЗС в Армении: Data Warehousing в BigQuery, уход с Redshift, загрузки на Informatica и OLAP-отчёты
16