私は大手銀行向けに開発された複雑なプロジェクトで1年以上AxonFrameworkを使用しています。
要件は厳しく、顧客の期待は高く、リリース期間は狭かった。
私がAxonFrameworkを選択したのは、プロジェクトの開始時に、Javaで利用可能なCQRSの最も完全で文書化された実装であり、適切に設計され、統合、テスト、および拡張が容易であったためです。
1年以上経った今でも、これらの考慮事項は有効で最新のものだと思います。
別の考慮事項が私の選択を導きました。このような困難なプロジェクトへの取り組みが、私やチームの他のメンバーのトレーニングの機会になることを望んでいました。
AxonFrameworkバージョン1.0で開発を開始し、新しいバージョンがリリースされたときにバージョン1.4に移行しました。
CQRSとAxonFrameworkによって提供された実装に関する私たちのチームの経験は絶対にポジティブでした。
それは私たちを導き、あなたが安心できるようにする各機能を開発するための一貫した均一な方法を私たちに提供しました。
これがなければ、アプリケーションの一部の機能の開発ははるかに複雑になります。私は主に、処理する必要のあるさまざまな長期実行プロセスと関連する補償ロジックについて言及していますが、イベント駆動型アーキテクチャにうまく適合し、切り離された、あちこちで必要とされている多くのビジネスロジックの部分についても言及しています。 CQRSによって促進されます。
書き込みモデルでは保守的であることが選択されたため、イベントソースの永続性ではなく、JPAベースの永続性を選択しました。
クエリモデルはビューで構成されています。必要に応じて中間ビューを使用して、各ビューに1つのページから必要なすべてのデータが含まれるようにしました。
とにかく、イベントソーシングを適用しながら書き込みモデルを開発したので、イベントのみを介して集計の状態を変更します。顧客が非常に複雑なアグリゲートのクローン作成機能を要求したとき、それは(uuidが変換された)ソースイベントを新しいインスタンスに再生するだけの問題でした-この場合の欠点は、イベントのアップキャストでした(ただし、この機能は差し迫った2.0バージョンで大幅に改善されました)。
開発中の各プロジェクトと同様に、主にコードだけでなく、アプリケーションサーバー、IoCコンテナー、キャッシュ、ワークフローエンジンなど、成熟して安定していると思われるコンポーネントにも多くのバグが見つかりました。大規模なJ2EEアプリケーションで簡単に見つけることができるライブラリ。
他の人間の製品であるAxonFrameworkもバグの影響を受けませんでしたが、驚くべきことに、このような若くてニッチなプロジェクトでは、バグは少なく、重要ではなく、新しいリリースですぐに解決されました。
メーリングリストで著者が提供してくれた親切で迅速なサポートは、もう1つの貴重な機能であり、困ったときに大いに役立ちました。
このアプリケーションは1年前に本番環境でリリースされ、現在も維持されており、新機能の開発が活発に行われています。
顧客は満足しており、さらに多くを求めています。
AxonFrameworkをいつ使用するかは、CQRSをいつ使用するかによって決まります。回答については、公式ドキュメントに戻る価値があります: http ://www.axonframework.org/docs/1.4/introduction.html#d4e51
私たちの場合、間違いなくそれだけの価値がありました。