アプリケーションの設計者や開発者は、マイクロサービスが常に優れた選択肢だと仮定するのではなく、マイクロサービスとモノリスを慎重に選ぶ必要がある。アプリケーションのアーキテクチャを決める際に考慮すべきポイントを整理する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
アプリケーションの設計者や開発者は、マイクロサービスが常に優れた選択肢だと仮定するのではなく、マイクロサービスとモノリスのどちらを選ぶべきかという問題に慎重に取り組む必要がある。既に導入済みのマイクロサービスアプリケーションを評価し、モノリシックアーキテクチャ(モノリス)に切り替えることでコストやパフォーマンスが向上するかどうかを見極めることも重要だ。
マイクロサービスがアプリケーションに適した選択肢かどうかを判断するためのポイントを整理する。
マイクロサービスは、アプリケーションの信頼性と拡張性を向上させることができる。コードベースがモジュール化されるため、開発が容易になる側面があり、個々のマイクロサービスに障害が発生してもアプリケーション全体をダウンさせることはない。
だが、アプリケーションが複雑化する、パフォーマンスが低下する可能性があるなど、マイクロサービスの問題は幾つかある。
マイクロサービスアプリケーションスタックにおけるリソースの利用効率は、同じアプリケーションのモノリシックバージョンよりも低下することがある。マイクロサービス内に機能が重複する冗長ロジックが存在していたり、マイクロサービスを管理するためのツール(コンテナオーケストレーターやサービスメッシュなど)の導入が必要だったりするからだ。
サイドカープロキシアプローチを使用したマイクロサービスの監視でも、オーバーヘッドが増加する可能性がある。マイクロサービスごとに監視エージェントが必要になり、アプリケーション全体に対して1つのエージェントを展開するよりも効率が落ちるためだ。設計と展開によっては、マイクロサービスがアプリケーションのリソース利用効率の向上に役立つ可能性はあるものの、真逆の結果をもたらすリスクもある。
マイクロサービスのコードベースはモジュール化されるため、開発者はアプリケーションのコードベース全体ではなく、個別のマイクロサービスに取り組み、変更を加えることができる。
通常、それぞれのマイクロサービスは個別にコンパイルされてから他のマイクロサービスと一緒にテスト環境にデプロイされ、アプリケーション全体としてテストされる。これにより、開発者がアプリケーション内で対処しなければならない依存関係が増え、開発が複雑化する。ビルドおよびテストフェーズの複雑さが増す可能性もある。
マイクロサービスにより、アプリケーションで管理すべきコンポーネント数が増える。監視、分析が必要なデータが増え、アプリケーション内で問題が生じる可能性のある場所が増える。
マイクロサービスで開発と運用の複雑さが増すと、パフォーマンスが低下する可能性がある。他のサービスに余裕があっても、1つのサービスだけがリソースを使い果たすだけで、マイクロサービスアプリケーション全体がパフォーマンスの問題に直面する可能性があるためだ。
コードに潜むバグがテスト中に見つからず、マイクロサービスアプリケーションに紛れ込む可能性も高くなる。複雑なマイクロサービスアプリケーション内でパフォーマンスの問題が起きると、運用チームは原因を迅速に特定して対応するのに苦労する可能性がある。
アプリケーションの設計者や開発者は、マイクロサービスアプローチの欠点と利点の両方をケース・バイ・ケースで比較検討する必要がある。マイクロサービスとモノリスのどちらを選択すべきか、慎重に決定を下すための最初のステップは、次のような質問に対する答えを得ることだ。
Copyright © ITmedia, Inc. All Rights Reserved.