Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Где проходит граница автономности сервисов?
Как вы решаете проблемы консистентности бизнес-операций между двумя службами?
Как решаются проблемы отказоустойчивости и временной недоступности сервисов?
В компании активно развивается направление BPM, в частности на базе продукта Activiti реализуются некоторые процессы связанные с подключением услуг. Внедрение BPM показало рентабельность данного решения и на него переводится все больше БП. Но у Activiti есть один недостаток. Т.к. это по сути движок БП, то нормального интерфейса для работы с экземплярами процесса нет. Ранее в компании для автоматизации БП использовался workflow engine jira3
насколько мне известно данный вопрос решается лишь на уровне SLA + холодный резерв. Возможно для критически важных для бизнеса служб используется другая схема отказоустойчивости, например, в биллинге.
Это ответ вообще на другой вопрос.
Собственно, я изначально по вашей статье так и подумал — собственно с SOA-то вы еще столкнуться не успели. Декомпоновка на автономные сервисы — это еще не SOA. Так что писать о «переходе» архитектур вам рановато. Деплой компонентов — да.
Например, абоненту нужно активировать точку доступа лишь когда он пополнит баланс на необходимую сумму, а баланс клиент может пополнить лишь при созданном лицевом счете и выделенной точке доступа. В данном случае идет взаимодействие между несколькими службами
как можно организовать структуру приложений в случае реализации служб
Как решается вопрос консистентности данных?
Вы понимаете, что после решения озвученных выше проблем эта организация скорее всего изменится?
данную задачу решает BPM, собственно это его основная задача. Например, сначала создается лицевой счет, если удалось то процесс переходит на следующий шаг, если нет, то выполняет заданное в процессе действие.
Но имея базис и некий опыт работы с данной структурой гораздо проще спланировать дальнейшее развитие системы.
К сожалению, некоторые вещи в систему нужно закладывать изначально, иначе развитие будет сопоставимо по сложности (а то и превышать, учитывая требования обратной совместимости) с разработкой с нуля.
В монолитной системе это решается транзакцией, при которой либо будет изменено состояние обеих систем, либо не будет изменено ничего. А в вашей распределенной?
Буду благодарен если дадите наводку на что стоит сразу обращать внимание, потому что сложилось ощущение, что есть явные огрехи и их желательно сразу устранить, потому пока еще все не зашло далеко.
На самом деле за время работы в данной компании не припомню задачи, в которой бы была нужна транзакционность при интеграции нескольких служб.
Возможно на стороне смежных групп это решается проще ибо написаны они на java и взаимодействие между ними требует меньше накладных ресурсов.
Искренне завидую.
А вот это как раз показывает, что вы не до конца грокнули SOA
Переход от 2-х звенки к архитектуре служб в парадигме SOA