アプリケーションをモジュラーモノリスとして記述し、容易にマイクロサービスとしてデプロイできるフレームワーク「Service Weaver」

2024年7月23日(火)
木村 慎治

マイクロサービスとモノリスのメリットを兼ね備えたアーキテクチャとして「モジュラーモノリス」が注目されている。2024年6月15日に開催された「CloudNative Days Summer 2024」では、グーグル・クラウド・ジャパン合同会社のアプリケーション モダナイゼーション スペシャリスト 頼兼 孝幸氏が登壇。「Service Weaverで始めるモジュラーモノリス、そしてマイクロサービスへ」と題したセッションで、Googleが開発した分散アプリケーションを作るためのオープンソースのフレームワーク「Service Weaver」を活用し、モジュラーモノリスのアプリケーションをマイクロサービスとしてデプロイする方法を解説した。

モダンなアプリケーション開発の特徴と
開発者を悩ませる課題

モダンなアプリケーション開発アーキテクチャの特徴の1つとして挙げられるのが、モジュール性の高さだ。従来のモノリシックアプリケーションでは、ビジネスロジックが密結合されており、変更が難しいという問題があった。しかし現在ではコンポーネントごとに独立したモジュールとして開発し、それらを柔軟に組み合わせることが求められている。これにより、アジリティと製品の品質向上が期待できる。「モジュール性は高い方がいい」とグーグル・クラウド・ジャパンの頼兼孝幸氏(写真)は言う。

写真:グーグル・クラウド・ジャパン合同会社 アプリケーション モダナイゼーション スペシャリスト 頼兼 孝幸氏

次に求められるのが「弾力性」だ。オンプレミス環境ではサーバーのスケーリングが難しいが、クラウド環境では必要に応じてスケールイン/スケールアウトが可能だ。これによりビジネスのスケールに合わせたインフラの柔軟な対応が可能となる。

さらに「ポータビリティ」も重要なポイントだ。コンテナ技術の進化により、ローカル環境から本番環境まで一貫したデプロイが可能となった。これにより依存関係の管理が簡素化し、どこでも同じ環境でアプリケーションを動かすことができる。

そして「アジリティ」である。開発サイクルの速さを維持するためには、モジュール化されたアーキテクチャが不可欠だ。これにより、各チームが独立してアップデートを展開でき、開発のスピードを維持することができる。

しかし現実の開発はこうした理想通りには進まない。計画の長期化やテスト責務の肥大化、複雑化、開発オーバーヘッドの増大などといった課題が開発者を悩ませることとなる(図1)。

図1:開発者を悩ませる課題

Service Weaverは
「分散アプリケーションを作るための強力なツール」

Service Weaverは、モジュラーモノリスとして書いたアプリケーションをマイクロサービスとしてデプロイすることができるフレームワークだ。これにより単一のデプロイメントユニット内でドメイン分割されたモジュール群を管理することが可能となる。「Service Weaverは、分散アプリケーションを作るための強力なツールです」と頼兼氏は強調した。

モジュラーモノリスとは、単一のデプロイメントユニットの中でドメイン分割されたモジュール群が存在するアーキテクチャである。これにより開発者は1つのコードベースで異なる機能をモジュールとして独立させ、管理しやすくなる。

Service Weaverの機能は大きく2つに分類される。アプリケーションを書く際に利用する「コアライブラリ」と、アプリケーションのランタイムトポロジを構成し、それを一連のマイクロサービスとしてデプロイする「デプロイヤー」だ(図2)。

図2:Service Weaverを構成する2つの機能

Service Weaverでは、Go言語のインターフェースと構造体を使用してコンポーネントを定義する。各コンポーネントをGo言語で定義し、実装することで、モジュール化されたビジネスロジックを効果的に管理できる。

具体的な実装法として頼兼氏は以下の4つのプロセスを紹介した(図3)。

  1. コンポーネントをGo interfaceとして定義
  2. Goの構造体を定義してコンポーネントを実装
  3. インスタンス化、実行
  4. コンポーネントの呼び出し

図3:Applicationの定義から呼び出しまで

Service Weaverのデプロイ方法としては、ローカル環境、GKE、Kubernetes、SSHなどさまざまなオプションが提供されている。ローカル環境ではシングルプロセスとマルチプロセスの両方をサポートしており、実際の動作を確認できる。GKEやKubernetes環境では、複数のマシンやクラスターに分散してデプロイすることが可能で、大規模なシステムにも対応できる。「デプロイ方法が多様なため、開発者は自身の環境に合わせた最適な方法を選択できます」と頼兼氏は実装例を示しながら紹介した(図4)。

図4:さまざまなオプションが提供されているService Weaverのデプロイ方法

可観測性を向上するService Weaverの機能

続いて頼兼氏は「Telemetry and Testing」と題して、可観測性を向上するService Weaverの機能を紹介した。その主な機能には、ロギング、メトリクス、トレーシング、プロファイリング、そしてテストサポートが含まれる。これらの機能はアプリケーションの開発と運用を包括的にサポートし、開発者の負担を軽減する。

  • ロギング機能:Service Weaverのロギング機能は、各コンポーネントに関連付けてログを記録し、操作できる。特定のログのみを抽出して閲覧するフィルタリング機能により、デバッグや問題の特定が迅速に行える。
  • メトリクス機能:カウンターやゲージ、ヒストグラムなどのメトリクスを提供し、自動的に各アプリケーションに対するメトリクスを生成する。これにより、スループットやレイテンシーなどの重要なパフォーマンス指標を簡単に監視でき、アプリケーションのパフォーマンスを詳細に把握し、最適化のためのデータを提供する。
  • トレーシング機能:オープンソースのオープンテレメトリーに依存しており、HTTPリクエストやコンポーネントメソッドの呼び出しを自動的にトレースできる。これによりモジュール間やマイクロサービス間の通信を追跡し、パフォーマンスボトルネックの特定が可能だ。「トレーシング機能を活用することで、モジュール間やマイクロサービス間の追跡が容易になります」(頼兼氏)。
  • プロファイリング機能:GKEデプロイヤーを使用することで、CPUやヒープの情報をプロファイルし、アプリケーション全体のパフォーマンスを把握する。リソースの使用状況を詳細に分析し、パフォーマンスの最適化を実現できる。
  • テストサポート機能:Service Weaverは強力なテストサポート機能を提供しており、weavertestパッケージを使用することで、ローカル、マルチプロセス、分散環境でのテストが可能だ(図5)。

    図5:テストサポート機能も充実している

モジュラーモノリスからマイクロサービスへの移行

モジュラーモノリスのアーキテクチャを採用することで、開発のアジリティを高めることができる。モジュール化されたビジネスロジックを記述し、コンポーネントごとに単体テストを作成することで、迅速な開発と高品質な製品の提供が可能となる。またモジュラーモノリスは、マイクロサービスへの移行を容易にするステップとしても有効である。

「モジュラーモノリスからマイクロサービスへの移行は、ビジネスロジックを柔軟に管理し、アジリティを維持しながら品質を向上させるための効果的なアプローチです」(頼兼氏)

セッションでは、Service Weaverを活用したモジュラーモノリスからマイクロサービスへの移行がいかに効果的であるかが強調された。モジュラーモノリスのアーキテクチャを採用することで、ビジネスロジックを柔軟に管理し、アジリティを維持しつつ、製品の品質を向上させることができる。

最後に頼兼氏は、「Service Weaverは、現代のアプリケーション開発において重要なツールです。ぜひ活用してみてください」と訴え、セッションを締めくくった。

本イベントセッションで使用したスライドは、こちらからダウンロードできます。

IT系出版社にて雑誌、Webメディアの編集職を経て、2011年からフリーランス。IT系の雑誌やWebメディア、ベンダーのWebサイトなどで事例紹介・製品サービス紹介記事などの執筆、編集、企画を中心に活動。ITソリューション、データセンター、ネットワーク関連を中心に多くのITベンダー、ユーザー企業を取材、執筆を行っている。

連載バックナンバー

クラウドイベント
第9回

Wantedlyがマイクロサービス基盤としてKubernetesを選んだ理由

2024/10/29
CloudNative Days Summer 2024にてWantedlyのエンジニアが自社のマイクロサービス基盤として、フルマネージドサービスではなくKubernetesを選択した理由を説明したセッションを紹介する。
システム開発イベント
第8回

デプロイ・QA・Four Keysを自動化し、可視化するfreeeの統合デリバリー基盤の進化とその実践

2024/10/28
CloudNative Days Summer 2024から、デプロイ、QA、Four Keysを自動化・可視化した統合デリバリー基盤を解説したセッションを紹介する。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています