ニュース
開発者が注意すべき「マイクロサービスの問題点」、そのトップ10を解説:問題点がメリットを上回るケースも
TechTagetは、「マイクロサービスの問題点」に関する記事を公開した。多くのメリットが得られるマイクロサービスだが、管理やコスト、デバッグの難易度などアプリケーション開発者が注意すべき点も多いという。
TechTagetは2023年11月16日(米国時間)、「マイクロサービスの問題点」に関する記事を公開した。
「Docker」と「Kubernetes」をベースとする環境で構築されたクラウドネイティブアーキテクチャが流行している。クラウドネイティブと相性の良いマイクロサービスには、次のような利点がある。
- サービスごとに、アーキテクチャ、言語、プロセス、ツールを自由に選択できる
- ドメイン駆動型設計やイベント駆動型アーキテクチャなど、ソフトウェアコンポーネントで長年提唱されてきた多くのベストプラクティスが体系化されている
- 適切にカプセル化されているため、サービスを個別に更新できる
- 柔軟性が高く、短期間でのリリースが可能
- マイクロサービスに対応した技術(DockerやKubernetesなど)は多くのハードウェアで動作する
マイクロサービスはこうしたさまざまなメリットをもたらす。一方で、幾つかの重要な問題点があるため、アプリケーション開発チームは注意する必要がある。特に、信頼性の高いモノリスアプリケーション(以下、「モノリスで構築されたシステムやアプリケーション」という意味で、まとめて「モノリス」と表記する)をマイクロサービス化する(同等の機能を持った多数のマイクロコンポーネントに分割する)際は、マイクロサービスの問題点とその回避策(または問題点との共存方法)を確実に理解することが重要だ。
本稿では、マイクロサービスの問題点のトップ10を以下のカテゴリーに分けて説明する。
- トポロジーの複雑性の増加
- 自動デプロイメントの必要性
- 複雑な統合のオーバーヘッドと面倒な依存関係
- データの変換と非互換性
- ネットワークの混雑
- パフォーマンスの低下
- コストの増加
- ログ記録とトレースの複雑化
- テストとデバッグの課題
- 硬直化した組織
複雑性が増す
モノリスを、ネットワークを介して通信する独立したマイクロサービスのサブセットに分割すると、アプリケーションのアーキテクチャが大幅に複雑化する。例えば、1つのモノリスを10個のマイクロサービスに分割するとしよう。すると、これまで実施していたタスクが以下のように変化する。
関連記事
- WebAssemblyはマイクロサービスアーキテクチャの救世主となるか
マイクロサービスアーキテクチャの利用時に課題になる複雑さとコストの懸念を緩和する可能性があるのがWebAssemblyの実装だ。本稿では、WebAssemblyの機能と用途、マイクロサービスとの結び付きなどについて解説する。 - マイクロサービスをサーバレスで構築するのが適しているケースとは?
マイクロサービスをコンテナとサーバレスのどちらで運用するかはどのように決めればよいのか。その決定を大きく左右するのは、そのマイクロサービスで何を実行するかだ。 - Amazon Prime Videoの事例から考察する「モノリシックとマイクロサービスの最適解」
TechTargetは、システム構成に関するアーキテクチャ「マイクロサービス」と「モノリシック」について記事を公開した。多くの企業はマイクロサービス化を検討するが、サービスの成長に合わせモノリシックに戻す企業もある。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.