Salesforce
MuleSoft
integration

MuleSoftのAnyPoint Platformを知る

2018年5月2日にSalesforceによって米MuleSoft社が買収されました が、同社のクラウドインテグレーションサービスAnyPoint Platformは、買収・統合後も単体製品として投資を続けていくことがアナウンスされています。そこで今後日本でも利用機会も増えるだろうAnyPoint Platformがどのような製品かについて概要をまとめてみました。

MuleSoft社とは

MuleSoftは2006年創業の米国サンフランシスコに本社を置く企業で、オープンソース ESB(Enterprise Service Bus)であるMuleの開発と、Muleに追加の機能やサポートを付加した商用版の提供、Muleをベースとしたクラウドインテグレーション&APIマネジメントサービスを提供しています。2018年現在で世界12ヶ国に1100人以上の従業員と、1200社以上の顧客を持っています(日本法人は無し)。

経営陣もIT業界で数々の実績を持つ面々で、創業者&CEOのGreg SchottはSpringFrameworkで有名なSpringSourceの元役員、共同創業者のRoss MasonはオープンソースESBであるMuleの作者です。またCTOのUri Saridは 元AptanaのCTOであり、RAML仕様の中心的人物です。

MuleSoftは以前よりMule ESBの商用版や、クラウド上のMule ESBのデプロイ環境であるCloudhub、外部サービスとの接続を簡単にするAPI ConnectorsやAPI Designerといった製品を提供してきましたが、2013年にそれらを統合したものをAnyPoint Platformとして発表しています。
そして前出の通り2018年5月にSalesforce.comに買収され、Salesforce Integration Cloudの一部となりました。

MuleSoft
https://www.mulesoft.com/

AnyPoint Platformの特徴

AnyPoint Platformは前出の通りクラウドインテグレーション & APIマネジメントスイートで、APIをRAMLやOASを使って設計し、クラウド上のEnterprise Service Busへ素早く設定・デプロイ・スケールさせるためのサービスです。
MuleSoftのWebサイトでは、AnyPoint Platformには以下のような特徴が挙げられています。

  • 素早い開発

    • 完全に統合されたシステム開発ライフサイクル(SDLC)とツールによって、APIデザインから実装、テストおよび統合を行えます。
  • あらゆるシステムと接続

    • アプリケーションのためにプリビルドされたコネクタ、SOAP or REST API、またはSDKを使ったカスタムコネクターによって、あらゆるデータソースと接続が可能
  • コラボレーションとセルフサービス

    • 企業内外に存在するIT資産を素早く共有することで、一般ユーザでも最適なリソースを自分自身で見つけることが可能となるため、素早く理解して統合プロジェクトの加速が可能になります。
  • ランタイム

    • リアルタイムにトランザクションを処理したり、数は9万のレコードをスケーラブルに処理するなど、柔軟性の高い高性能のエンジンを持ちます。
  • 可視性とコントロール

    • Anypoint Platformのすべての要素(API、インテグレション、トラフィック、SLAなど)を単一のインタフェースから監視、保護、管理できます。

ありがたいことにAnypoint Platformはクラウドサービスらしく30日の無料トライアルを用意しているので、実際に触って試してみたい方は誰でも環境を手に入れることができます。

AnyPoint Platform Signup
https://anypoint.mulesoft.com/login/#/signup

AnyPoint Platformの構成要素

ざっくりいうとAPI設計とインテグレーションが素早く簡単にできるという触れ込みのAnypoint Platformですが、では実際には何を提供しているでしょうか?AnyPoint Platformでは、インテグレーションを実施するランタイム環境と、APIやインテグレーションのフローを設定・管理するための機能が3つの存在します。一つ一つ見ていきます。

Mule Runtime Engine

Mule Runtime EngineはAnyPoint Platformの中核をなすテクノロジで、前出のオープンソースESBであるMuleをベースにした軽量かつハイスケールなJava製ESBです。Mule Runtime Engineイベントドリブンなリアルタイム処理とBatchによる一括処理の双方に対応しており、またAnyPoint Connector DevKitを利用してMule Runtimeへつなぐための独自のコネクターを開発・追加できます。Mule Runtime Engineは、クラウド以外にもスタンドアローンでも提供されており、自社のサーバにデプロイすることも可能です。またオープンソース版Muleももちろん自由にダウンロードして試すことができます。

Mule Runtime Download
https://www.mulesoft.com/lp/dl/mule-esb-enterprise

Mule Community Edition
https://github.com/mulesoft/mule

Design Center


Mule Runtime Engine上で動作する Mule Application(モジュール群、データフロー、データモデルなどをまとめた、Mule Runtimeにデプロイするためのアプリケーション) を作成・設計する際に利用するのがこのDesign Centerです。簡単なインテグレーションであればAnyPoint Platformが予め用意した豊富なコネクターを使って、GUI上で設定していくだけでアプリケーションの開発ができます。
出来上がったMule Applicationはスタンドアロン版で動かすためにダウンロードすることもできますし、そのままDesign CenterからCloudhubにデプロイしてすぐに利用することも可能です。

designcenter.png

また、Design Centerでは Mule Application の作成以外にも、API Designerという機能を使って、RAML/OASベースのAPI SpecificationやAPI Specificationの一部を共通化して再利用可能にするAPI Fragmentなどの作成も可能です。
design.png

AnyPoint Exchange


AnyPoint Exchangeには、SalsforceのようなWeb APIを提供しているSaaSサービスから、FacebookやTwitterなどの各種ソーシャルメディアサービス、Slackのようなコラボレーションサービス、さらにはレガシーなオンプレミスソフトウェアに到るまで、数多くのシステムと接続するためのコネクターが提供されています。また、あらかじめよく使うシナリオやRAML Specなどをテンプレートとして公開されているので、APIの設計やインテグレーションフローを1から作るのではなくAnyPoint Exchangeのリソースを再利用することでコストと時間を大幅に節約できます。

AnyPoint ExchangeはAnyPointアカウントが無くても閲覧はできますので、まずは何ができるかのイメージを掴むには、こちらを覗いてみると良いでしょう。

AnyPoint Exchange
https://www.mulesoft.com/exchange/

Management Center


作成したアプリケーションやAPI仕様のテストや分析、動作環境の管理などを行うのがManagementCenterです。AnyPoint Platformへアクセス出来るユーザの権限管理に加え、DesignやSandboxなど複数のインスタンスを用意して、開発者テストを効率化するEnvironment管理、実際にデプロイしたMule Runtimeのリージョン管理やインスタンスのサイズ管理など、様々な設定をManagement Centerから行うことが可能です。
また、APIの管理・監視を行うためのAPI Mangerや、既存のデータ・ソース(SalesforceやOraleDB、IBM DB2、SAP、MySQLなど)とODataプロトコルを使用してリアルタイム接続を提供するData Gatewayの設定などもこちらから行えます。

AnyPoint Data Gateway
https://www.mulesoft.com/platform/data-gateway

まとめ

AnyPoint Patformは、API設計及びデータインテグレーションにおいて開発時・運用時双方に必要な機能を全て提供しようというコンセプトの非常に魅力的なクラウドサービスです。
機能だけでなくUXデザインにも力が入っていて、視認性も高く使いやすいUIを提供している点も素晴らしいですね。エンタープライズ領域に強いSalesforceの一部になったことで、更に進化が加速していくと思われますので、今後も要注目です。


補足:RAMLとは

OAS_RML_500x215.png

RAMLとはRESTful API Modeling Language (RAML) の略で、YAMLをベースとしたAPI仕様定義するための言語です。RAMLが定義されていることによって、特別な仕様書やSDKの実装をしなくても、誰もがRAMLからAPI仕様書を生成したり、ジェネレータを使って各種プログラミング言語用のStabコードを生成できたりします。
同じようなものとしてはOpen API Initiative (Swagger)が有名ですが、RAMLの発案者でありMuleSoftのCTOであるUri Saridも自身のブログストでOAI SpecとRAMLはともに使っていく存在であって、幅広く普及が予測されるOAIとの相互変換を支持しつつも

RAML offers many more capabilities for modeling, succinctness (the “DRY” principle), reusability, consistency, modularity, and
separation of concerns
(RAMLは)

といっています。なので、彼の意見として、 「どっちでも使えるし相互変換できるけど、APIの仕様をデザインし最適化することに注力するならRAMLは最適だよ」 というスタンスのようです。実際MuleSoftもOpen API Initiativeには参加してますしね。

実際にどのようなファイルかと言うと、例えばQuick StartのサンプルのRAMLは商品データベースへのAPIを以下のように定義されています。

product.raml
#%RAML 1.0
title: DevRel-Quick Start Products API
version: v1.0
baseUri: http://quick-start-store.us-w1.cloudhub.io/api

securitySchemes:
  basic:
    description: |
      This API supports Basic Authentication.
    type: Basic Authentication

securedBy: [basic]

types:
  product:
    properties:
      identifier?: string
      identifiers: IdentifierMap
      brand: string
      model: string
      rating: number
      description?: string
      pictures: string[]
      price: price

  price:
    properties:
      amount: amount
      salesUnit: salesUnit

  amount:
    properties:
      currency: string
      currencyValue: number
      name : string

  salesUnit:
    properties:
      code: string
      name: string

  Identifier:
    type: string
    pattern: ^[0-9A-Za-z-]+
    minLength: 3
    maxLength: 36

  IdentifierMap:
    type: array
    items:
      type: object
      properties:
        /[0-9A-Z-]+/:
          type: Identifier

/products:
  /{productId}:
      uriParameters:
        productId: string
      get:
        responses: 
          200:
            body:
              application/json:
                type: product
                example: !include exchange_modules/org.mule.examples/devrel-quick_start_product_example/1.0.0/devrel-quick_start_product_example.raml
          404:
            body: 
              application/json:
                properties:
                  message: string
                example: |
                  {
                    "message" : "Product not found"
                  }

RAMLもAnyPoint Platformと並んで、注目のテクノロジーだと思います。