Search this site
Embedded Files
Skip to main content
Skip to navigation
IT Bridge Solution
ホーム
私たちについて
サービス
クルー紹介
面接
メモリー
記事
未来への扉
出版書籍
IT Bridge Solution
自社開発サービス「MCC Agent」が拓く、未来のマイクロサービスアーキテクチャ
Microservice Communication Core (MCC) : 究極の堅牢性と汎用性を目指します
〜第2章〜 ツールを使う時代から創る時代へ。私達が目指す、ITの未来。
1. はじめに:なぜ、このアーキテクチャが必要だったのか
今日のITシステムは、マイクロサービスと多様なクラウドサービスを組み合わせることで、急速に進化しています。しかし、その一方でサービス間の複雑な依存関係やプロトコルの不統一という課題に直面します。
課題1:サービスの密結合
サービスAがサービスBのAPIを直接呼び出すと、サービスBの仕様変更がサービスAに大きな影響を与えます。これが「密結合」です。
課題2:プロトコルの不統一
REST API、gRPC、Pub/Subなど、各サービスやクラウドサービスが異なるプロトコルを採用しているため、通信ロジックが複雑化し、開発・保守のボトルネックとなります。
これらの課題を解決するため、私たちは独自の通信レイヤー「
MCC Agent
」を開発しました。
2. 独自サービス「MCC Agent」の役割と革新性
MCC Agentは、GAIA、ORION、ZEUSといったマイクロサービスと、GCPの各プロダクト(Vertex AI、BigQueryなど)の間に位置する
知的なプロキシ
です。
2.1.
革新性1:疎結合性の徹底
MCC Agentの最も重要な役割は、サービス間の依存関係を徹底的に断ち切ることです。
アプリケーションの視点
GAIAはORIONのAPIを直接知りません。GAIAはただ、MCC Agentに「ORIONというサービスにPredictWaitTimeというリクエストを送ってほしい」と依頼するだけです。
MCC Agentの視点
MCC Agentは、このリクエストを受け取ると、ORIONサービスの場所を特定し、gRPCで通信します。
この仕組みにより、サービスは自身のビジネスロジックに集中でき、
システムの変更が他のサービスに波及するリスクが大幅に低減
されます。
2.2.
革新性2:プロトコル抽象化のメカニズム
MCC Agentは、プロトコルの統一と抽象化を実現する独自のメカニズムを持っています。
サービスの「共通言語」
すべてのマイクロサービスは、MCC Agentに対してgRPCという単一のプロトコルで通信します。これにより、開発者はHTTPやPub/Subといった複雑なプロトコルを意識する必要がなくなります。
google.protobuf.Anyの活用
リクエストのペイロードは、gRPCのgoogle.protobuf.Anyという汎用的な型でラップされます。MCC Agentは、このAny型の中身がどのようなデータ形式かを知らなくても、リクエストを転送できます。これにより、
MCC Agentのコアロジックをシンプル
に保ち、GAIAやORIONのproto定義が変更されても、MCC Agentのコードを修正する必要がなくなります。
賢い「翻訳者」
MCC Agentは、受け取ったgRPCリクエストを、BigQueryのREST APIやVertex AIのgRPC APIといった
外部サービスのネイティブなプロトコルに動的に変換
します。
このプロトコル抽象化により、私たちはCloud SpannerをgRPCで叩く、BigQueryにgRPCでデータを流し込むといった、
GCPのサービスをまるで自社開発のマイクロサービスのように扱う
ことが可能になります。
3. 技術スタックと実装アプローチ
Go Monorepo
go workを活用したモノリポジトリ構成で複数のマイクロサービスを一元管理。依存関係の解決を容易にし、開発のスピードを向上させます。
gRPCの徹底活用
GoとgRPCの組み合わせにより高速な通信と、protoファイルによる厳格なAPI規約を確立。
Cloud Nativeなデプロイ
GAIAとORIONにはトラフィックに応じて自動スケーリングするCloud Runを採用。ZEUSには、常時稼働を前提としたApp Engine Flexを選択し、サービスの特性に応じた最適なデプロイ戦略を実現しています。
4. 今後の展望
MCC Agentは、私たちの技術力の高さと現代的なアーキテクチャ設計への深い理解を証明するものです。今後はこの堅牢な基盤を土台に
Pub/Sub
を使った非同期通信への拡張や、サービスの多言語化対応を進めていきます。
We hope you'll look forward to our challenge.
Report abuse
Page details
Page updated
Report abuse