(1/2)本連載では、リアクティブプログラミング(RP)の概要や、それに関連する技術、RPでアプリを作成するための手法について解説します。Platformがどういったものなのか詳細に見ていきましょう。Playのセットアップも行います。」では、RPの概要やライブラリ/プラットフォームを幾つか紹介しました。Platform」を使用して、実際にリアクティブなアプリケーションを作成していきます。Platformがどういったものなのか詳細に見ていきましょう。Platformとは、Lightbend社(※旧Typesafe社)が開発したリアクティブなアプリケーションを構築するための開発プラットフォームです。Platformでは開発者向け機能と、サブスクリプションを購入することで使えるProduction機能があります。framework」「Akka」などのコア部分を構成するアプリケーションフレームワークやランタイムライブラリで構成されており、全てオープンソースとして公開されています。Production機能の方は、アプリの管理やモニタリング機能、さらに分析機能や統合のためのツールなどを提供します。Platformを構成する各製品について簡単に説明していきましょう。framework(以下、Play)は、ステートレスで軽量なアプリケーションフレームワークです。JavaかScalaを用いてコーディングします。Streams」をベースに構築されており、ステートレス、非同期、非ブロッキングで動作します。高い応答性や弾力性など、リアクティブシステムが持つメリットを備えています。2017年7月現在、2.6.2が最新のバージョンとなっています。Playについて詳細を確認したい方は下記をご覧ください。StreamsAkkaAkkaはアクターモデルのメッセージ駆動型ランタイムライブラリで、伸縮性や拡張性、耐障害性を持っています。Playでも標準で採用されており、導入のための手間がかかりません。アクターモデルアクターと呼ばれるオブジェクトがメッセージを送受信して処理をします。それぞれのアクターはメッセージ受信用のメールボックスをもっており、受信したメッセージに対応した処理を行えます。Pressureで非同期ストリーム処理の仕様)のAkka実装です。PressurePublisher/Subscriberモデルを考えた場合、Subscriber側のバッファー溢れやそれを過剰に考慮したPublisherの処理をなくすために、Subscriberが許容できる処理量をPublisherに対してリクエストを送ることで効率よく処理する仕組みです。Streamsは非常に重要な位置付けのプロダクトです。Akka/AkkaStreamsについては今後の連載で解説していく予定です。Lagom——AkkaとPlayで構築されたマイクロサービスアーキテクチャ向けフレームワークLagom「Lagom」は、AkkaとPlayで構築されたマイクロサービスアーキテクチャ向けフレームワークです。マイクロサービスの開発やデプロイを簡単にできるよう設計されており、Scala/Java向けのAPIが提供されています。Lagomはスウェーデン語で「ちょうどいい大きさ」という意味です。マイクロサービスアーキテクチャとは、小さなサービスを組み合わせてアプリケーションを構築していくアーキテクチャで、サービス同士はRESTなどで連携します。システムがシンプルになり変化に強くなるのが特徴です。Lagomの特徴には下記のようなものがあります。【Lagomの特徴1】疎結合なコンポーネントマイクロサービスの特徴にあるように、サービス同士を疎結合で連携させることで、変化に強く自律したシステムを構築できます。基本的にはメッセージとストリームでやりとりしますが、場合によってはRESTでの通信も可能です。API」やNoSQL系のデータベースも使用可能です。CQRS(コマンドクエリ責務分離)とは、サーバの機能を「コマンド」(更新)と「クエリ」(参照)で分離するという考え方です。一般的な手法では状態変化の理由や経緯が分かりませんが、イベントソーシングでは状態が永続化されるのでなく、発生したイベントを永続化します。Breakerとは、外部アクセスの成功と失敗をカウントし、エラーが閾値をオーバーしたときに自動でアクセスを遮断する仕組みです。Lagomを使用することで個々のサービスをマイクロサービスとして構築、デプロイし、サービス間のやりとりもシンプルに実現できるようになります。Spark」(以下、Spark)は、大規模ストリーミングデータを処理するための分散処理フレームワークです。Foundationに寄贈されました。大規模なデータをメモリ上で高速に処理できるように設計され、APIはScalaやJava、Pythonなどで提供しています。分散処理とは、任意の処理を複数のコンピュータを用いて並列に処理する手法です。非常に大きなデータを処理する場合に短い時間で処理することができます。スポット的にサーバを多数用意して処理を割り当てられるため、コストを抑えて高速に処理を行えます。Hadoop」があります。主な違いとしては、Hadoopが毎回ストレージにアクセスするのに対し、Sparkではメモリ上で処理してストレージへのアクセスをなるべく少なくしています。このため、メモリに収まるデータを処理したい場合にはSparkが適任といえるでしょう。Sparkとは何か——使い方や基礎知識を徹底解説」をご参照ください。8/9はマイクロサービス、リアクティブに向かう——MVCは生き残れるのかデジタルトランスフォーメーション時代に生き残れるエンジニアに求められるものとは何か。日本のJavaコミュニティで存在感を示し続け、現在は日本マイクロソフトでJavaエバンジェリストとして活動する寺田佳央氏に聞いた。EJB、SOA、マイクロサービスへと至る大規模システム向けアーキテクチャの変遷2000年前後からのアプリケーションアーキテクチャやEJB、SOAに触れながら、今後、大規模システム構築で主流になるであろう「マイクロサービス」アーキテクチャの意義と価値を考える。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。