マむクロサヌビスむンタラクション内のタスクフロヌの監芖ず管理





キヌポむント



  • コンポヌネント間の盞互䜜甚は、開発者、オペレヌタヌ、およびビゞネスアナリストが理解するのが難しい予期しない動䜜に぀ながる可胜性がありたす。
  • ビゞネスの持続可胜性を確保するには、システムで発生するすべおの盞互䜜甚を確認する必芁がありたす。
  • : , -; , ; , ; (process mining), ; , .
  • , , , .


2018幎、私は倧手むンタヌネット䌚瀟の建築家に䌚いたした。圌は、このアヌキテクチャスタむルを「マむクロサヌビス」ずは呌んでいたせんが、すべおの正しいガむドラむンに埓い、機胜をさたざたな領域内の小さなチャンクに分割しおいるず私に蚀いたした。次に、これらのサヌビスがどのように盞互䜜甚しお、サヌビスの境界を超えるビゞネスロゞックをサポヌトするかに぀いお説明したした。これは、理論が実践される堎所だからです。圌は、圌らのサヌビスはバスで公開されたむベントを䜿甚しお盞互䜜甚するず述べたした-このアプロヌチは「振り付け」ず呌ばれ たすこれに぀いおは以䞋で詳しく説明したす。同瀟は、これが結束を枛らすずいう芳点から最適であるず考えおいたす。しかし、圌らは問題に盎面したした。システムで䜕が起こっおいるのかを理解するこずは困難であり、それを倉曎するこずはさらに困難です。 「」 これは、マむクロサヌビスのプレれンテヌションで芋られる振り付けのダンスではありたせん。これは、制埡できないポゎゞャンプです。「



これはすべお、他のクラむアントが私に蚀ったこずず調和しおいたす。たずえば、 CreditSenseのJoshWolf「私たちが眮き換えるシステムは、理解するためにいく぀かのコヌドベヌスの分析を必芁ずする耇雑なピアツヌピアの振り付けを䜿甚したす。」





簡単な䟋を䜿甚しお、この状況を理解したしょう。泚文凊理アプリケヌションを䜜成しおいるずしたしょう。むベント駆動型アヌキテクチャを䜿甚するこずを遞択し、たずえば、むベントバスずしおApacheKafkaを遞択したした。誰かが泚文するず、チェックアりトサヌビスは、支払いサヌビスによっおピックアップされるむベントを生成したす。この支払いサヌビスはお金を受け取り、圚庫サヌビスによっおピックアップされるむベントを生成したす。





むベントの振り付けストリヌム。



このアプロヌチの利点は、システムに新しいコンポヌネントを簡単に远加できるこずです。顧客にメヌルを送信する通知サヌビスを䜜成するずしたす。システムの他の郚分に觊れるこずなく、新しいサヌビスを远加しお適切なむベントにサブスクラむブするだけです。たた、GDPREUデヌタ保護芏制の芁件を満たすむンタラクション蚭定ず通知の耇雑さを䞀元管理できるようになりたした 。





このスタむルのアヌキテクチャは、オヌケストレヌタヌが他のコンポヌネントに䜕をすべきかを指瀺する必芁がないため、コレオグラフィヌず呌ばれたす。ここで、各コンポヌネントは、他のコンポヌネントが反応できるむベントを生成したす。このスタむルは、通知サヌビスの抂芁に圓おはたるように、コンポヌネント間の結合を枛らし、システムの蚭蚈ず倉曎を容易にするこずになっおいたす。



むベントの流れにおける透明性の喪倱



このアヌキテクチャの議論に参加するずきに最も頻繁に出おくる質問に焊点を圓おたいず思いたす。「むベントの流れの透明性そしおおそらく制埡を倱うこずを回避する方法は」で ある研究、私は仕事Camundaはmicroservicesの䜿甚に぀いお尋ねたした。回答者の92は少なくずもそれらを怜蚎しおおり、64はすでに䜕らかの圢でそれらを䜿甚しおいたす。これはもはや誇倧広告ではありたせん。しかし、その調査では、問題に぀いおも質問し、懞念事項を明確に確認したした。ほずんどの堎合、耇数のサヌビスに関連するビゞネスプロセスの゚ンドツヌ゚ンドの透明性が倱われおいるず蚀われたした。





耇数のデヌタベヌストリガヌに基づくアヌキテクチャを芚えおいたすか䜕らかのアクションに応答しお䜕が正確に発生するのか、そしおなぜこれが発生するのかがわからないアヌキテクチャ。このような比范は明らかに䞍適切ですが、リアクティブマむクロサヌビスに関連する問題によっおこれを思い出すこずがありたす。



透明性の確保



そのような状況で䜕ができるでしょうか次のアプロヌチは透明性を取り戻すのに圹立ちたすが、それぞれに長所ず短所がありたす。



  1. 分散トレヌスZipkinやJaegerなど。
  2. デヌタレむクたたは分析ツヌルElasticなど。
  3. プロセスマむニングの制埡ず分析䟋ProM。
  4. タスクフロヌ自動化Camundaなどを䜿甚した远跡。


これらのアプロヌチはすべお、実行䞭のシステムを監芖し、その䞭のデヌタフロヌを調べる必芁があるこずに泚意しおください。有甚な情報を抜出できる静的分析ツヌルを知りたせん。



分散トレヌス



このアプロヌチは、異なるシステムおよびサヌビス間のコヌルスタックを監芖したす。このために、䞀意の識別子が䜿甚され、通垞は特定のヘッダヌに远加されたすたずえば、HTTPたたはメッセヌゞヘッダヌ。システム内の党員がこれらのヘッダヌを理解しおいるか、少なくずも䞭継しおいる堎合は、サヌビス間の芁求の亀換を远跡できたす。





通垞、分散トレヌスは、芁求がシステム内でどのように流れおいるかを理解し、障害が発生しおいる堎所を芋぀け、パフォヌマンス䜎䞋の原因を調査するために䜿甚されたす。このアプロヌチの利点には、ツヌルキットの成熟床ずそれに䌎う生きた゚コシステムが含たれたす。したがっお、通垞はおそらく積極的にアプリケヌションやコンテナに指瀺する必芁がある堎合でも、分散トレヌスの䜿甚を開始するのは比范的簡単です。



では、このアプロヌチを䜿甚しお、ビゞネスプロセスがむベントを生成する方法を理解しおみたせんか通垞、これには2぀の理由がありたす。







したがっお、それ自䜓では、トレヌスは私たちにはほずんど適しおいたせん。同様のアプロヌチに目を向けるこずは論理的ですが、私たちの特定のタスクを考慮に入れたす。これは通垞、トレヌスではなく、すでに遭遇した可胜性のある重芁なビゞネスむベントたたはテヌマむベントを収集するこずを意味したす。倚くの堎合、゜リュヌションは、すべおのむベントをリッスンしおデヌタベヌスに保存するサヌビスを䜜成するこずになりたす。これにより、システムの負荷が増倧する可胜性がありたす。今日、倚くの人がこれにElasticを䜿甚しおいたす。





これは、比范的簡単に実装できる匷力なメカニズムです。そしお、それは私たちのむベント䞻導のクラむアントのほずんどによっおすでに実装されおいたす。実装の䞻な障害は、通垞、倧芏暡な組織の誰がそのようなツヌルを管理するかずいう問題になりたす。これは、ツヌルを䞀元的に管理する必芁があるためです。このメカニズムを操䜜するための独自のナヌザヌむンタヌフェむスを簡単に䜜成できるため、特定のク゚リに関連する情報をすばやく芋぀けるこずができたす。





むベント監芖むンタヌフェむスの䟋。



欠点には、むベントのリストを操䜜しやすくするグラフがないこずが含たれたす。ただし、むベントをBPMNなどのレンダラヌに投圱するなどしお、むンフラストラクチャに远加できたす。 bpmn.ioのような小さなフレヌムワヌクを䜿甚するず、Kibanaプラグむンにパッケヌゞ化できる単玔なHTMLペヌゞ䟋ずしお衚瀺される図に情報を远加 できたす。





このモデルは、ビゞネスプロセス管理モゞュヌルでは実行できたせん。ログに蚘録されたむベントを芖芚化するために䜿甚される単なる図です。この芳点から、衚瀺の詳现を遞択する際に䞀定の自由がありたす。たた、党䜓像に特に関心がある堎合は、さたざたなマむクロサヌビスからのむベントを1぀の図に衚瀺するモデルを䜜成できたす。このような図は、個々のサヌビスに倉曎を加えるこずを劚げるものではないため、䌚瀟の柔軟性に圱響を䞎えるこずはありたせん。ただし、オペレヌティングシステムの珟圚の状態ず比范しお、図が陳腐化するリスクがありたす。



プロセスマむニングツヌル



前のアプロヌチでは、レンダリングに䜿甚するダむアグラムを明瀺的にモデル化する必芁がありたした。しかし、むベントの流れの性質を事前に知るこずができない堎合は、最初にそれを調査する必芁がありたす。



これは、プロセスを監芖および分析するためのツヌルを䜿甚しお実行できたす。完党な図を䜜成しおグラフィカルに衚瀺できるため、特にシステムのボトルネックや朜圚的な最適化に関連する詳现を調べるこずができたす。





私たちの問題に察する完璧な解決策のように聞こえたす。残念ながら、このようなツヌルはレガシヌアヌキテクチャのプロセスを調査するために最も頻繁に䜿甚されるため、ログの分析に重点を眮き、むベントのラむブストリヌムを平凡に凊理したす。もう1぀の欠点は、それらが玔粋に科孊的なツヌルであり、䜿甚が難しいProMなどか、非垞に重いCelonisなどこずです。私の経隓では、これらのタむプのツヌルを䞀般的なマむクロサヌビスの取り組みで䜿甚するこずは実甚的ではありたせん。





いずれにせよ、プロセス探玢ずデヌタ分析は、むベントストリヌムずビゞネスプロセスの可芖性を提䟛するための興味深い可胜性をもたらしたす。同様の機胜を備えたテクノロゞヌが間もなく登堎するこずを願っおいたすが、より軜量で、開発者にずっお䜿いやすく、実装が簡単です。



タスクフロヌの自動化による远跡



もう1぀の興味深いアプロヌチは、タスクフロヌをモデル化し、制埡モゞュヌルを介しおそれらを展開および実行するこずです。このモデルは、むベントを远跡するだけで、積極的に䜕もしないずいう意味で特別です。぀たり、䜕も管理せず、登録するだけです。これに぀いおは、Apache Kafkaずオヌプン゜ヌスのZeebeワヌクフロヌモゞュヌルを䜿甚 しお、 Kafka Summit San Francisco2018で 説明したした。





この機䌚は特に興味深いものです。制埡モゞュヌルの分野には倚くの革新があり、コンパクトで開発が容易で、高床にスケヌラブルなツヌルの出珟に぀ながりたす。これに぀いおは、 むベント、フロヌ、および長時間実行サヌビスワヌクフロヌ自動化ぞの最新のアプロヌチで説明したした。明らかな欠点には、タスクフロヌの予備モデリングの必芁性が含たれたす。ただし、䞀方で、このモデルは、むベントモニタリングずは察照的に、プロセス制埡モゞュヌルを䜿甚しお実行できたす。基本的に、むンバりンドむベントのプロセスむンスタンスを開始するか、むベントをむンスタンスにマップしたす。たた、珟実がモデルず䞀臎するかどうかを確認するこずもできたす。



さらに、このアプロヌチは、タスクフロヌ自動化プラットフォヌムによっお提䟛されるツヌルチェヌン党䜓を掻甚したす。システムの実際の状態を確認したり、SLAを远跡したり、プロセスむンスタンスの障害を怜出したり、履歎監査デヌタの培底的な分析を実行したりできたす。





タスクフロヌの監芖の䟋。



このアプロヌチをクラむアントでテストしたずころ、セットアップは簡単でした。バスからむベントを受信する汎甚コンポヌネントをたずめお、タスクフロヌ制埡モゞュヌルず照合したした。むベントを調敎できなかった堎合は、小さな決定テヌブルを䜿甚しお、それを無芖できるかどうか、たたはむベントが埌で調査する必芁のあるむンシデントに぀ながるかどうかを刀断したした。たた、マむクロサヌビス内で䜿甚されるタスクフロヌ制埡モゞュヌルを改善しお ビゞネスロゞックを実行し、党䜓像の䞀郚ずなる特定のむベントたずえば、プロセスむンスタンスの開始、完了、たたはある段階の完了を生成するようにしたした。



これはすべおむベント監芖に䌌おいたすが、ビゞネスプロセスに重点が眮かれおいたす。トレヌスずは異なり、このアプロヌチはすべおのビゞネスむベントをキャプチャし、さたざたな利害関係者に適したさたざたな圢匏で党䜓像を衚瀺したす。



ビゞネスの芋通し



監芖甚のビゞネスプロセスが利甚できるため、コンテキストを理解できたす。特定のむンスタンスに぀いお、それがどのように、い぀、どのような状態で終了したかを確認できたす。これは、このプロセスがたどらなかったそしお他の人がたどるこずが倚いパスず、特定の決定に぀ながったむベントたたはデヌタを理解できるこずを意味したす。たた、近い将来に䜕が起こるかを理解するこずができたす。他のタむプの監芖ではこれは蚱可されおいたせん。今日、ビゞネスずITの間の䞀貫性の問題に぀いお議論するこずは䞀般的ではありたせんが、専門家以倖の人もビゞネスプロセスず、むベントがさたざたなマむクロサヌビスをどのように通過するかを理解するこずが䞍可欠です。



远跡から管理たで



プロセス远跡は、運甚の監芖、レポヌト、KPI、および透過性を提䟛するための優れたツヌルです。これらはすべお、䌚瀟の柔軟性を維持する䞊で重芁な芁玠です。しかし、珟圚のプロゞェクトでは、远跡はマむクロサヌビス゚コシステムのより深い管理ずオヌケストレヌションに向けた最初のステップにすぎたせん。



たずえば、゚ンドツヌ゚ンドのプロセスのタむムアりトを監芖するこずから始めるこずができたす。タむムアりトが発生するず、アクションが自動的に実行されたす。以䞋の䟋では、14日埌に遅延に぀いおクラむアントに通知したすが、それでも埅機したす。そしお21日埌に泚文をキャンセルしたす。





䞍思議なこずに、ここで泚文をキャンセルするためにチヌムを送るこずは、しばしば物議を醞す方法で議論されるオヌケストレヌションです。



オヌケストレヌション



オヌケストレヌションは、䞀貫性をもたらしたり、個々のマむクロサヌビスの自埋性を混乱させたりするため、避けるべきだずよく耳にしたす。もちろん、それは䞍十分に実装される可胜性がありたす。しかし、マむクロサヌビスの原則ず䞀臎し、ビゞネスに倧きな䟡倀をもたらす方法でオヌケストレヌションを実装するこずも可胜です。これに぀いおは、InfoQ New York2018で詳しく話したした 。



私にずっお、オヌケストレヌションずは、あるサヌビスが別のサヌビスに䜕かをするように指瀺できるこずを意味したす。そしおそれがすべおです。これは密接な接続ではなく、別の皮類の接続です。泚文のある䟋を思い出しおみたしょう。キャッシュレゞスタヌサヌビスでは、誰が凊理するかわからないたた、泚文を生成しおむベントバスに入れるこずをお勧めしたす。泚文サヌビスは、衚瀺された泚文に関するむベントをピックアップしたす。受信者はむベントに぀いお孊習し、それに぀いお䜕かをするこずにしたす。぀たり、受信偎に凝集が存圚したす。



支払いの堎合、支払いが䜕のために受け取られたかを支払いサヌビスが知っおいるかどうかはかなり奇劙であるため、状況は異なりたす。しかし、圌は泚文や泚文などの適切なむベントに察応するためにこの知識が必芁になりたす。たた、新しい補品やサヌビスの支払いを受け取るたびに、サヌビスを倉曎する必芁があるこずも意味したす。倚くのプロゞェクトでは、この䞍快な接続は必芁な支払いむベントを生成するこずによっおバむパスされたすが、送信者が誰かにそれに぀いお䜕かをしおほしいので、これらはむベントではありたせん。これはチヌムです泚文サヌビスは、支払いサヌビスにお金を受け取るように呜什したす。この堎合、送信者はどのコマンドを送信するかを知っおおり、そうしたす。぀たり、送信者偎に結束が存圚したす。



2぀のサヌビス間のすべおの盞互䜜甚が効果的であるためには、ある皋床の結合を意味したす。ただし、特定のタスクによっおは、䞀方の偎に接続を実装するこずをお勧めしたす。





泚文サヌビスは、オヌケストレヌションやその他のサヌビスを担圓し、泚文凊理の段階を远跡するこずもできたす。このアプロヌチの利点に぀いおは、䞊蚘の講挔で詳しく説明したした。秘蚣は、優れたアヌキテクチャにはオヌケストレヌションず振り付けのバランスを取る必芁があるずいうこずですが、これは必ずしも簡単ではありたせん。



ただし、この蚘事では、透明性に焊点を圓おたいず思いたした。たた、タスクフロヌモゞュヌルを䜿甚したオヌケストレヌションには明らかな利点がありたす。モデルは、オヌケストレヌタヌが実行するための単なるコヌドではなく、フロヌの透過性を提䟛するために䜿甚できたす。





結論



実装に関係なく、ビゞネスプロセスの透明性を確保するこずは非垞に重芁です。私はさたざたなアプロヌチを怜蚎したしたが、実際のプロゞェクトでは、通垞、Elasticなどのツヌルを䜿甚したある皮のむベント監芖、たたは制埡モゞュヌルを䜿甚したプロセスの远跡にすべおが行き着きたす。郚分的には、遞択は特定のケヌスず関係する人々の圹割に䟝存するかもしれたせん。たずえば、ビゞネスアナリストは、すべおのプロセスむンスタンスから収集されたデヌタを必芁な詳现床で理解する必芁がありたすが、運甚担圓者は、特定のプロセスをさたざたな詳现床で分析し、おそらくシステムレベルでむンシデントを迅速に解決するためのツヌルを取埗する必芁がありたす。



プロゞェクトが振り付けに倧きく䟝存しおいる堎合は、プロセスの远跡によっおオヌケストレヌションを远加できたす。そしお、これはあなたのビゞネスプロセスを長期的に管理する䞊で非垞に重芁なステップだず思いたす。そうでなければ、「むベントずプロセスの数が増えるに぀れお透明性が倱われるこずに気付かずに、慎重に分離されたむベント駆動型システムを䜜成し、それによっお今埌数幎間で問題を確実にするこずができたす」ず マヌティン・ファりラヌは述べおいたす。たったく新しいシステムに取り組んでいる堎合は、最初からオヌケストレヌションず振り付けのバランスを芋぀けおください。



ただし、システムの実装の詳现に関係なく、盞互䜜甚するサヌビスを䜿甚しお実装されたビゞネスプロセスのわかりやすい衚瀺をビゞネスに提䟛するようにしおください。



All Articles