BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース サービス指向デリバリモデルとしてのマイクロサービス

サービス指向デリバリモデルとしてのマイクロサービス

ブックマーク

原文(投稿日:2014/11/30)へのリンク

マイクロサービスは有用だが,適切な分割を行って境界線を設定するには,ビジネスとそのプロセスの理解が不可欠だ - Jeppe Cramon氏は,ロンドンのMicroservices Conferenceで行ったプレゼンテーションの中で,このように説明した。

Tigerteamで大規模なシステムインテグレーションに携わる氏は,コンポーネント化の持つ多大な価値を確信している。マイクロサービスは,SOAによるメリットは何か,私たちが誤解していることは何か,私たちは何を学び,何を改めればよいのか,といったことを評価するよい機会だと考えているのだ。しかしながら,同時に,よりよいソフトウェアを開発するためにはガイドラインが必要だ,とも考えている。

マイクロサービスが有用であるというには,開発や運用に要するコストに優る価値がなければならない。すべてが独自のプロセスで動作するという原則に従うのならば,シリアライゼーションやコミュニケーション,監視といった代償を払わなければならない。これらはサービスの構築において,相当な量のコストを追加することになる。開発するサービスが小さ過ぎると,本来ならばひとつにまとめられるべきものが分離されて,凝縮性(コヒーレンス)を失うという大きなリスクが伴うことになる,というのが氏の意見だ。通信や層構造に起因する結合(カップリング),時間的および行動的な結合といった課題もある。このような方法で,ただ小さいサービスを開発したのでは,単一システムが分散したものを作っているに過ぎない。

問題を分解する上では,対象とするものをより小さく,理解しやすいものにしたい。だが一方で,凝縮性と疎結合性も必要だ。正しい境界線を見出して適切なシステムを構築するには,プロセスとしてのビジネスとデータフローを理解する必要がある。我々の多くはエンティティや構造モデルで思考する訓練を受けてきているので,このような思考方法は問題となる部分だ。始めは小さくても,何かを付け加えていくとモデルはすぐに大きくなって,やがて責務や境界が不明確になる。大規模なモデルを理解するには,極めて高い精神的能力が必要だ。氏の経験では,これはモノシリックなシステムで起きる典型的な問題でもある。

例えばオンラインのリテールシステムであれば,購買や販売,在庫管理,出荷など,さまざまな領域のあることが分かる。それぞれが具体的で特有のニーズを持ち,重なりは一般的にそれほど多くない。これを利用すれば,ドメインをマクロアーキテクチャに分解することができる。アーキテクチャの安定した部分を描き出し,それを用いて,ビジネス機能あるいはコンテキスト境界をサービスとして整理すればよいのだ。ドメイン駆動設計(DDD)では,問題とソリューションのドメインをコンテキスト領域に整合させるような強制はない。それでもサービスとビジネス機能を整合させるのは,ビジネス機能が極めて安定していて,正しく把握さえできれば,変更されることがほとんどないからだ。内部的には多数の変更があったとしても,論理的レベルでは安定している。ただし氏は,サービスへの性急な分離には十分注意すべきだ,と強調している。バウンダリを越えたリファクタリングは,時として非常に高価に付くものだからだ。

サービスとはビジネス機能における技術的オーソリティである,というのが氏の考えだ。すなわち,この機能を必要とするすべての場所において,全情報とビジネスロジックの保有者がサービスなのだ。展開モデル上から見たサービスは,従って,そのデータを必要とするすべてのシステムに対してデプロイされる必要がある。これによって,機能に対する単一ソースという事実,およびビジネスとITの整合性が実現され,他のサービスの利用を一切不要にするという自律性を手にすることができるのだ。

サービスがそのビジネス機能に対する技術的オーソリティであることにより,サービスは大規模化する可能性がある。それを小さく抑えることが必要であり,その実装がマイクロサービスなのだ,と氏は言う。マイクロサービスとは,トランザクション境界に沿って分割された,サービスの一部分なのだ。サービスは論理上デプロイ可能なユニットではあるが,それは必ずしも,独立的にデプロイ可能であるという意味ではない。分散に対応する設計と同時に,局所性のメリットを利用する必要がある。システムが複数のマイクロサービスで構成されていたとしても,それらが独立したプロセスである必然性のないことも多いのだ。

我々がビジネス機能について語るとき,十分に安定したものではないそれらをマイクロサービスとして実装することのメリットから,氏はサービスを基盤的なものと考えている。単一の目的を持った小さなサービスであることには,記述やテスト,交換が容易というメリットがある。

結論として氏は,マイクロサービスを,可能な限り小さく,ただし必要十分な大きさに分割したビジネス機能とサービスとの整合性を重視した,サービス指向のデリバリモデルとして定義している。サービスは,論理的にデプロイ可能なマイクロサービスのセットとして実装される。これを実行する上でマイクロサービスは,SOAが我々に約束したものの実現を支援する存在だ,と氏は考えている。

Skills Matterがロンドンで開催準備中のMicroservices Conferenceは,この主題による初のカンファレンスである。次回のカンファレンスの登録が受付中だ。

この記事に星をつける

おすすめ度
スタイル

BT