Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №2952064
А
Аноним
13 марта 2025 12:55 · публичный вопрос
А
Аноним

Есть участок системы отвечающий за финансовый учет, как вы его модернизируете? В крупной организации вас назначили на проект развития критически важной системы, которая…

Запрос пользователя

Есть участок системы отвечающий за финансовый учет, как вы его модернизируете? В крупной организации вас назначили на проект развития критически важной системы, которая разрабатывалась на протяжении 10 или даже более лет в виде монолита на JavaEE технологиях с использованием JSP и JQuery в качестве фронтенда. Была поставлена задача определить и инициировать дальнейшее развитие системы, имея в виду тот факт, что интерфейс выглядит устаревшим, доработка нового функционала и исправление проблем занимает много времени и ресурсов, кажется, что с монолитным проектом устаревших технологий выходит сложно обращаться разработчикам. Разобьем все на микросервисы, «один домен — один сервис» - главный принцип модульности и неограниченной масштабируемости Вынесем финансовые операции в один транзакционно работающий сервис, остальные клиенты пусть используют его по API Перепишем и переосмыслим все с нуля. Сначала создать MVP новой системы и начать переводить на нее пользователей, а старую признать устаревшей Оставить его как есть, если работает, трогать не надо, главное правило продуктивных сред Зааутсорсим (делегируем) разработку сторонней команде из страны с дешевой рабочей силой. Они быстро и профессионально все сделают Вынесем код отвечающий за финансовые операции в библиотеку, а за консистентность данных и операций будет отвечать СУБД Затрудняюсь ответить

Ответ нейросети
13 марта 2025 12:55

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

1. Миграция на микросервисную архитектуру

Преимущества:

  • Модульность: Каждый микросервис представляет собой отдельный модуль, который отвечает за определенный функционал. Это упрощает разработку, тестирование и поддержку.
  • Независимая масштабируемость: Микросервисы могут масштабироваться автономно, что позволяет оптимально распределять ресурсы.
  • Упрощенное исправление и доработка: Обновление одного микросервиса не затрагивает остальные, что снижает риски.

Реализация:
Следует определить бизнес-домены и разделить систему на соответствующие микросервисы. Например, финансовые операции могут быть выделены в отдельный микросервис, который будет взаимодействовать с другими сервисами через API.

2. Финансовый сервис

Преимущества:

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

Реализация:
Разработка RESTful API для финансового сервиса позволит другим микросервисам, например для управления пользовательскими данными или анализа, легко взаимодействовать с финансами.

3. Создание MVP (Минимально жизнеспособный продукт)

Преимущества:

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

4. Подход «если работает, не трогай»

Преимущества:

  • Снижение затрат: Если старая система продолжает функционировать и выполнять свои задачи, ее можно оставить на время до завершения миграции.
  • Стабильность: Избежание ненужных рисков, связанных с изменениями, когда целая система работает как положено.

Реализация:
Возможно, стоит использовать старую систему до тех пор, пока новая не будет полностью готова и протестирована.

5. Аутсорсинг

Преимущества:

  • Снижение затрат на разработку: Делегирование разработки сторонним командам может снизить стоимость за счет использования более дешевой рабочей силы.
  • Скорость: Профессиональные команды могут быстрее реализовать проект благодаря более высоким стандартам и опыту.

Недостатки:

  • Потеря контроля: Риск потери контроля над качеством и процессом разработки.
  • Коммуникационные барьеры: Возможные проблемы с взаимодействием из-за разницы в культурах и языках.

6. Библиотека для финансовых операций

Преимущества:

  • Переиспользование кода: Выделение логики финансовых операций в библиотеку позволяет использовать ее в разных проектах или микросервисах.
  • Снижение связности: Разделение логики на библиотеку и использование СУБД для консистентности данных позволяет упростить архитектуру.

Реализация:
Разработка четко документированной библиотеки с API для работы с финансовыми данными разнесет логику по различным системам.

Заключение

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