BT

QCon NY:Jonas Bonér氏よりイベントファーストのマイクロサービスの設計について

| 作者: Srini Penchikala フォローする 36 人のフォロワー , 翻訳者 編集部T _ フォローする 0 人のフォロワー 投稿日 2018年7月17日. 推定読書時間: 3 分 |

原文(投稿日:2018/07/05)へのリンク

イベントファーストのドメイン駆動型設計(DDD)とイベントストリーミングは、マイクロサービスベースのアーキテクチャでは重要であるとLightbendの創設者兼CTOであるJonas Bonér氏が述べた。同氏は先週、QCon New York 2018 Conferenceで、回復力がありスケーラブルなアーキテクチャを構成するために、イベントファーストのデザインを用いることについて話した。

彼は、マイクロサービスの旅を始めるときには、「マイクロリス」で終わらないように注意しなければならないと述べた。なぜなら、モノリシックデザインから悪い習慣をマイクロサービスにもたらす可能性があるためであり、それによってサービス間の強い結合を生み出すことになる。イベントファーストの視点を持たないDDDアプローチは、誤った道に導く可能性がある。物事(ドメインオブジェクトのような名詞)に集中するのではなく、システム内で何が起こるか(イベントのような動詞)に焦点を当てるべきである。

イベントとコマンドに基づくマイクロサービスアーキテクチャは、システムの回復力、スケーラビリティ、トレーサビリティ、および緩やかな結合を支援する。イベントは、過去に発生した事実を表す(たとえば、OrderCreatedProductShipped)。イベントは無視できるが、取り消しや削除はできない。また、新しいイベント/事実がシステムに到着し、既存の事実を無効にすることができる。一方、コマンドは、メソッド/アクションのオブジェクト形式である。それらは命令である。コマンドの例は、CreateOrderShipProductである。

Bonér氏は、イベントを使用して、システム内の限定されたコンテキストを定義することを提案した。イベント駆動型サービスは、事実を受け取って反応し、新しい事実をシステム内の他のサービスに公開する。また、ドメインデータの整合性と一貫性を維持するために使用されるAggregateデザインパターンについても説明した。それは失敗の単位でもあり、完全自律である。イベントストリーミングはマイクロサービスアーキテクチャで重要な役割を果たし、サービス間の通信ファブリックとして使用できる。統合、複製、コンセンサス、永続性などの機能向けのファブリックとしても使用できる。

データの永続性に関して、CRUDサービスは完全に分離されたデータに対しては問題ないが、CRUDサービス間で一貫性を保つことは非常に困難である。アプリケーション設計の初めから結果整合性に頼らざるを得ず、必要な場合にのみ、強い整合性を使う必要がある。また、不確実性に対処するためにシステムのモデリングの重要性についても議論した。不確実性の管理はビジネスロジックに実装する必要がある。イベントは、障害を回避するのではなく、障害の管理に役立つ。CRUDサービスをイベントストリームと共に使用して、内部的に一貫したマテリアルビューを得る。

イベントロギングとイベントソーシングは、スケーラブルなマイクロサービスアーキテクチャの実現にも不可欠である。トランザクションログがリレーショナルデータベースで使用されているのと同様に、イベントログが根幹であり、スケーラビリティ、信頼性、整合性を保つために役立つ。イベントソーシングは、マイクロサービス間における結果整合性の助けとなる。また、イベントログからイベントを「再現(rehydrating)」することで障害から復旧する助けになる。また、他の人が状態変更をサブスクライブすることができるようになる。また、CQRSデザインパターンを使用して、読み書きモデルの複雑さを解消することができる。システム内の読み取りは、書き込みとは全く異なる特性を持つことがある。

Bonér氏は、イベントファーストデザインが、回復力のあるスケーラブルなアーキテクチャと自律的なマイクロサービスの設計を作成する助けとなると述べて、プレゼンテーションを結論付けた。イベントロギングでは、CRUDとORMを避け、システムの履歴を管理し、強い整合性モデルと結果整合性モデルのバランスを制御できる。

Akkaフレームワークは、これらのパターンを実装するための優れたソリューションである。イベントファーストマイクロサービスの詳細については、Reactive Microsystemsというミニブックを参照してください。

Rate this Article

Adoption Stage
Style

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT