マイクロサービスアーキテクチャを検討する際に考慮すべき4つの課題マイクロサービスか、モノリスか? 選ぶ際のポイント

アプリケーションの設計者や開発者は、マイクロサービスが常に優れた選択肢だと仮定するのではなく、マイクロサービスとモノリスを慎重に選ぶ必要がある。アプリケーションのアーキテクチャを決める際に考慮すべきポイントを整理する。

» 2024年07月12日 08時00分 公開
[Chris TozziTechTarget]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 アプリケーションの設計者や開発者は、マイクロサービスが常に優れた選択肢だと仮定するのではなく、マイクロサービスとモノリスのどちらを選ぶべきかという問題に慎重に取り組む必要がある。既に導入済みのマイクロサービスアプリケーションを評価し、モノリシックアーキテクチャ(モノリス)に切り替えることでコストやパフォーマンスが向上するかどうかを見極めることも重要だ。

 マイクロサービスがアプリケーションに適した選択肢かどうかを判断するためのポイントを整理する。

マイクロサービスの問題点

 マイクロサービスは、アプリケーションの信頼性と拡張性を向上させることができる。コードベースがモジュール化されるため、開発が容易になる側面があり、個々のマイクロサービスに障害が発生してもアプリケーション全体をダウンさせることはない。

 だが、アプリケーションが複雑化する、パフォーマンスが低下する可能性があるなど、マイクロサービスの問題は幾つかある。

インフラのオーバーヘッド

 マイクロサービスアプリケーションスタックにおけるリソースの利用効率は、同じアプリケーションのモノリシックバージョンよりも低下することがある。マイクロサービス内に機能が重複する冗長ロジックが存在していたり、マイクロサービスを管理するためのツール(コンテナオーケストレーターやサービスメッシュなど)の導入が必要だったりするからだ。

 サイドカープロキシアプローチを使用したマイクロサービスの監視でも、オーバーヘッドが増加する可能性がある。マイクロサービスごとに監視エージェントが必要になり、アプリケーション全体に対して1つのエージェントを展開するよりも効率が落ちるためだ。設計と展開によっては、マイクロサービスがアプリケーションのリソース利用効率の向上に役立つ可能性はあるものの、真逆の結果をもたらすリスクもある。

開発の複雑さ

 マイクロサービスのコードベースはモジュール化されるため、開発者はアプリケーションのコードベース全体ではなく、個別のマイクロサービスに取り組み、変更を加えることができる。

 通常、それぞれのマイクロサービスは個別にコンパイルされてから他のマイクロサービスと一緒にテスト環境にデプロイされ、アプリケーション全体としてテストされる。これにより、開発者がアプリケーション内で対処しなければならない依存関係が増え、開発が複雑化する。ビルドおよびテストフェーズの複雑さが増す可能性もある。

運用の複雑さ

 マイクロサービスにより、アプリケーションで管理すべきコンポーネント数が増える。監視、分析が必要なデータが増え、アプリケーション内で問題が生じる可能性のある場所が増える。

パフォーマンスのリスク

 マイクロサービスで開発と運用の複雑さが増すと、パフォーマンスが低下する可能性がある。他のサービスに余裕があっても、1つのサービスだけがリソースを使い果たすだけで、マイクロサービスアプリケーション全体がパフォーマンスの問題に直面する可能性があるためだ。

 コードに潜むバグがテスト中に見つからず、マイクロサービスアプリケーションに紛れ込む可能性も高くなる。複雑なマイクロサービスアプリケーション内でパフォーマンスの問題が起きると、運用チームは原因を迅速に特定して対応するのに苦労する可能性がある。

マイクロサービスか、モノリスか? 選ぶ際のポイント

 アプリケーションの設計者や開発者は、マイクロサービスアプローチの欠点と利点の両方をケース・バイ・ケースで比較検討する必要がある。マイクロサービスとモノリスのどちらを選択すべきか、慎重に決定を下すための最初のステップは、次のような質問に対する答えを得ることだ。

  • アプリケーションをどこに展開するか:アプリケーションを分散インフラで運用しないなら、マイクロサービスを利用するメリットは少ない
  • アプリケーションをどのように展開するか:マイクロサービスアプリケーションを運用するために複雑なホスティングスタックが必要になると、補助ツールが使用するリソースによって全体的なパフォーマンスレベルが低下する可能性がある
  • どのように機能を分割するか:ロジックの重複が発生することなく各マイクロサービスに個別の機能を割り当てるられるなら、マイクロサービスが適している。アプリケーションの機能を一連のサービスに分割する方法が明確でなければ、モノリスの方が適している
  • CI/CD(継続的インテグレーション/継続的デリバリー)パイプラインはマイクロサービスを適切にサポートするか:マイクロサービスの構築とテストの複雑さを抑える俊敏性がCI/CDパイプラインになければ、モノリスを使用すべきだ
  • どの程度チームに経験があるか:設計者、開発者、運用エンジニアがマイクロサービスアプリケーションの管理と最適化に精通していると、マイクロサービスアプローチを活用できる可能性が高まる

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。