モノリシックアプリケーションの機能改善は、コードベースが大きくなるほど複雑になり、イノベーションに対する大きな障壁となる可能性があります。マイクロサービスアーキテクチャは、この課題に対処する方法の1つです。
ただし、マイクロサービスは複雑で、実装も困難な場合があります。そのため、マイクロサービスアーキテクチャと、そのメリット、課題、具体的なユースケースを十分に理解することが重要です。
マイクロサービスとは?
マイクロサービスという概念は、クラウドネイティブなアプリケーション保守のアプローチを指します。マイクロサービスでは、アプリケーションを、疎結合で、独立してデプロイでき、明確に定義されたAPIを介して通信できる、プロセス主導の小規模なサービスに分割します。
これらのサービスは、ビジネス機能のために構築されます。マイクロサービスは組織のビジネスニーズを中心に作られることが多く、部門横断型のチームを活用して、組織のサービス提供を改善します。
マイクロサービスアーキテクチャは、アプリケーションの開発を加速し、スケーリングを簡素化することで、イノベーションを促進し、市場投入までの時間を短縮します。こうしたアーキテクチャは、さまざまなテクノロジー、プラットフォーム、データ管理アプローチをサポートするため、分散化されていることが多いです。
おそらく最も重要なのは、マイクロサービスが障害に耐えられるよう設計されている点です。マイクロサービスの監視は、障害のリスクを大幅に低減できるマイクロサービスの一例です。
Developer.comでマイクロサービス戦略を探る:マイクロサービスを成功させるための戦略
マイクロサービスのメリット
マイクロサービスは、柔軟なスケーリング、容易なデプロイ、アプローチの自由、コードの再利用性、レジリエンスといった効果的なメリットをもたらします。
柔軟なスケーリング
マイクロサービスを使用すれば、サービスを個別にスケールさせ、サポート対象のアプリケーション機能の需要を満たせます。その結果、チームはインフラのニーズをより正確に把握し、機能のコストを正しく予測できます。また、需要が急増した場合でも、サービスを利用可能な状態に維持できます。
容易なデプロイ
マイクロサービスはデプロイを容易にし、継続的インテグレーションと継続的デリバリーを可能にするため、イノベーションや方向転換のプロセスが容易になります。また、コード更新のプロセスを簡素化し、新機能の市場投入までの時間を短縮します。
アプローチの自由
マイクロサービスアーキテクチャでは、オープンエンドな技術アプローチを採用するため、チームはユースケースに最適なツールを選択できます。これは、以前のツールよりも高い成果や革新性を持つ新しいツールが登場した場合に、特に有効です。
コードの再利用性
さまざまなサービスを他の機能の構成要素として利用できるため、開発者はコードをゼロから記述して新しい機能を構築する作業から解放されます。これにより、開発者の生産性と効率が向上します。
レジリエンス
単一のコンポーネントの障害がアプリケーション全体の障害につながる可能性があるモノリシックシステムとは異なり、独立したサービスによってアプリケーションのレジリエンスが高まります。1つのサービスに障害が発生しても、他のサービスへの影響はほとんどありません。
マイクロサービスの課題
マイクロサービスには、複雑さや情報のサイロ化など、いくつかの課題もあります。
複雑さ
分散システムには固有の複雑さがあります。開発者は、負荷分散に対処し、ネットワーク遅延を移行し、フォールトトレランスを実現する必要があるためです。デプロイが分散されていることで、テストに伴う複雑さや単調な作業が増す可能性もあります。
情報のサイロ化
コラボレーションを促進する適切なツールやプロセスが整備されていなければ、マイクロサービスによって効率やイノベーションを妨げる情報のサイロ化が生じる可能性があります。サービス数の多いアーキテクチャほど、情報のサイロ化が大規模になる可能性があります。
TechRepublicで他の課題への対処法を学ぶ:よくあるマイクロサービスの問題4つと、それらをすべて解決する1つの方法
マイクロサービスアーキテクチャの用途
マイクロサービスの一般的なユースケースには、データ処理、Webアプリケーションの移行、決済処理と不正検知、メディアストレージなどがあります。
データ処理
マイクロサービスアーキテクチャはデータ処理を高速化し、多数の同時リクエストを即座に処理できるようにします。マイクロサービスプラットフォームは、クラウドサポートを提供することで、既存のモジュール型データ処理サービスを改善できます。
Webアプリケーションの移行
マイクロサービスを利用すると、複雑なWebアプリケーションをモノリシックアプリケーションからクラウドベースの環境や、コンテナベースのマイクロサービスアーキテクチャに移行できます。この移行により、チームはリリースサイクルや実装などの責任よりも、マイクロサービスAPIに集中できるようになります。
決済処理と不正検知
Eコマース向けマイクロサービスは、決済処理機能を拡張、カスタマイズ、スケーリングする柔軟な方法を組織に提供します。
さらに、不正検知はマイクロサービスアーキテクチャの最も関連性の高いユースケースの1つです。マイクロサービスを機械学習モデルと連携させて、不正を特定できるためです。不正検知マイクロサービスを決済アーキテクチャに組み込み、決済リクエストに対して取るべき適切なアクションを判断できます。
メディアストレージ
マイクロサービスアーキテクチャでは、動画アセットや画像をスケーラブルなオブジェクトストレージシステムに保存できます。また、これらのオブジェクトをモバイルやWebに直接配信することも可能です。これによりレイテンシが短縮され、ストリーミングのユースケースに最適なソリューションとなります。
マイクロサービスアーキテクチャの例
Netflix、Amazon、Walmart、Spotifyは、マイクロサービスアーキテクチャの導入に成功した例を示しています。
Netflix
Netflixは2012年に、モノリシックなサービスをマイクロサービスへ再設計するプロセスを完了しました。これにより、同社はサービス停止やスケーリングの課題を克服できました。
同社のアーキテクチャには、2017年までに700を超える疎結合のマイクロサービスが存在していました。これらのマイクロサービスにより、Netflixのクラウドコストはデータセンターコストの一部に抑えられています。
Amazon
Amazonの開発者は同社のソースコードを分析し、単一の機能目的を果たす単位を抽出しました。これらの単位をWebサービスインターフェースでラップし、より大規模なアプリケーションを形成しました。
AWSは、負荷、規模、複雑さを問わず、あらゆるアプリケーションアーキテクチャをサポートする統合された構成要素をユーザーに提供します。これには、コンピューティングリソース、ストレージとデータベース、ネットワークとメッセージング、DevOps、ロギングとモニタリングが含まれます。
Walmart
過大なワークロードなどの課題によって収益が減少したため、Walmartは2012年にマイクロサービスへの切り替えを実施しました。これにより、Walmartはモバイルアプリケーションを効果的に活用し、全体的なコンバージョンを改善できました。また、ハードウェアコストとコンピューティングパワーの消費も削減できました。
Spotify
少なくとも4億2,200万人の月間アクティブユーザーを抱えるSpotifyは、さまざまなビジネス目標に対応する個別のマイクロサービスを備えています。例として、レコメンデーションエンジン向けのユーザー行動分析、検索エンジンなどがあります。
これらの自己完結型で単一目的のマイクロサービスは、分離されているため、互いへの依存度が低くなっています。これにより、Spotifyの可用性、信頼性、レジリエンスを維持できます。
マイクロサービスアーキテクチャはあなたに適しているか?
マイクロサービスアーキテクチャは、エンタープライズアプリケーションの設計と実装に効果的なメリットをもたらします。進化と増大を続ける、SaaSアプリケーションやモノのインターネット(IoT)の通信要件と複雑さを考えると、マイクロサービスの有用性はさらに明白になります。
複雑な問題に取り組むために必要なアジリティを維持しながら、チーム、トラフィック、顧客をスケールする方法を必要とする組織にとって、マイクロサービスは検討に値します。