您的公司可能希望迁移到微服务架构并实现工作流自动化(在本博客文章中,我不做任何动机,但您可能想阅读一下您可能没有考虑的5个工作流自动化用例或BizDevOps-的真正价值主张)工作流程引擎)。这使您与我们的许多客户保持一致。通常,您将有以下问题:
- 范围和边界-您想自动化哪种工作流程,以及它如何适合多个微服务,或者您的环境中的碎片环境。我仅限于本文的范围,因此今天我将不讨论该主题,但是您可能需要阅读在使用有限上下文或Real-Life BPMN时避免“ BPM整体”。
- 堆栈和工具-我可以使用哪个流程引擎?
- 体系结构-我是集中运行流程引擎还是分散运行?
- 管理-谁拥有工作流程模型,该如何部署?
- 运营-如何保持控制力?
, . , .
, -, . :
- — ?
- 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- . :
工作流模型的所有权应在相应微服务的权限范围内。工作流程应明确地集中在这一领域。
您可以集中运行或分散运行工作流引擎。
跟踪或控制-您应该努力平衡编排和编排。