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

木村 慎治

2024年7月23日 6:30

Sponsored

マイクロサービスとモノリスのメリットを兼ね備えたアーキテクチャとして「モジュラーモノリス」が注目されている。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は、現代のアプリケーション開発において重要なツールです。ぜひ活用してみてください」と訴え、セッションを締めくくった。

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

Sponsored

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30