Comments 15
Новый алгоритм мы изначально построили так, чтобы все операции с таблицами полностью выполнялись в оперативной памяти
Чем пользуетесь, если не секрет?
История о том, как у нас все было плохо, вендор нам что-то прикрутил, мы не знали как с этим быть. Менеджеры разводили руками, а вендор требовал горы денег и столько же времени. Потом, решили нанять программистов, разрешили им сделать костыль, и теперь это работает за 10 минут.
Причем тут микросервис?
В этой истории ключевой момент отказ от операций в базе и перенос расчетов в оперативку. У нас в компании ровно такая же ситуация, и сейчас переносим все расчеты в ОЗУ. Как простой пример: доступ к данным по ключу в Couchbase у нас занимает 10 ms, тот возвращает json, его нужно десериализовать в структуру языка. Все тоже самое, только с заранее подгруженными в оперативку данными занимает на несколько порядков меньше времени (пикосекунды), отсюда и выигрыш. Вот только есть проблемы с обновлением этих данных в оперативке, но подходы есть
Думаю на том же SAP порядок времени был бы таким же, тут вопрос больше кому уйдет бюджет на эту оптимизацию
Не понятно в чем тут помогли микросервисы. Микросервисы в частности решают проблему масштабируемости команд и совместной разработки
Если в вашем примере вынести функциональность в сервис — принципиально ничего не измениться
Календарь теперь рассчитывается только один раз. Затем его экземпляры для каждого из трех дней получаются в результате небольших дополнительных вычислений, связанных с изменением дат.
Вроде бы это называется "динамическое программирование".
P.S. Тема логистических календарей (что там надо было посчитать, что оно так долго считалось) не раскрыта, а зря
В тексте опечатка: "общий товарооборот вдвое до 1 млрд рублей". Вы хотели написать трлн рублей, скорее всего
Во-вторых, Вы специально обращаете внимание на скорость вычислений и компактное размещении в памяти. И что в дальнейшем нужно ещё быстрее и компактнее (бизнес требует). И задача, по вашему описанию, чисто вычислительная.
Тогда: рассматривались ли альтернативы java? Например, C++? В частности, периодически смотрю бенчмарки на вычислительные задачи и там, иногда, C++ в 2+ раза быстрее Java. А по использованной памяти выигрыш C++ может, опять же иногда, быть и в 10+ раз.
С другой стороны, время разработки на C++, иногда, больше. Однако из Вашего описания можно предположить, что запас времени на реализация алгоритма у вас был, и существенный.
Нет, другие языки мы не рассматривали, т.к. не было особой надобности, т.е. нас и бизнес полностью устроило время выполнения алгоритма даже с учетом растущих объемов, а так же Java — это основной язык нашей платформы и его функционал и мощности нас устраивают.
С помощью перехода на микросервис мы ускорили бизнес-процесс в 60 раз