Sua empresa pode querer mudar para uma arquitetura de microsserviços e automatizar fluxos de trabalho (não vou entrar na motivação nesta postagem do blog, mas você pode querer ler sobre 5 casos de uso de automação de fluxo de trabalho que você pode não ter considerado ou BizDevOps - a verdadeira proposição de valor de motores de fluxo de trabalho ). Isso o coloca em linha com muitos de nossos clientes . Como regra, você terá perguntas:
- Escopo e limites - que tipo de fluxo de trabalho você deseja automatizar e como ele se encaixa em vários microsserviços ou em um contexto fragmentado em seu ambiente. Estou limitado à extensão deste post, então não vou cobrir este tópico hoje, mas você pode querer ler Evitando o “monólito BPM” ao usar contextos limitados ou BPMN da vida real .
- Pilha e ferramentas - qual mecanismo de processo posso usar?
- Arquitetura - estou executando o mecanismo de processo centralmente ou descentralizado?
- Gerenciamento - quem são os proprietários do modelo de fluxo de trabalho e como faço para implantá-lo?
- Operações - Como faço para manter o controle?
, . , .
, -, . :
- — ?
- 3 : , RPC- «-»,
, , , flowing-retail GitHub. flowing-retail , . , Camunda BPM Zeebe. — , , .
, - (, Amazon) .
? ?
, , , ( «Microservices» Martin Fowler). Event-driven .
, . . , , , . , , . , , . , . , « - ?» « - , ?» . Complex event flows in distributed systems (, , QCon - DevConf ).
: https://github.com/berndruecker/flowing-retail/tree/master/kafka/java/choreography-alternative
, , . (. ), , , , , . Monitoring and Orchestration of Your Microservices Landscape with Kafka and Zeebe ( Kafka Summit -).
, . - , :
:
. , , . , , . , , :
flowing-retail , -: !
—
? , , ( ).
- ( )
- «-» / ( REST)
, , , .
. . . (« , , ») , (« , O42»).
- : Kafka, RabbitMQ (AMQP), JMS.
- : -, / , , , , Saga pattern, «Lost in transaction» (, , JavaZone Oslo).
- : https://github.com/berndruecker/flowing-retail/tree/master/kafka/java
- : ; - ; (, ) , .
- : , . , « ». .
- /
, , . — REST. . REST, — , ( , , , QCon London).
- : REST, SOAP, gRPC; : https://www.rabbitmq.com/tutorials/tutorial-six-java.html
- : (, ), -, / , , Saga pattern, «Lost in transaction» (, , JavaZone Oslo).
- : https://github.com/berndruecker/flowing-retail/tree/master/rest
- : ; .
- : , ; (, Circuit Breaker).
, , . .
- : External Tasks (Camunda BPM) Workers (Zeebe).
- : , -, / , , Saga pattern, «Lost in transaction» (, , JavaZone Oslo).
- : https://github.com/berndruecker/flowing-retail/tree/master/zeebe
- : ; .
- : ; — (, REST Messaging).
. , , , .
, Kafka Messaging, . , , REST, , , Spring Boot, . , , , , . Domain-driven design (DDD) , , Akka Axon, , , .
, , , . , , . , - , . , , , .
, . :
- , .
- , .
- , .
Architecture options to run a workflow engine.
. , , , . , () .
- : https://github.com/berndruecker/flowing-retail/tree/master/kafka/java/order-camunda
- : ; .
- : ( ); « » ().
: « , »?
. DevOps , . , , , .
, , , . , , , Elastic. (, , , ). . , , .
, , Camunda Optimize Zeebe Operate.
. , . REST (Camunda BPM) gRPC (Zeebe).
, , , .
,
. Camunda, (, Spring Boot Starter) . , . .
- : « ».
- : , , , Rolling Upgrade Deployment Aware Process Engine.
. .
. , , . . , : , . , — .
— , Camunda, , , . , , , .
, . , , - , .
, , , , .
(: ) , , .
, .
flowing-retail :
- : - .
- : .
, - . BPM — , - , — , .
« »?
: « »? : , , « ».
-, , , . , , , , , — . , , — , , , .
« », , , ( , ,…). , , . .
, . , . :
: , RPC- . :
A propriedade dos modelos de fluxo de trabalho deve estar dentro do alcance do respectivo microsserviço. O fluxo de trabalho deve ser claramente focado nesta área.
Você pode executar o mecanismo de fluxo de trabalho de forma centralizada ou descentralizada .
Track or Control - Você deve se esforçar para uma mistura equilibrada de coreografia e orquestração .