BT

マイクロサービスとドメイン駆動設計に関するVaughn Vernon氏の意見

| 作者: Jan Stenberg フォローする 37 人のフォロワー , 翻訳者 笠原 王徳 フォローする 0 人のフォロワー 投稿日 2016年8月17日. 推定読書時間: 3 分 |

原文(投稿日:2016/07/31)へのリンク

モノリスにおいてもきちんとした方法でモデリングすることは可能ではあるが、しばしば大きな泥団子と化してしまう。これは複数のドメインモデルがモノリス内で絡まってしまうのが原因であり、Vaughn Vernon氏の経験ではこれは数週間もしくは数ヶ月以内に起こりうるのである。彼は今年初めの発表でこのように述べた。

Implementing Domain-Driven DesignReactive Messaging Patterns with the Actor Modelの著者であるVernon氏は、分離すべきドメインモデルが混在した時、これらは互いに区別することはできなくなるため、ビジネスサイドやドメイン専門家と一緒にモデルについて論理的に検討することが困難、あるいは不可能となってしまい、アプリケーションやシステムはモノリスより更に悪化する結果を招いてしまうと記している。

モノリスの代替はマイクロサービスであるが、どうやってマイクロサービスを定義するのであろうか?これはどれくらいの大きさなのだろうか?時々コード行数がサイズの定義として提案され、Vernon氏は10行から1000行単位の数値を見たことがあるが、彼はそのような幅広く不明瞭な定義に異議を唱えている。

Vernon氏は100個単位のサービスを持っていると主張し、正確な数を把握することも知ろうともしない企業にも反発している。彼らはサービスを単に稼働させるコストはとても低いため、実際の使用方法を発見する努力を行うに値しないと主張している。Vernon氏はこれに賛同しておらず、他の事柄の中において、インフラストラクチャはどれくらいのマイクロサービスを実行できるか、その時障害シナリオに対して回復力があるかに大きなインパクトを持っていると記している。

Vernon氏はシステム内のマイクロサービスのサイズと数を決定するための規則に則ったアプローチであるドメイン駆動設計(DDD)のアプローチ、特に境界づけられたコンテキストを使用することを推奨している。彼はマイクロサービスコミュニティ内では時々境界づけられたコンテキストを単純に一つのエンティティとして定義しているが、とてもうまくいきそうにないことを発見している。代わりに、Vernon氏はユビキタス言語によりサイズが決定された、境界づけられたコンテキスト内でマイクロサービスをモデリングすることを好んでおり、Sam Newman氏の書籍であるBuilding Microservicesを引用している。

マイクロサービスに取り掛かるために、Vernon氏は一つの境界づけられたコンテキスト毎に一つのサービスから始めることを推奨している。彼は一つの境界づけられたコンテキスト内にマイクロサービスであると考えられる複数のコンポーネントを確認できる場合でさえも、それらの凝集性と協調動作はそれらが一つのサービス内で共存するべきであることを意味していると考えている。また、一つのサービスと一つの境界づけられたコンテキストは一つの配置可能なユニットとすることを推奨している。ただし、経験からこれらはより細粒度になってもよく、スケーラビリティに起因して一つの境界づけられたコンテキストに対応するマイクロサービスと配置可能なユニットを増やすことはあり得る。

エンティティに加え、ユビキタス言語はコマンドとイベントメッセージも含んでいる。これらのメッセージをイベント駆動アーキテクチャにおいて最終的に他のマイクロサービスで使用するためのイベント公開に用いることができる。Vernon氏はアクターモデルを使用したマイクロサービスを構築する例を挙げることで発表を締めくくっており、実装にはAkkaScalaを用いている。

 
 

Rate this Article

Relevance
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