第4回 マイクロサービスアーキテクチャの導入目的と始め方
マイクロサービスアーキテクチャの導入目的は、アプリケーションを機能単位に細分化して小さなサービス群で再構築することではない。マイクロサービスという言葉から連想されるイメージに惑わされてはならない。第4回では、モダナイゼーションの要となるマイクロサービスの利点と欠点に焦点を当てる。複数のマイクロサービスから成るマイクロサービスアーキテクチャの導入目的、初期段階の考慮点、発展過程について触れていく。
日本IBM テクノロジー事業本部 高良真穂
導入目的と必須特性
マイクロサービスを導入した先進企業は、共通した目的を掲げている。それは一つの大規模なアプリケーション(以下、モノリスとする)に起きている課題を解決することである。その課題とは、スケーラビリティの低さ、コミュニケーションの効率の悪さ、開発速度の遅さ、新テクノロジーの採用の難しさ、などがある。
例えば、モノリスは一つのプログラムの変更に対しても、開発者の関わる人数が多くなり、その打ち合わせの調整だけでも時間を要する(図1)。さらに、データベース変更、コード開発、テストとバグ対応、本番リリースなども、広範囲な調整が必要となる。 しかも、全体を把握して判断できる者は、わずか一部に限られる。新たに参加した開発者が、第一線で判断できるまでには数年単位の長い時間を要する。
マイクロサービスアーキテクチャは、開発組織の編成に特徴がある。フロントエンド(ユーザーインターフェース)、バックエンド(アプリケーション)、データ(データベース)といった技術領域で、チームを編成してはならない。マイクロサービスアーキテクチャでは、開発チームのスコープを、業務領域の境界と一致させる。これにより自主的に活動できる小規模なチーム編成を目指さなければならない。
モノリスと同等の機能を、マイクロサービスアーキテクチャでは、小規模なマイクロサービスが連携するエコシステムとして実装する。そして、個々のマイクロサービスは、本番サービスを継続しながら頻繁なリリースを繰り返すことで、ビジネスの要求に対応するサービス提供の俊敏性を実現する。そのため、単独で随時リリースしても、ほかのマイクロサービスへ影響を与えない、高い独立性を持たなければならない。
マイクロサービスの欠点と始め方
マイクロサービスアーキテクチャは、明確な目的をもって導入しなければならない。それは開発と運用の負担が大きいためだ。例えば、モノリスではメソッドをコールすることで簡単に実現した連携が、マイクロサービスでは格段に複雑化する。マイクロサービスでは、ネットワーク経由で連携するためのJSON変換などの機能、分散するサービスに可用性を与え、性能を得るための機能など、分散システムとして必要な機能を備えなければならない。
この敷居の高さから、モノリスの課題の解決策を模索するなかで、初めてマイクロサービスの価値が実感できる。もしも、小さな規模でマイクロサービスを実践したならば、組織の体力面で許容できない。最初はモノリスから始め、課題解決の策としてマイクロサービスの採用を推進するべきだ。
しかし、現時点でマイクロサービスの導入は、難しいと感じていても、コンテナとKubernetesの先行導入には価値がある。たとえモノリスであっても開発と運用の効率化に即効性があるためだ。その上、将来のマイクロサービスの導入に備えることができる(図2)。モノリスの課題に直面していることを感じる中で、コンテナとKubernetesの導入を見送れば、世の中から遅れをとり、取り返しの難しい技術的負債を追うことになる。
成功を握る鍵
マイクロサービスへの分割を、容易にするか、困難なものにするかは、分割の境界面によって決まる。例えば、業務の単位で独立性が高いものは、コードとしても専門特化していることが多い。それらはマイクロサービスとして分割することも容易である。
モノリスをマイクロサービスに分割する際に、最も悩ましい問題はデータベースだ(図3)。プログラムモジュール間の変数の受け渡し以外に、データベースのデータを通じて連携することが多いからだ。 プログラムコードだけをマイクロサービスとして分割しても、データベースが共有されていれば、随時リリース可能な独立性は果たされない。それはモノリスが分散しただけの厄介なシステムとなる。これではマイクロサービスの導入で掲げる目標を達成できない。
このような問題を解決して成功に導くには、マイクロサービスに適した組織構造に変革するという社員全員の強い意志と、CIOなどトップの支援が欠かせない。つまり、マイクロサービスは、データベースのライセンス追加、Kubernetesクラスタの構築など、コスト負担が増える面もあるためだ。
ここまで述べてきたように、マイクロサービスアーキテクチャの推進は、モノリスの課題を解決するためのいばらの道である。しかし、世界のIT企業が結集して開発を進めるCNCFのOSSは、マイクロサービスの痛みを緩和して、利点に変えることができる。次号では、それら幾つかのOSSプロジェクトを紹介する。