Mulesoft Anypoint って何? どんなサービス? 既存のサービスと比較しながら
最近ちまちまと触り始めたMuleSoft Anypoint。
去年Salesforceが買収したことで、日本でも少しづつ認知度があがってきたとは思いますが、まだまだ日本語の情報は少なく、取っつきづらさがあります。
ただ、ちょうど先週MuleSoft Meetupに参加して、自分なりにも色々触ってみて、これはナカナカなるほどなー、という製品だったので、個人的な調べ物の記録として、書き留めておきたいと思います。
【抄訳】セールスフォース・ドットコム、MuleSoft 買収の最終契約を締結 - セールスフォース・ドットコム
MuleSoft Anypointとは何か?
すごく言葉に悩むんですが、私が一言で表現するなら、「企業内のAPIとAPI接点をフルマネージメントするためのソフトウェア・プラットフォーム」かな、と思います。
様々なプレスリリースの文面、フローを描いているような画面のイメージから、データインテグレーション、ETL/EAIの文脈の製品が強いのかな? という印象がありますが、できることのポイントとしては、以下のように絞られると思います。
・APIの設計・開発・管理
・各API・マイクロサービスの連携・データインテグレーション
基本的な使い方
基本的には、以下のようなAPI Desinger画面を通じて、RAMLやOpenAPIでAPIを設計します。ここでAPIのテストも実施できますし、そのままMockとして公開することもできます。
次に、そのAPIの中身(例えばProductsのエンドポイントにGETが来たら、データベースこのレコードを取り出して、JSONにして返す等)を以下のようなフローを描くような画面で実装していくことができます。
そして、作成したAPIとフローの部分をデプロイし、APIとして公開、必要に応じて認証部分を加えたり、アクセス制御、監視・管理することができます。
つまるところ?
もし、既存のわかりやすい切り口で、ざっと言い切ってしまえば、「API Management + Data Integrationのためのプラットフォーム」ですが、そこで恐らくこのMuleSoft Anypointを理解する上で以下の疑問が出てきます。
・既存のAPI Management Tool / Service とはどう違うの?
・既存のDataIntegration Tool / Service (ETL/EAI )とどう違うの?
既存のAPI Management Tool / Service との違い
例えば、個人的に比較しやすい、Microsoft Azure周りの文脈で解釈すれば「Azure API Management」
このサービスはトップページでも紹介されている通り「API を数分で発行、管理、保護、および分析」、すでに公開・開発ないしこれから開発する不特定多数のAPIをまとめあげ、その入口を管理・保護することが主目的だと思います。(ところどころで、API ゲートウェイという言い方をしていますし、プロキシ的役割が強いかなと)
それに対して、MuleSoft Anypoint は、RAML/OpenAPIといったAPI Spec の言語を通じて、APIをデザインし、そのAPIのデプロイから、実際のデータ(データベースでもSalesforceとかのSaaSでも)のCRUDを行う実装までを一つのプラットフォームでサポートしています。
既存のDataIntegration Tool / Service (ETL/EAI )との違い
では、DataIntegration、例えばIFTTT、もしくはEnterprise向けでいくとMS Flowなどはどうでしょうか。
それぞれ、各種API・SaaSを「繋ぐ」ということへ基本的に注力しています。そこはAPIを作るという考え方は基本的には無く、すでに存在しているサービスを繋ぐことがメインです。
すでにお伝えした通り、MuleSoft AnypointもDataIntegration的な側面があり、各種サービスを繋ぐ・フローを描くことができます。
ただ、どちらかと言えば、Anypointは基本的に、「入り口を作る(APIを作る)」その上で、その入口から来たリクエストを様々なサービスへ「繋ぐ」ということに主眼を置いているように見えます。
MS FlowでもHTTP Listenerなどのモジュールを通じて、Web hookをリッスンすることもできますが、APIを作り出すわけではありません。
こうして見ていくと、APIを作り、管理するためのプラットフォームでもあるし、API同士をつなぐためのプラットフォームでもある、というところが見えてくるかなと思います。
恐らく端的に、このMuleSoft Anypointを表しているのが、Web Siteの「What we do」で紹介されている以下の画像かなと思います。
最近クックパッドの情報システム部門がどのように社内システムを改革していったのか? という記事が公開されていましたが、
以下のコメントが結構このMuleSoft Anypointの必要性や企業内のシステム連携・API連携のあり方を示しているかなと思います。
例えば、システム連携の点で「APIがない」「シングルサインオンできない」システムは選定候補から除外した。当然ながら、「APIがない」というのは、他のシステムと連携できないからだ。
「日本ではよくパートナーやベンダーの営業さんが『システム連携できます』と言うが、『本当にできますか?』と聞くと、『いや、CSVです』とかいう話になる。それはシステム連携とは言わないし、『シングルサインオンって何ですか?』っていう状況になることもある」(中野氏)
おそらくFlowやIFTTT的なもの、もしくはデータインテグレーションに注力するAsteriaやDataSpiderといった文脈だけで、Anypointを捉えようとすると失敗します。
InternalなAPI・ExternalなAPI、各種サービスのAPIもまとめて開発・管理・統合しようとしているのが MuleSoft Anypoint なのかなと思います。
Mulesfot Anypoint の全体像
Mulesfot Anypointは結構大きなモジュールで構成されているので、ざっくりと各モジュールを確認したいと思います。
Anypoint Platform
クラウドインテグレーション & APIマネジメントスイートとして、一連の製品・モジュールを指すようです。
https://speakerdeck.com/mokamoto/MuleSofttoAnypoint-platform?slide=11
Desing Center
API・データインテグレーション開発を行う上でメインとなる機能です。大きくWeb版とスタンドアローン版に分かれていますが、ベースの機能・アーキテクチャは変わらず、まだできることの幅はスタンドアローンの方が広いかな? といったところです。
どちらもRAML/OpenAPIを用いたAPIの設計とそのAPIの実装・API連携部分を開発することができます。
Web版(Desing Center)
スタンドアローン版(Anypoint Studio)(Windows・Linux・Mac版がある)Java 8が必要(1.3GBあるので要注意・Eclipsベースで作られている)
Mule Runtime Engine
作成したフローを動かすためのエンジン、もしくはコネクタを作成するためのランタイムです。
Javaで開発されており、オンプレミス・ローカルホストで動作させることも可能。(ここが結構ポイントかもですね)
なので、最終的にAzureやAWSのIaaSにホスティングすることもできます。
Anypoint Exchange
各種SaaSなどの接続するためのコネクタ、テンプレートの提供を行うWebサイトのことを指します。
SalesforceやDynamics、各種クラウドサービスに接続するコネクタが公開・提供されています。
また、役割としては自身で作成したAPIの公開基盤も兼ねているみたいです。
Management Center
作成したアプリケーションの監視やテストなどを行うための環境です。
以下の要素から構成されるとのこと。細かくは割愛。
「Access Management」「API Manager」「Runtime Manager」「Data Gateway」「Visualizer」
MuleSoft
ちなみに最後であれなんですが、MuleSoftは会社名です。はじめすごく勘違いしてしまっていたのだけど、ただの会社名。ソフトの名前がMuleSoftではないです。
Anypointを理解する上で役立つ資料
やっぱりQuickStartをやるのは、一番手っ取り早いです。そして、QuickStartの目的は「APIを作ること」に絞るとおそらくいいかなと思います。
また、日本でMeetupも開催されており、そのスライドは大変参考になります。
最後に
かなりざっくりとしたまとめになってしまいましたが、次の記事では実際にAPIづくりとデータインテグレーションの部分を触って、どんな製品か確認していきたいと思います。