SlideShare a Scribd company logo
1 of 18
Download to read offline
Copyright (C) 2018 OGIS-RI All rights reserved.
株式会社オージス総研
齋藤伸也
Mule Runtime のアーキテクチャコンセプト紹介
~EIP、Conversation Patterns、SEDA、Non-blocking~
Copyright (C) 2018 OGIS-RI All rights reserved.
ご注意
本スライドの記述は MuleSoft, Inc. の公
式見解ではありません。
2
Copyright (C) 2018 OGIS-RI All rights reserved.
自己紹介
• 齋藤伸也 (Saito_Shinya@ogis-ri.co.jp)
• 株式会社オージス総研
– クラウドインテグレーションサービス部所属
• インテグレーションアーキテクト / APIテクニカルコンサルタント
• Mule 2.x 時代(約10年前)からMuleを利用したシステム連携や
API構築プロジェクトに参画
Copyright (C) 2018 OGIS-RI All rights reserved.
今日の話
• システム連携のパターン
– Enterprise Integration Patterns
– Conversation Patterns
• Mule engine の処理モデル
– Muleのスレッドモデル(Mule3)とNon-blocking IO(Mule4)
– Muleのチューニング(Mule3)とセルフチューニング(Mule4)
Copyright (C) 2018 OGIS-RI All rights reserved.
システム連携は簡単?
システムA システムB
システム連携は線で
結べばOK
Copyright (C) 2018 OGIS-RI All rights reserved.
システム連携は簡単・・・じゃない
• 同期/非同期、リアルタイム/バッチ、1:1/N:1/N:N
• データサイズ、連携頻度
• プロトコル、データ形式
• 経路の信頼性、エラー処理
• ・・・・などなど
システムA システムB
Copyright (C) 2018 OGIS-RI All rights reserved.
Enterprise Integration Patterns
• 著者:Gregor Hohpe氏 and Bobby Woolf氏. 2005
• 企業におけるシステム連携のパターンを65種類網羅
したパターン本
• Mule、Camel、Spring Integrationなど様々な連携ミドルウェアがリ
ファレンスしている
• メリット
– システム連携の共通言語、連携アーキテクチャの議論の出発点
http://www.enterpriseintegrationpatterns.com より
Copyright (C) 2018 OGIS-RI All rights reserved.
EIPとMule
https://docs.mulesoft.com/mule-user-guide/v/3.9/understanding-enterprise-integration-patterns-using-mule より
Pattern Mapping to a Mule Object
File Transfer File Transport
Shared Database JDBC Transport
Messaging Mule is all about Messaging
Message Channel Mule provides a message channel that
connects the message processors in a flow.
Pipes and Filters A Flow implements a pipe and filter
architecture
Message Router Message Routers
Message Translator Message Transformer
Message Endpoint Inbound & Outbound Endpoints
Pattern Mapping to a Mule Object
Point-to-Point Channel The default channel within a flow.
Message Bus Mule is a message bus.
Content-Based Router Choice
Message Filter Filters
Recipient List Recipient List
Splitter Collection Splitter, Message Chunk Splitter &
Plain Splitter
Aggregator Collection Aggregator, Message Chunk
Aggregator & Custom Aggregator
Resequencer Resequencer
Idempotent Receiver Idempotent Message Filter
Copyright (C) 2018 OGIS-RI All rights reserved.
Conversation Patterns
• EIP本の第2弾
– Gregor Hohpe氏が執筆中(2019.1.19に発売予定? Amazonより)
• EIPは、メッセージとそれが通るコンポーネントに着目していたが、
Conversation Patternsでは時間の経過に伴うメッセージの流れ相互作用に着目
http://www.enterpriseintegrationpatterns.com/patterns/conversation/ より
Copyright (C) 2018 OGIS-RI All rights reserved.
基本的な会話のパターン
• システム連携の相互通信を検討する際のパターン
• REST APIの設計時にも役に立つ考え方
Pattern 概要
Fire-and-Forget 発信者はメッセージを送信し、受信者からの応答は期待しません
Asynchronous Request-Response 発信者と受信者はリクエスト-レスポンスを非同期で行います。リク
エストが送信された順序とは異なる順序で応答が到着する可能性が
あります
Request-Response with Retry Asynchronous Request-Response において、発信者と受信者の両方を
重複しないようにして重複したメッセージを処理できるようにする
Polling 受信者が即時に応答ができない場合、発信者が結果を要求するリク
エストを発行する
Subscribe-Notify Subscriber は Providerが提供するデータへの関心を示すメッセージを
送信することで購読します。その後、Providerは通知メッセージを
Subscriberに送り続けます
Quick Acknowledgment 受信者はリクエストを処理するのに時間がかかる場合でも、
Acknowledgmentメッセージを返信し、後でリクエストの結果を返信
する
Copyright (C) 2018 OGIS-RI All rights reserved.
一貫性に関するパターン
• API-let ConnectivityやApplication Networkを実現する上で重要なREST APIのエラー
とリトライ、べき等性に関連するパターン(齋藤理解)
• 一部のパターンはHohpe氏のブログ記事「スターバックスは2フェーズコミットを
使わない(Starbucks Does Not Use Two-Phase Commit)」に実例が掲載されている
Pattern 概要
Ignore Error エラーを無視する。エラー処理のコストが処理全体のコスト
に見合わないケース
Compensating Action 補償行為。エラーにより不整合が発生した場合、元に戻す。
処理を行うことで一貫性を担保する
Tentative Operation 仮の操作を実行し、その後確認を行うことで処理を完結させ
る
Coordinated Agreement 仲介者が各参加者の状況・回答を確認し、その結果を判断し。
参加者と共有する
Copyright (C) 2018 OGIS-RI All rights reserved.
Mule のアーキテクチャコンセプト
イベントドリブンとパイプ&フィルタ
• Mule は様々なシステム連携に対応するために抽象化された処理モデルを
採用している
• イベントドリブンアーキテクチャとパイプ&フィルタモデルである
イベント
(メッセージ)
Flowの処理モデル
データ
変換
API
呼出
DB
アクセス イベント
(メッセージ)
API
DB
Copyright (C) 2018 OGIS-RI All rights reserved.
Mule3のスレッドモデル
• 同期の場合は、すべてが同じスレッドで動作する
• 非同期の場合は、RECIVER、Flow、DESPACHTERが別々のスレッドで動作する
https://docs.mulesoft.com/mule-user-guide/v/3.9/tuning-performance
Copyright (C) 2018 OGIS-RI All rights reserved.
Mule4のNon-blocking IO
• I/O(HTTPリクエストなど)の処理を待たずに別の処理を開始することができる
• Mule 3.7 からHTTPなど一部のConnectorで適応可能だった
• 基本的にすべてのFlowでNon-blocking IO方式が適用される
Copyright (C) 2018 OGIS-RI All rights reserved.
Mule3におけるチューニング
• Muleのパフォーマンスチューニングは、スレッドに関するパラメータの調整になる
– maxThreadsActive
– maxThreadsIdle
• 以下の要素を考慮しなければならない
– Flowのスレッドパーン
– 利用している Connectorの性質
Copyright (C) 2018 OGIS-RI All rights reserved.
Mule4のセルフチューニングとは
• CPUリソース状況を確認しながら処理のスケジュール
• Muleの各コンポーネントに ProcessingTypeが割与えられている
– CPU INTENSIVE
• 計算処理や変換処理など
– CPU LITE
• ルーティング、フィルタリング
non-blocking IOなど
– IO_RW
• ストリーミングデータ処理 など
Mule 4.1.2 org.mule.runtime.core.api.processor.ReactiveProcessor より
https://www.mulesoft.com/whitepaper/api/what-is-new-mule-4 より
Copyright (C) 2018 OGIS-RI All rights reserved.
で、結局Mule4になったら何が変わるのか?
• 新しくMule4を使う人
– 非常に難しいスレッド回りの概念やチューニングからサヨナラで
きて Happy!
• Mule3からマイグレーションする人
– (おそらく)Muleが利用するリソース(CPU、メモリ)の使い方が変わ
るので注意
• 処理によるがMule(3まで)は高負荷時メモリの消費が多くなる(スレッドを多く生成するため)が、
non-blockingになったことによりメモリの消費が少なくなり、CPUの負荷が上がると考えられる
• セルフチューニングにより、どこまで最適化されるかは実際のFlowを高負荷環境で動作させな
いとわからないため要検証
Copyright (C) 2018 OGIS-RI All rights reserved.
Thank you 

More Related Content

What's hot

The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発Amazon Web Services Japan
 
Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門tsukasamannen
 
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / GlacierAmazon Web Services Japan
 
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続Amazon Web Services Japan
 
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPNAmazon Web Services Japan
 
DeNA の AWS アカウント管理とセキュリティ監査自動化
DeNA の AWS アカウント管理とセキュリティ監査自動化DeNA の AWS アカウント管理とセキュリティ監査自動化
DeNA の AWS アカウント管理とセキュリティ監査自動化DeNA
 
20210317 AWS Black Belt Online Seminar Amazon MQ
20210317 AWS Black Belt Online Seminar Amazon MQ 20210317 AWS Black Belt Online Seminar Amazon MQ
20210317 AWS Black Belt Online Seminar Amazon MQ Amazon Web Services Japan
 
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipelineAmazon Web Services Japan
 
TypeScriptでCLIアプリケーション開発
TypeScriptでCLIアプリケーション開発TypeScriptでCLIアプリケーション開発
TypeScriptでCLIアプリケーション開発Shuto Suzuki
 
Istioサービスメッシュ入門
Istioサービスメッシュ入門Istioサービスメッシュ入門
Istioサービスメッシュ入門Yoichi Kawasaki
 
Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義)
Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義)Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義)
Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義)Amazon Web Services Japan
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
Microsoft Azure Storage 概要
Microsoft Azure Storage 概要Microsoft Azure Storage 概要
Microsoft Azure Storage 概要Takeshi Fukuhara
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テストTakahiro Moteki
 
20190806 AWS Black Belt Online Seminar AWS Glue
20190806 AWS Black Belt Online Seminar AWS Glue20190806 AWS Black Belt Online Seminar AWS Glue
20190806 AWS Black Belt Online Seminar AWS GlueAmazon Web Services Japan
 
CloudFormation/SAMのススメ
CloudFormation/SAMのススメCloudFormation/SAMのススメ
CloudFormation/SAMのススメEiji KOMINAMI
 

What's hot (20)

The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
 
AWS CLIでAssumeRole
AWS CLIでAssumeRoleAWS CLIでAssumeRole
AWS CLIでAssumeRole
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門
 
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
 
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
 
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
 
DeNA の AWS アカウント管理とセキュリティ監査自動化
DeNA の AWS アカウント管理とセキュリティ監査自動化DeNA の AWS アカウント管理とセキュリティ監査自動化
DeNA の AWS アカウント管理とセキュリティ監査自動化
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
20210317 AWS Black Belt Online Seminar Amazon MQ
20210317 AWS Black Belt Online Seminar Amazon MQ 20210317 AWS Black Belt Online Seminar Amazon MQ
20210317 AWS Black Belt Online Seminar Amazon MQ
 
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
 
AWSの課金体系
AWSの課金体系AWSの課金体系
AWSの課金体系
 
TypeScriptでCLIアプリケーション開発
TypeScriptでCLIアプリケーション開発TypeScriptでCLIアプリケーション開発
TypeScriptでCLIアプリケーション開発
 
Istioサービスメッシュ入門
Istioサービスメッシュ入門Istioサービスメッシュ入門
Istioサービスメッシュ入門
 
Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義)
Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義)Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義)
Amazon Elastic MapReduce with Hive/Presto ハンズオン(講義)
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
Microsoft Azure Storage 概要
Microsoft Azure Storage 概要Microsoft Azure Storage 概要
Microsoft Azure Storage 概要
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト
 
20190806 AWS Black Belt Online Seminar AWS Glue
20190806 AWS Black Belt Online Seminar AWS Glue20190806 AWS Black Belt Online Seminar AWS Glue
20190806 AWS Black Belt Online Seminar AWS Glue
 
CloudFormation/SAMのススメ
CloudFormation/SAMのススメCloudFormation/SAMのススメ
CloudFormation/SAMのススメ
 

Similar to Mule Runtime のアーキテクチャコンセプト紹介

DataEngConf NYC’18 セッションサマリー #2
DataEngConf NYC’18 セッションサマリー #2DataEngConf NYC’18 セッションサマリー #2
DataEngConf NYC’18 セッションサマリー #2gree_tech
 
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張典子 松本
 
Sumo Logic活用事例とその運用
Sumo Logic活用事例とその運用Sumo Logic活用事例とその運用
Sumo Logic活用事例とその運用gree_tech
 
Machine learning 15min TensorFlow hub
Machine learning 15min TensorFlow hubMachine learning 15min TensorFlow hub
Machine learning 15min TensorFlow hubJunya Kamura
 
Wg for ai_dev_ops_20180713
Wg for ai_dev_ops_20180713Wg for ai_dev_ops_20180713
Wg for ai_dev_ops_20180713Yutaka Terasawa
 
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋Ayumu Aizawa
 
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotJazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotNobuyuki Matsui
 
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))HironoriTAKEUCHI1
 
グリーにおけるSumo Logic活用事例
グリーにおけるSumo Logic活用事例グリーにおけるSumo Logic活用事例
グリーにおけるSumo Logic活用事例gree_tech
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
アジャイルにモデリングは必要か
アジャイルにモデリングは必要かアジャイルにモデリングは必要か
アジャイルにモデリングは必要かHiromasa Oka
 
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 についてNatsuki Yamanaka
 
AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介ssuser39314d
 
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springkounan13
 
JTF2018 FIWARE x robot x IoT
JTF2018 FIWARE x robot x IoTJTF2018 FIWARE x robot x IoT
JTF2018 FIWARE x robot x IoTNobuyuki Matsui
 
Hadoop conferencejapan2011
Hadoop conferencejapan2011Hadoop conferencejapan2011
Hadoop conferencejapan2011Ichiro Fukuda
 
IntalioのChemistry Of ProcessコンセプトとIntalio|BPPの動向021609
IntalioのChemistry Of ProcessコンセプトとIntalio|BPPの動向021609IntalioのChemistry Of ProcessコンセプトとIntalio|BPPの動向021609
IntalioのChemistry Of ProcessコンセプトとIntalio|BPPの動向021609Tomoaki Sawada
 
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonightAmazon Web Services Japan
 
2018年12月15日 AITC女子会 会話の記録と分析
2018年12月15日 AITC女子会 会話の記録と分析2018年12月15日 AITC女子会 会話の記録と分析
2018年12月15日 AITC女子会 会話の記録と分析aitc_jp
 

Similar to Mule Runtime のアーキテクチャコンセプト紹介 (20)

DataEngConf NYC’18 セッションサマリー #2
DataEngConf NYC’18 セッションサマリー #2DataEngConf NYC’18 セッションサマリー #2
DataEngConf NYC’18 セッションサマリー #2
 
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
 
Sumo Logic活用事例とその運用
Sumo Logic活用事例とその運用Sumo Logic活用事例とその運用
Sumo Logic活用事例とその運用
 
Machine learning 15min TensorFlow hub
Machine learning 15min TensorFlow hubMachine learning 15min TensorFlow hub
Machine learning 15min TensorFlow hub
 
Wg for ai_dev_ops_20180713
Wg for ai_dev_ops_20180713Wg for ai_dev_ops_20180713
Wg for ai_dev_ops_20180713
 
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
 
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotJazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & Robot
 
ログについて改めて考えてみた
ログについて改めて考えてみたログについて改めて考えてみた
ログについて改めて考えてみた
 
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
 
グリーにおけるSumo Logic活用事例
グリーにおけるSumo Logic活用事例グリーにおけるSumo Logic活用事例
グリーにおけるSumo Logic活用事例
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
アジャイルにモデリングは必要か
アジャイルにモデリングは必要かアジャイルにモデリングは必要か
アジャイルにモデリングは必要か
 
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
 
AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介
 
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
 
JTF2018 FIWARE x robot x IoT
JTF2018 FIWARE x robot x IoTJTF2018 FIWARE x robot x IoT
JTF2018 FIWARE x robot x IoT
 
Hadoop conferencejapan2011
Hadoop conferencejapan2011Hadoop conferencejapan2011
Hadoop conferencejapan2011
 
IntalioのChemistry Of ProcessコンセプトとIntalio|BPPの動向021609
IntalioのChemistry Of ProcessコンセプトとIntalio|BPPの動向021609IntalioのChemistry Of ProcessコンセプトとIntalio|BPPの動向021609
IntalioのChemistry Of ProcessコンセプトとIntalio|BPPの動向021609
 
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
 
2018年12月15日 AITC女子会 会話の記録と分析
2018年12月15日 AITC女子会 会話の記録と分析2018年12月15日 AITC女子会 会話の記録と分析
2018年12月15日 AITC女子会 会話の記録と分析
 

Recently uploaded

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Recently uploaded (9)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

Mule Runtime のアーキテクチャコンセプト紹介

  • 1. Copyright (C) 2018 OGIS-RI All rights reserved. 株式会社オージス総研 齋藤伸也 Mule Runtime のアーキテクチャコンセプト紹介 ~EIP、Conversation Patterns、SEDA、Non-blocking~
  • 2. Copyright (C) 2018 OGIS-RI All rights reserved. ご注意 本スライドの記述は MuleSoft, Inc. の公 式見解ではありません。 2
  • 3. Copyright (C) 2018 OGIS-RI All rights reserved. 自己紹介 • 齋藤伸也 (Saito_Shinya@ogis-ri.co.jp) • 株式会社オージス総研 – クラウドインテグレーションサービス部所属 • インテグレーションアーキテクト / APIテクニカルコンサルタント • Mule 2.x 時代(約10年前)からMuleを利用したシステム連携や API構築プロジェクトに参画
  • 4. Copyright (C) 2018 OGIS-RI All rights reserved. 今日の話 • システム連携のパターン – Enterprise Integration Patterns – Conversation Patterns • Mule engine の処理モデル – Muleのスレッドモデル(Mule3)とNon-blocking IO(Mule4) – Muleのチューニング(Mule3)とセルフチューニング(Mule4)
  • 5. Copyright (C) 2018 OGIS-RI All rights reserved. システム連携は簡単? システムA システムB システム連携は線で 結べばOK
  • 6. Copyright (C) 2018 OGIS-RI All rights reserved. システム連携は簡単・・・じゃない • 同期/非同期、リアルタイム/バッチ、1:1/N:1/N:N • データサイズ、連携頻度 • プロトコル、データ形式 • 経路の信頼性、エラー処理 • ・・・・などなど システムA システムB
  • 7. Copyright (C) 2018 OGIS-RI All rights reserved. Enterprise Integration Patterns • 著者:Gregor Hohpe氏 and Bobby Woolf氏. 2005 • 企業におけるシステム連携のパターンを65種類網羅 したパターン本 • Mule、Camel、Spring Integrationなど様々な連携ミドルウェアがリ ファレンスしている • メリット – システム連携の共通言語、連携アーキテクチャの議論の出発点 http://www.enterpriseintegrationpatterns.com より
  • 8. Copyright (C) 2018 OGIS-RI All rights reserved. EIPとMule https://docs.mulesoft.com/mule-user-guide/v/3.9/understanding-enterprise-integration-patterns-using-mule より Pattern Mapping to a Mule Object File Transfer File Transport Shared Database JDBC Transport Messaging Mule is all about Messaging Message Channel Mule provides a message channel that connects the message processors in a flow. Pipes and Filters A Flow implements a pipe and filter architecture Message Router Message Routers Message Translator Message Transformer Message Endpoint Inbound & Outbound Endpoints Pattern Mapping to a Mule Object Point-to-Point Channel The default channel within a flow. Message Bus Mule is a message bus. Content-Based Router Choice Message Filter Filters Recipient List Recipient List Splitter Collection Splitter, Message Chunk Splitter & Plain Splitter Aggregator Collection Aggregator, Message Chunk Aggregator & Custom Aggregator Resequencer Resequencer Idempotent Receiver Idempotent Message Filter
  • 9. Copyright (C) 2018 OGIS-RI All rights reserved. Conversation Patterns • EIP本の第2弾 – Gregor Hohpe氏が執筆中(2019.1.19に発売予定? Amazonより) • EIPは、メッセージとそれが通るコンポーネントに着目していたが、 Conversation Patternsでは時間の経過に伴うメッセージの流れ相互作用に着目 http://www.enterpriseintegrationpatterns.com/patterns/conversation/ より
  • 10. Copyright (C) 2018 OGIS-RI All rights reserved. 基本的な会話のパターン • システム連携の相互通信を検討する際のパターン • REST APIの設計時にも役に立つ考え方 Pattern 概要 Fire-and-Forget 発信者はメッセージを送信し、受信者からの応答は期待しません Asynchronous Request-Response 発信者と受信者はリクエスト-レスポンスを非同期で行います。リク エストが送信された順序とは異なる順序で応答が到着する可能性が あります Request-Response with Retry Asynchronous Request-Response において、発信者と受信者の両方を 重複しないようにして重複したメッセージを処理できるようにする Polling 受信者が即時に応答ができない場合、発信者が結果を要求するリク エストを発行する Subscribe-Notify Subscriber は Providerが提供するデータへの関心を示すメッセージを 送信することで購読します。その後、Providerは通知メッセージを Subscriberに送り続けます Quick Acknowledgment 受信者はリクエストを処理するのに時間がかかる場合でも、 Acknowledgmentメッセージを返信し、後でリクエストの結果を返信 する
  • 11. Copyright (C) 2018 OGIS-RI All rights reserved. 一貫性に関するパターン • API-let ConnectivityやApplication Networkを実現する上で重要なREST APIのエラー とリトライ、べき等性に関連するパターン(齋藤理解) • 一部のパターンはHohpe氏のブログ記事「スターバックスは2フェーズコミットを 使わない(Starbucks Does Not Use Two-Phase Commit)」に実例が掲載されている Pattern 概要 Ignore Error エラーを無視する。エラー処理のコストが処理全体のコスト に見合わないケース Compensating Action 補償行為。エラーにより不整合が発生した場合、元に戻す。 処理を行うことで一貫性を担保する Tentative Operation 仮の操作を実行し、その後確認を行うことで処理を完結させ る Coordinated Agreement 仲介者が各参加者の状況・回答を確認し、その結果を判断し。 参加者と共有する
  • 12. Copyright (C) 2018 OGIS-RI All rights reserved. Mule のアーキテクチャコンセプト イベントドリブンとパイプ&フィルタ • Mule は様々なシステム連携に対応するために抽象化された処理モデルを 採用している • イベントドリブンアーキテクチャとパイプ&フィルタモデルである イベント (メッセージ) Flowの処理モデル データ 変換 API 呼出 DB アクセス イベント (メッセージ) API DB
  • 13. Copyright (C) 2018 OGIS-RI All rights reserved. Mule3のスレッドモデル • 同期の場合は、すべてが同じスレッドで動作する • 非同期の場合は、RECIVER、Flow、DESPACHTERが別々のスレッドで動作する https://docs.mulesoft.com/mule-user-guide/v/3.9/tuning-performance
  • 14. Copyright (C) 2018 OGIS-RI All rights reserved. Mule4のNon-blocking IO • I/O(HTTPリクエストなど)の処理を待たずに別の処理を開始することができる • Mule 3.7 からHTTPなど一部のConnectorで適応可能だった • 基本的にすべてのFlowでNon-blocking IO方式が適用される
  • 15. Copyright (C) 2018 OGIS-RI All rights reserved. Mule3におけるチューニング • Muleのパフォーマンスチューニングは、スレッドに関するパラメータの調整になる – maxThreadsActive – maxThreadsIdle • 以下の要素を考慮しなければならない – Flowのスレッドパーン – 利用している Connectorの性質
  • 16. Copyright (C) 2018 OGIS-RI All rights reserved. Mule4のセルフチューニングとは • CPUリソース状況を確認しながら処理のスケジュール • Muleの各コンポーネントに ProcessingTypeが割与えられている – CPU INTENSIVE • 計算処理や変換処理など – CPU LITE • ルーティング、フィルタリング non-blocking IOなど – IO_RW • ストリーミングデータ処理 など Mule 4.1.2 org.mule.runtime.core.api.processor.ReactiveProcessor より https://www.mulesoft.com/whitepaper/api/what-is-new-mule-4 より
  • 17. Copyright (C) 2018 OGIS-RI All rights reserved. で、結局Mule4になったら何が変わるのか? • 新しくMule4を使う人 – 非常に難しいスレッド回りの概念やチューニングからサヨナラで きて Happy! • Mule3からマイグレーションする人 – (おそらく)Muleが利用するリソース(CPU、メモリ)の使い方が変わ るので注意 • 処理によるがMule(3まで)は高負荷時メモリの消費が多くなる(スレッドを多く生成するため)が、 non-blockingになったことによりメモリの消費が少なくなり、CPUの負荷が上がると考えられる • セルフチューニングにより、どこまで最適化されるかは実際のFlowを高負荷環境で動作させな いとわからないため要検証
  • 18. Copyright (C) 2018 OGIS-RI All rights reserved. Thank you 