03.04.2021, 19:37 | #1 |
Участник
|
Микросервисы в ERP
Многие сегодня говорят про так называемые микросервисы и что мол надо эту концепцию использовать в ERP. Честно говоря, я с трудом представляю как это можно было бы реализовать и предлагаю поразмышлять на эту тему.
Основным вопросом остается взаимодействие модулей. Когда мы в единой БД и едином приложении, из которого доступны все бизнес-сущности, мы можем строить и управлять картиной в целом, однако если все это разделить на несколько независимых "небольших" приложений, то сразу возникает вопрос их взаимодействия и обмена данными (пример из мира 1С, когда в компании используется три конфигурации: Бухгалтерия, Кадры, Торговля и данные между ними надо как-то склеивать и держать в актуальном для всех баз виде). Так вот, для меня остается открытым вопрос о том, как например данные из сервиса Склад будут взаимодействовать с сервисом Главная книга? Если это две разные базы данных, то как мы будем обмениваться данными между ними, REST, SOAP, что-то ещё? Кроме того, если падает общее приложение то все как бы понятно, поднимать надо все. Если же сервис Главная книга упал, а сервис Продажи ждет от него номер бухгалтерской операции, то чем это будет принципиально отличаться от падения общей БД/приложения? В общем, идея с микросервисами выглядит с одной стороны заманчиво, потому что помогает избежать большой связанности, но с другой стороны не окажется ли использование микросервисной архитектуры таким же проблемным, каким, в некоторых случаях, оказываются ERP приложения с монолитной архитектурой? Мысли, идеи, мнения? Вам слово! |
|
03.04.2021, 20:08 | #2 |
MCT
|
По определению микросервисы - это слабосвязанные модули, причем могут быть реализованы на разных языках и платформах.
Если рассматривать ERP, конкретно DAX, то это отсутствие единого АОС под все модули и единой базы данных. У каждого модуля должен быть свой API, через который происходит общение с этим модулем. Идеально, если вам не нравится, как реализован, допустим склад, то вы его заменяете на модуль склад другого поставщика. Допиливаете API по своим существующим модулями и вуаля у вас ERP с другим модулем склад. Уже не имеет смысл рассматривать интеграции с 1С или еще чем- то, так как у вас каждый модуль отделен. И вам без разницы с каким модулем у вас работает, допустим, модуль производство. API есть, оно работает, данными обменивается. У вас в качестве модуля главной книги очень может быть 1С. Модули обмениваются через шину данных. Если у вас, допустим упал модуль расчеты с персоналом, то остальные модули продолжают работать. Минусом этого, однозначно, будет сложность администрирования и управления всеми частями.
__________________
Axapta book for developer Последний раз редактировалось MikeR; 03.04.2021 в 20:10. |
|
|
За это сообщение автора поблагодарили: Lemming (5), Sancho (1). |
03.04.2021, 21:37 | #3 |
Участник
|
Цитата:
И сейчас взаимодействие между "модулями" происходит через публичный интерфейс классов. Никто ж в здравом уме не пишет финансовые проводки вручную, а обращаются к классам LedgerVoucher* другое дело, что классы в аксапте слишком много знают друг о друге. Цитата:
в результате пришли к стандартизированным менеджерам очередей для сообщений. сейчас это RabbitMQ, Kafka и подобные (эти живут и здравствуют) Раньше в виндах был MicrosoftMQ и BizTalk (эти умерли) Цитата:
Сообщение от Lemming
В общем, идея с микросервисами выглядит с одной стороны заманчиво, потому что помогает избежать большой связанности, но с другой стороны не окажется ли использование микросервисной архитектуры таким же проблемным, каким, в некоторых случаях, оказываются ERP приложения с монолитной архитектурой?
История повторяется: 1. раньше были "мощные" мэйнфреймы и тупые терминалы. 2. решили что это не гибко и монстроидально, начали в персональные компьютеры 3. персональные компьютеры изначально были персональными и плохо работали в сети. 4. затем появились сетевой инструментарий для персональных компьютеров 5. теперь снова уходит "в облака", где работают мощные "мэйнфреймы", а персональные компьютеры являются тупыми терминалами по большей части идея с микросервисами - примерно то же самое. она привлекательна только для небольших и независимых команд разработчиков. для совместной работы больших команд микросервисы неудобны и тяжело администрируемы. читать "монорепа", "моно репозитарий" если говорить в терминах аксапты, то кажется, что главная книга, склад, производство и... та-дам... сводное планирование, например, очень хорошо выносится в микросервисы. Майкрософт так и сделал со сводным планированием. Можно почитать отзывы, посмотреть на результат, так сказать но когда с уровня космического архитектора спускаешься на уровень реализации, тут же выясняется, что в ERP есть много действительно общих вещей. Валюты и валютные курсы например. Особенно с учётом разных стран, кросс-курсов, управляемых курсов типа УЕ. А также нормативные справочники типа налоговых инспеций, ИНН/КПП. В Аксапте DirInfo, не к ночи будь помянут... Даже тривиальные финансовые периоды, которые в Аксапте в модуле главной книги. И даже в существующей аксапте они не очень используются.... Стоит примерить как придется реализовать ЭТО в парадигме микросервисов. И сколько этих микросервисов придется сделать. С другой стороны, микрсервисы - это именно такие справочники, а не сводное планирование |
|
|
За это сообщение автора поблагодарили: Lemming (5). |
03.04.2021, 22:13 | #4 |
Участник
|
Есть же ещё сервис для on hand https://docs.microsoft.com/en-us/dyn...ory-visibility реализованный на Dataverse и судя по слайдам это первый из многих. Далее обещают сервис для цен.
|
|
05.04.2021, 10:31 | #5 |
Модератор
|
Цитата:
Сообщение от Lemming
Основным вопросом остается взаимодействие модулей. Когда мы в единой БД и едином приложении, из которого доступны все бизнес-сущности, мы можем строить и управлять картиной в целом, однако если все это разделить на несколько независимых "небольших" приложений, то сразу возникает вопрос их взаимодействия и обмена данными (пример из мира 1С, когда в компании используется три конфигурации: Бухгалтерия, Кадры, Торговля и данные между ними надо как-то склеивать и держать в актуальном для всех баз виде).
Так вот, для меня остается открытым вопрос о том, как например данные из сервиса Склад будут взаимодействовать с сервисом Главная книга? Если это две разные базы данных, то как мы будем обмениваться данными между ними, REST, SOAP, что-то ещё? Кроме того, если падает общее приложение то все как бы понятно, поднимать надо все. Если же сервис Главная книга упал, а сервис Продажи ждет от него номер бухгалтерской операции, то чем это будет принципиально отличаться от падения общей БД/приложения? С другой стороны, можно посмотреть как работает Oracle Fusion. В ERP есть "сердце" - основные справочники (номенклатура, план счетов, валюта) и транзакционные таблицы (главная книга, перемещение номенклатуры). Данные справочники едины для всех модулей, которые являются расширением базового функционала. Т.е. все модули видят, какой товар есть в наличии на каком складе, а где именно он лежит - знает только модуль WMS. Если WMS упал - ну, чините, ничего страшного, система работает. CRM - видит список компаний и контактов, а как именно с ними ведется работа - знает только сам CRM, который, в свою очередь, может выдавать информацию о заказе или предполагаемых заказах, основанную на оценке стадии сделки и её предполагаемой сумме. И подобные модули являются расширением стандартного функционала системы, без которого она может работать, но которые дополняют и расширяют стандартную функциональность. Таким образом, Fusion выступает как сервер приложений, который обеспечивает контроль доступа, работу с БД и шину данных. Если и писать "микросервисы", то логичнее их писать не к БД напрямую, а к подобному серверу приложений. Но у меня не вяжется "микроcервис" и, например, "WMS". Микросервис ближе к мобильному рабочему месту оператора, чем к модулю ERP. С Уважением, Георгий. |
|
|
За это сообщение автора поблагодарили: mazzy (2), Lemming (5). |
05.04.2021, 12:38 | #6 |
Участник
|
Цитата:
https://docs.microsoft.com/en-us/dyn...n-fit-analysis Думаю реализовать такой же сервис внутри D365 было бы на порядок проще, плюс работал бы он так же быстро, т.е. основная сложность таких операций, это как раз множественные настройки, каждая из которых резко усложняет систему, вынуждает делать доп. запросы и прочее Микросервисы это все же про людей, а не про техническую составляющую, вот просто отличное видео, которое раскрывает проблему https://www.youtube.com/watch?v=gfh-VCTwMw8 |
|
|
За это сообщение автора поблагодарили: mazzy (2), Lemming (5), cuba (1). |
12.04.2021, 17:50 | #7 |
Участник
|
Я когда думал на эту тему для себя разделил примерно как расписали уже выше: внутри "модуля" можно сделать модную микросервисную архитектуру (и пример масштабирования сводника - это запуск много отдельных параллельных микросервисов расчета), а вот сама ERP - это уже система из таких модулей-"сервисов".
В общем случае модули ERP могут быть на разных платформах, ПО и т.п. По сути классика жанра Аксапта + 1С для БУ + WMS + BI и есть модульная ERP.
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: Lemming (5). |
13.04.2021, 09:13 | #8 |
Модератор
|
Цитата:
С Уважением, Георгий |
|
13.04.2021, 10:28 | #9 |
Участник
|
Цитата:
Я вижу примеры роста различных BPM систем, low code и вот это всё. Новые пишутся в такой парадигме, в т.ч. некоторые "клиенты" пишут под себя такое и потом выходят на рынок с "платформой". Но пока рано говорить о значительной доли рынка таких систем.
__________________
Ivanhoe as is.. |
|
13.04.2021, 11:35 | #10 |
Модератор
|
Это да... Во-первых, рынок ERP довольно неповоротливый. И просто так все на новой архитектуре переписывать не будет, хотя попытки мы видим. И они, кажется, не всякого радуют .
К тому же, ERP лицензируются по пользователям, сервисы - скорее по потреблению ресурсов (ЦПУ / трафик / место на диске). В итоге приходится много чего пересматривать с точки зрения лицензирования, чтобы новое сводное не отъедало тысячу конкурентных пользователей, но при этом подчинялось базовым настройкам безопасности. С Уважением, Георгий |
|
|
За это сообщение автора поблагодарили: Lemming (5). |
13.04.2021, 14:07 | #11 |
Moderator
|
|
|
02.06.2021, 12:28 | #12 |
Участник
|
Когда говорят о микросервисах, то в качестве их преимуществах говорят о слабосвязанности.
А насколько она - слабосвязанность - нужна? В концептуальном анализе есть прием - антропоморфная редукция. Это когда сложные системы понятий проектируются на человека и/или его деятельность - при этом все должно вставать на свои места и сложные понятия становятся простыми до очевидности. Попробуем спуститься еще ниже - не до человека, а до повара (повароморфная редукция, мда..). Представим повара и его, ну например, микроволновку (сервис). Повар засовывает в него курицу (информационный продукт) и, согласно контракту, микроволновка должна его разморозить. При этом: - если открыть дверцу микроволновки во время работы она должна выключиться. Это жесткая функциональная связь, реализуемая на "железячном" уровне. - после отработки микроволновки повар (процессный движок) должен вынуть курицу (информационный продукт) из микроволновки и засунуть её в кастрюлю, согласно рецепту (шаблон бизнес-процесса). Здесь связи определяются процессом и также достаточно жесткая, хотя может в процессе приготовления меняться. - после отработки микроволновка блямкает - посылает сигнал о завершении работы в космос. Кому он нужен? Да мало ли кому - на кухне и в зале трётся много народа. Может кому и сгодится. И только вот эти, самые малозначимые с точки процесса, связи и являются "слабосвязанными". И только они в достаточной мере годны для реализации микросервисами. Получается, что основная выгода от микросервисов - реализация самых малозначимых компонентов системы. |
|
02.06.2021, 13:09 | #13 |
Участник
|
Цитата:
Cоздадим монолит: привяжем повара к микроволновке цепочкой, и мордочку закрепим скотчем на уровне дверцы: он сразу будет видеть курочку, а это конкурентное преимущество над микросервисом. Тут же вырисовываются и проблемы: поваренок должен быть мелким иначе проигрываем по габаритам и не на каждую кухню влезет такая система + есть опасность потребления ресурсов со стороны поваренка. Последний раз редактировалось axm2017; 02.06.2021 в 13:13. |
|
02.06.2021, 13:30 | #14 |
Участник
|
Давайте определим что такое слабосвязанность?
Когда говорят о микросервисах, то обычно разделяют следующие выгоды:
В качестве минуса - Eventual consistency - повар может не услышать сообщение от микроволновки и думать что еда готовится, когда еда уже готова. |
|
|
За это сообщение автора поблагодарили: Sancho (1), Dynamics365Eng (1). |
02.06.2021, 15:46 | #15 |
Участник
|
Когда говорят о микросервисах возникает одно ощущение — мешанина.
Начиная от определения, например Фаулера: архитектурный стиль микросервисов — это подход, при котором единое приложение строится как набор небольших сервисов, каждый из которых работает в собственном процессе и коммуницирует с остальными используя легковесные механизмы, как правило HTTP. Мешанина туманной концепции (небольшие сервисы) и конкретной реализации. Теперь к нашим баранам, сиречь повару. Независимость повара и микроволновки, производителя микроволновки, команды микроволновки и установки микроволновки определяемтя не микросервисной архитектурой (использованием отдельного процесса, отдельного источнока данных и протокола HTTP), а компонентной архитектурой. Вспомним приснопамятную RAD-архитектуру и наборы компонентов для Delphi, покупаемых на Горбушке. Без микроскрвисов. Динамическое обслуживание кучи микроволновок - архитектура main/worker процессов. Пример - Apache, PostgreSQL (что знаю). Без микросервисов. Единственное применение микросервисов - использование другой технологии (скорее всего, языка программирования). Я знаю не много языков, но мне не особо верится что есть такие технологии, которые можно реализовать в одном языке и невозможно реализовать в другом. Конечно, беря во внимание наиболее распространенные универсальные языки. Скорее, речь пойдет о том, что независимая команда не шарит в языке и технологии, на которой реализована основная система. Причиина опять не технологическая, а организационная. И особенно доставляет слушать доклады с всевозможных конференция о историях успеха внедрения микросервисной архитектуры (или особенно какой-нибудь Event-Driven Microservice Architecture) в крупных гигантах. Ребята все делают правильно, а получают неуправляемый ворох сервисов и перекосы в системе хранения данных. Но это неважно, ведь используются самые передовые технологии, правдв? |
|
02.06.2021, 16:09 | #16 |
Участник
|
Цитата:
Цитата:
Естественно как у любой архитектуры есть + и - и бездумно применять не стоит ps домохозяйкам на заметку https://habr.com/ru/post/249183/ Не фан микросервисов (мне например не нравятся слухи об invoice машинах и прочем внутри MS как отдельных сервисах так как беглый опрос показывает что MS ники видят это как black boxes со всеми вытекающими) но имеет место быть. Последний раз редактировалось axm2017; 02.06.2021 в 17:00. |
|
|
За это сообщение автора поблагодарили: mau (1). |
02.06.2021, 19:37 | #17 |
MCTS
|
Компоненты это хорошо. Но почему обязательно микро? Это какое-то упрощение. Сначала стремимся все запихнуть в одну систему (ERP). Потом все поделить на маленькие кусочки. Надо выделять области наибольшей связности кода, их и можно выносить в сервисы.
__________________
I could tell you, but then I would have to bill you. |
|
02.06.2021, 19:58 | #18 |
Участник
|
Цитата:
В случае микросервиса, хранение и администрирование лежит на команде, которая поддерживает микросервис, она может даже сменить вид хранилища по желанию. Цитата:
Цитата:
Цитата:
Цитата:
Сообщение от mau
И особенно доставляет слушать доклады с всевозможных конференция о историях успеха внедрения микросервисной архитектуры (или особенно какой-нибудь Event-Driven Microservice Architecture) в крупных гигантах. Ребята все делают правильно, а получают неуправляемый ворох сервисов и перекосы в системе хранения данных.
Но это неважно, ведь используются самые передовые технологии, правдв? |
|
03.06.2021, 08:11 | #19 |
Участник
|
Именно. в том же концептуальном анализе есть понятие "естественная целостность", которые необходимо выявлять и строить по ним контуры управления.
|
|
03.06.2021, 08:16 | #20 |
Участник
|
Цитата:
Понятно, что никто не выйдет и не скажет "Ребята, мы обделались". Все будут говорить о проблемах и их решении. Но послушайте, с какими проблемами они столкнулись на пустом месте. Именно из-за того, что у них куча отдельных микросервисов с собственными источниками данных. |
|