あなたの会社はマイクロサービスアーキテクチャに移行してワークフローを自動化したいと思うかもしれません(このブログ投稿では動機付けにはなりませんが、考慮しなかったかもしれない5つのワークフロー自動化のユースケースまたはBizDevOpsについて読みたいと思うかもしれません-の真の価値提案ワークフローエンジン)。これにより、多くのクライアントと一致するようになります。原則として、次の質問があります。
- 範囲と境界-自動化するワークフローの種類と、それが複数のマイクロサービス、またはランドスケープ内の断片化されたコンテキストにどのように適合するか。この投稿の範囲に限定されているため、今日はこのトピックについては説明しませんが、制限付きコンテキストまたは実際の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- . :
ワークフローモデルの所有権は、それぞれのマイクロサービスの範囲内である必要があります。ワークフローは、この領域に明確に焦点を合わせる必要があります。
ワークフローエンジンは、集中的に実行することも、分散して実行することもできます。
追跡または制御-振り付けとオーケストレーションのバランスの取れた組み合わせを目指して努力する必要があります。