ハンガリーのブダペストで開催されたCraftConf 2017で、Phil Calçado氏が、“The Economics of Microservices”と題したプレゼンテーションを行なった。講演の主旨は次のようなものだ – ‘逆Conway戦略(Inverse Conway Maneuver)’は、モノリスからの脱却においては、アプリケーションのアーキテクチャを形成する便利なツールである。ただし、新たなサービスを開発する‘移行コスト’が既存のモノリスないしサービスの機能追加コストよりも十分に低くなければ、‘マイクロリス(microliths、小さなモノリス)’を作ることになりかねない。また、モノリスのメリットが‘スコープの経済性’(新機能の追加において、新しいデプロイプロセス実装のコストを必要としない、など)にあるのに対して、マイクロサービスのメリットは‘スケールの経済性’にあることから、大規模な運用をサポートするための自動化プロセスというコストが(時には事前に)必要となる。
DigitalOceanでプロダクトエンジニアリングディレクタを務めるCalçado氏は、Conwayの法則を引き合いに出しながら、モノリシックアーキテクチャから移行したいくつかのチームにおいて、氏がどのような参加をしたかを論じることで自身の講演を始めた。ThoughtWorks(とJames Lewis氏)によって有名になった‘逆Conway戦略’は、対応するソフトウェアアプリケーションアーキテクチャを – 一般的には‘マイクロサービス’など、より小型のサービスへと – 転換する上で、組織構造の形成手段として利用可能なものだ。しかしながら、マイクロサービスの成功には、デプロイメントと横断的関心事(cross-cutting concern)をサポートするための初期投資が必要となる。この点に十分な注意を払わなければ、このような小型サービスによる運用は、将来において非効率なものになる危険性をはらんでいる。
ビジネスマネジメント分野の思考ツールをいくつか転用するCalçado氏は、R.H.Coase氏の“The Nature of the Firm”(PDFリンク)を引用して、‘企業’をモノリシックアプリケーションに、‘フリーエージェント’をマイクロサービスに例えた。
企業が存立するのは、その企業内で何かを実行するためのトランザクションコストが、たとえそのすべてがオーバーヘッドであったとしても、市場ないしフリーエージェントを通じて実施するコストよりも低い場合です。
企業内で発生する余分なトランザクションをオーガナイズするためのコストが オープンマーケットでの取引を手段とする同じトランザクションの実行コスト、ないしは他企業をオーガナイズするコストと同等な場合において、[この条件は成立します。]
マイクロサービスへの移行を開始した当初においては、モノリスに機能を追加するための‘トランザクションコスト’が、サービス(と付随するデリバリ機構)の完全な新規開発よりも相対的に低いものになる。逆Conway戦略は、モノリスへの機能追加コストを新サービスの開発コストよりも高くしようというものだ。しかし、それよりもよいアプローチとしてCalçado氏が提案するのは、サービスの開発コストを、モノリスないし既存のサービスに対する単純な機能追加よりも低くする、という方法だ。
既存のマイクロサービスに不適切な機能追加を続けると、結果として、実質的に小さなモノリス、すなわち‘マイクロリス’を作ることになる。
最初は‘正しくない’ものを強化してもよいのですが、卓越したものにするためには、‘正しい’ものをより簡単にしなくてはなりません。
講演の次のセクションでは、マイクロサービスのトランザクションコストを分解し、Martin Fowler氏の‘Microservices Prerequisites’を引用した上で、Calçado氏自身の経験に基づいた4つの前提条件の追加を提案した。
- 迅速なプロビジョニング (Fowler)
- 基本のモニタリング (Fowler)
- 迅速なデプロイメント (Fowler)
- ストレージのプロビジョニングの容易化
- エッジへのアクセス。新しいサービスをクライアントに公開する場合には、セッションデータなど‘エッジ(Edge)’機能へのアクセスや、監査ないしレート制限といった分野横断的な境界問題を扱う必要がある。
- 認証と承認
- リモートプロシージャコール(RPC)の標準化。例えばTwitterのFinaleやNetflixのKaryon(現在は廃止)などのマイクロサービスシャーシ、あるいはLinkerdやEnvoyなどのサービスメッシュを使用する。
その次には、話題を経済的な面に戻して、モノリスがスコープの経済性をメリットの源泉としているのに対して、マイクロサービスのメリットはスケールの経済性によるものだ、という点が指摘された。モノリシックなアプリケーションの場合、デプロイプロセスが一度構成されてしまえば、新機能を追加しても、それによってコストが発生することは通常はない。しかしマイクロサービスでは、新しいサービスの開発には通常、新たにデプロイメントスクリプトやパイプラインを開発するためのコスト負担が求められる。これもまた、先程の‘トランザクションコスト’の削減という点に関わってくる – マイクロサービスへの移行に伴うマイグレーションオーバーヘッドを削減する上で最も効率的な方法は、サービス追加のコストを減らすことなのだ。
講演の終わりに聴衆が理解したのは、トランザクションコスト削減のためのアプローチのすべてを事前に知っておく必要はない、ということだ。どのビジネスにおいても最も重要なのは、顧客/ユーザ/ステークホルダに価値を提供することだ。Calçado氏の経験では、マイクロサービスシステムに移行する開発チームがビジネス価値を生み出し続ける上で、次のような5つの典型的なステップがある。
- 試験 – アーキテクチャ上の問題を確認するために、モノリスの外部へのサービス構築を試みる。
- チェックリストと標準 – 手作業によるサービス開発プロセスを標準化し、文書化する。
- コピー&ペースト – 新たなサービス開発を立ち上げるためにコードをコピーする、など。
- ライブラリとツール – 前のステップでコピーしたコードを整理し、構成可能なライブラリやツールのセットにする。
- プラットフォーム – マイクロサービスエコシステムおよびサポート可能なプラットフォームに必要なすべての要素の構築。
Craft ConfでのPhil Calçado氏の講演 “The Economics of Microservices”で使用したスライドはSlideShareで、ビデオはCraft Conf 2017のUstreamチャネルで、それぞれ公開されている。
この記事を評価
- 編集者評
- 編集長アクション