yoskhdia’s diary

DDDとかプログラミングとかアーキテクチャとか雑多に

squbs探訪 その1

squbsというPayPalが作ったライブラリをご存知でしょうか。

github.com

Webアプリケーションを構築する際には、色々なフレームワークの選択肢がありますが、Scala/JavaでAkkaを基盤にしたアプリケーションを作りたいなら、このsqubsを試してみると良いかもしれません。 という紹介エントリです。

squbsはReactive Summit 2016で発表もされています。

www.slideshare.net

フレームワークでもプログラミングモデルでもAll or Nothingなツールでもない、とのこと。 squbsは色々なモジュールで構成されており、以下の標準化を支援します。

  • Monitoring
  • Logging
  • Security
  • Environment Resolution

リアクティブシステムでは分散が一つのキーワードですが、代償として多くの複雑さを招きます。 上記のような標準化を行うことで、非機能要件の複雑さを軽減することができます。 Akka ActorやAkka HTTPのまま構築することもできますが、モニタリングやロギングを包括的にサポートしてくれるライブラリを使った方が、よりやりたいことにフォーカスできますね。

squbsで用意されている機能は次のようなものです。

  • Bootstrap
  • Lifecycle management
  • Loosely-coupled module system
  • Integration hooks for logging, monitoring, ops integration
  • JSON console
  • HttpClient with pluggable resolver and monitoring/logging hooks
  • Test tools and interfaces

AkkaをベースにしたWebフレームワークには、Play Frameworkや少し前にはColossusなども話題になりました。 これらのフレームワークも上記のような機能を一部提供しますが、squbsはそれらと違い、フレームワークでないことを強調し、ブログ記事では次のように述べています。

There are only a few principles coming together for designing squbs:

  • It must be extremely lightweight with no measurable performance deficit over a similar Akka application built from scratch.
  • New APIs over the Akka APIs are based on absolute necessity. Developers should not need to learn any squbs API or message protocol to build services or applications on squbs. The knowledge base needed to build squbs applications should be the Akka knowledge base which developers can acquire from training, documentation, and forums available on the Internet.
  • It should be open source from the core up, with hooks for plugging in PayPal operationalization that cannot be open sourced.

以下、ざっくり意訳。

squbsはわずかな原則のみからデザインされています。

  • ゼロから構築されたAkkaアプリケーションと比べて、測定可能なほどの性能劣化がないよう極めて軽量でなければならない。
  • Akka APIの上に作成するAPIは絶対的な必要性に基づく。開発者は、squbs上でサービスやアプリケーションを構築するためにsqubs APIやメッセージプロトコルを学ぶ必要はない。squbsアプリケーションを構築するために必要な知識ベースは、開発者がインターネット上で利用可能なトレーニング、ドキュメンテーション、フォーラムから取得できるAkkaの知識ベースでなければならない。
  • オープンソースにできないPayPalの運用操作をプラグイン化するためのフックを含めて、コアからすべてオープンソースでなければならない。

ブログ記事末にあるように、わずか8台のVM(各2vCPU)で、1日に10億ヒット以上に耐えられたというのは、なかなかの魅力です。 Akkaの知識があれば、余計な学習コストなく導入できることを目指しているように、実際に試してみるとほとんどAkka(HTTP)です。 そこに、ちゃんとやろうとすると面倒なモニタリングJMX Beanの作成、登録)やロギング(トレーサビリティのための情報付与など)をサクッと載せることができます。使わない手はない気がしてきますね。

次回は、簡単なWebアプリケーションの作成方法をご紹介します。 お楽しみに!

書きました。

yoskhdia.hatenablog.com