Lagom は Play の上に構築されています。Play は汎用 (非同期) Web フレームワークを意図していますが、Lagom のより具体的な目標は、アプリをマイクロサービスとしてデプロイすることに焦点を当てたツールや意見を追加することです。
Lagom が提供する、マイクロサービス スタイルのアーキテクチャを実現するのに役立ついくつかの例 (Play はそうではありません):-
持続性
たとえば、Play が現在提供している永続化サポートの上にCQRSベースの永続化用の API が追加されています。これは (ご存じない場合)、クエリとコマンドを分離することでマイクロサービス アーキテクチャを実現するのに役立つパターンです。
コンテナ オーケストレーション
25 の異なるマイクロサービスを持つ Play アプリケーションがあるとします。これは、比較的小規模な企業アプリケーションであっても控えめな数字です。これらすべての JVM のデプロイ/オーケストレーションをどのように管理しますか? さて、コンテナは大流行です。これらすべてのコンテナをどのように管理していますか? ConductR は、その作業の負担を軽減するツールです。Lagom は、ConductR を Lagom プロジェクトで簡単に使用できるようにするための統合ツールを提供します。これは、Play だけでは得られないものです。
私はまだPlayでこれを達成することができました
Play プロジェクトで同じことを実現するために使用できる SBT モジュールがたくさんありますが、必要なツールを選択し、利用可能な多くのモジュールのどれがプロジェクトに適しているかを判断し、構成して、必要に応じてそれらを配線します (これは Lagom の目標の 1 つです)。これらの決定と構成タスクをユーザーから切り離して、アプリケーション ロジックの作成に集中できるようにすることです。
私のアプリケーションが小さく、おそらく 5 つのサービスしかない場合、Lagom (またはその他のマイクロサービス フレームワーク) は本当に必要ないとかなり説得力を持って主張できます。ただし、アプリケーションが成長する可能性が高い場合、Play だけを使用すると、長期的にはより多くの時間がかかります。
マイクロサービスを設計する際には明らかに他にも多くの考慮事項がありますが、Play と Lagom の要点がわかります。