データ回復力におけるNo.1 グローバルリーダー
CrowdStrikeのコンテンツ更新によって影響を受けるお客様向けのVeeamのガイダンス

マイクロサービスとは

マイクロサービスは、アプリケーション開発に対するアーキテクチャアプローチであり、プロジェクトをより小さく、より独立したサービスに分割し、APIを介して相互に通信します。マイクロサービスを使用すると、プロジェクトの各部分の複雑さが軽減されるため、アプリケーション開発をスピードアップできます。個々のマイクロサービスは、複数のプロジェクトで再利用できます。

Veeam Data Platformを活用してクラウド、ハイブリッド、オンプレミスの環境のデータセキュリティを強化しましょう。

モノリシックアーキテクチャとマイクロサービスアーキテクチャの比較

歴史的に、オンラインアプリケーションはモノリシックアーキテクチャを使用していました。ソフトウェア開発に対するこのアプローチでは、プロジェクト内のすべてのプロセスが緊密に結合されます。モノリシックSaaSプロジェクトには、次のような複数のコンポーネントが含まれる場合があります。

  • Webサーバーとロード バランサー
  • ユーザー登録と管理
  • 決済システム
  • コンテンツを作成および表示するためのCRUDシステム
  • 外部で使用するためのAPIエンドポイント

モノリシック アーキテクチャの問題は、Webアプリケーションの需要が急増した場合、システム全体をスケーリングする必要があることです。さらに、コードベースが大きくなるにつれて、コードベースに変更を加えるのがはるかに困難になります。長期的には、これは技術的負債を生み出す可能性があります。コードベースの一部が古いまたは時代遅れのライブラリに依存している場合、または特定の機能のために新しいフレームワークに移行したい場合は、コードベースの他の部分の問題によって作業が妨げられる可能性があります。

マイクロサービスでは、各コンポーネントはスタンドアロン サービスです。ユーザーサービスは決済システムから独立しており、決済システムはコンテンツシステムから独立している、といった具合です。これらのサービスは、相互にコードを共有しません。むしろ、APIを介して相互に通信します。

それぞれのコンポーネントはスタンドアロンであるため、必要に応じてまったく異なる言語で記述することができます。また、1つのコンポーネントで障害が発生しても、必ずしもアプリケーション全体が停止するわけではありません。この問題のコンポーネントに依存しないアプリケーションの他の側面は、引き続き通常どおり機能します。

サービス指向アーキテクチャ(SOA)とマイクロサービスアーキテクチャ

サービス指向アーキテクチャとは、アプリケーションが複数のモジュールに分割されるアーキテクチャです。これらのモジュールには明確に定義された役割があり、モノリシックなアプリケーションよりも小さいため、SOAはマイクロサービスと似たようなアプローチになります。SOAアーキテクチャとマイクロサービスアーキテクチャの主な違いは、アーキテクチャの範囲です。

SOA用に構築されたモジュールは、企業全体で共有され、再利用されます。対照的に、マイクロサービスは、独立して機能するように設計されたモジュールに依存しています。マイクロサービスのアーキテクチャ用に作成されたコンポーネントを再利用できないというわけではありませんが、そのアプローチは異なります。たとえば、SOAアプリケーション向けに構築されたモジュールでも、同じストレージ層をすべて共有して、同じエンタープライズストレージバス(ESB)を通じてやり取りすることが可能です。マイクロサービス環境では、各サービスに個別のAPIがあり、独自のストレージを使用できます。

マイクロサービスの利点

マイクロサービスには、特にこのモデルを使用するようにアプリケーションをゼロから設計する場合に、いくつかの利点があります。

  • 開発の容易さ:マイクロサービスは小規模なスタンドアロン アプリケーションであるため、それぞれを個別のチームで開発できます。各マイクロサービスには明確な目的が定義されているため、テストを簡単に記述できます。マイクロサービスのトラブルシューティングは、通常、モノリシック アプリケーションのトラブルシューティングよりも簡単です。さらに、既存のマイクロサービスを再利用することも可能で、プロジェクトの成長に合わせて開発をさらにスピードアップできます。
  • 柔軟性:モノリシックアプリケーションの開発者が、既存のコードベースに変更を加えることの難しさから、特定のテクノロジーや方法に縛られていることに気付くことがよくあります。マイクロサービスを使用することで、スタンドアロンのサービスを使用した際に意図しない結果が生じるリスクが低くなるため、変更を加えたり、新しいテクノロジーを試したり、その場でコードをリファクタリングしたりすることが容易になります。
  • スケーラビリティ:モノリシックアプリケーションのスケーリングは難しくなる場合があります。単にハードウェアをオーバープロビジョニングするだけでは投資対効果が低くなり、需要における突然の予期せぬピークに対処するうえで、このスケーリングのアプローチは現実的ではありません。マイクロサービスではアプリケーションのスケーリングに関してより多くのオプションを提供しており、開発者は必要に応じて容量を追加し、需要が減少したときには余分なサービスを停止することが可能になります。
  • 回復力:モノリシック アプリケーションに障害が発生すると、アプリケーション全体が機能しなくなります。マイクロサービスでは、問題は障害が発生した特定のアプリケーションに限定されます。たとえば、ゲームのログインサーバーに障害が発生すると新しいユーザーを認証できなくなる可能性がありますが、すでにアプリに接続しているユーザーは、通常どおりにアプリを使い続けることができる場合があります。フォトギャラリーの問題は、その小さなサービスに限定され、Webサイトの他の領域に干渉しない場合があります。
  • リソース使用率の向上:アプリケーションを明確に定義された小さなサービスに分割すると、モノリシック アーキテクチャを使用するよりも効率が向上します。企業は、リソースを大量に消費する大規模なCMSを実行してWebサイトのコンテンツを管理するのではなく、ヘッドレスマイクロサービスCMSと軽量のカスタムフロントエンドを使ってコンテンツを表示することができます。

マイクロサービスの課題

マイクロサービスは、そのパワーと柔軟性により、複雑で大規模なアプリケーション向けにますます選ばれるようになっています。ただし、導入にはいくつかの課題があります。

  • 複雑さ:マイクロサービスアーキテクチャアプリケーションのそれぞれのコンポーネントはシンプルですが、考慮する必要があるコンポーネントの多さから、アプリケーション自体は非常に複雑になる可能性があります。アプリケーションをいくつかのコンポーネントに分割すると、問題が発生する可能性を含む領域が広がる可能性があります。また、パフォーマンスのオーバーヘッドが発生する可能性もあります。
  • データの一貫性:マイクロサービスアーキテクチャを使用する場合は、データの一貫性と競合状態(レースコンディション)に問題が発生する可能性があります。マイクロサービスでデータベースを更新しようとしている最中に、別のマイクロサービスでそのデータベースを読み取ろうとするインスタンスの処理は困難になる可能性があります。
  • 通信とサービスディスカバリー:すべてのマイクロサービスが効果的に相互に通信しており、どのサービスがどこで利用可能かを認識できるようにするのは難しくなることがあります。これは、設計の早期段階で対処すべき問題です。
  • テスト/デバッグ:マイクロサービスのテストではそれぞれのコンポーネントを個別にテストできるため、ある意味、マイクロサービスをテストする方が簡単です。ただし、コンポーネントをリンクする場合はそれらのテストとデバッグが困難になります。予期しない出力は、現在作業中のコンポーネントのエラーが原因ですか、それとも別のサービスから供給されるデータが期待どおりではありませんか?
  • 監視とサービス管理:マイクロサービス アーキテクチャの利点の1つは、プログラムの他の領域に影響を与えることなく、マイクロサービスのインスタンスをオンデマンドで作成および破棄できることです。これを管理するには、コンテナの導入を管理するためのソフトウェアなど、追加のツールが必要になる場合があります。

マイクロサービス技術

マイクロサービス アーキテクチャの管理に使用されるツールとテクノロジは多数あります。ここでは、マイクロサービスを使用する環境でよく見られる主なテクノロジーをいくつか紹介します。

コンテナ化

コンテナは、マイクロサービスアーキテクチャの重要な部分です。これにより、マイクロサービスアプリケーションを予測可能かつ効率的な方法で迅速にデプロイできます。コンテナ化ツールには、従来のLXC Linuxコンテナから、今ではほぼユビキタスなDockerまで、いくつかの種類があります。コンテナは必要なすべてのライブラリとその他の情報を含むアプリケーションの「すぐに実行できる」バージョンであり、ほぼすべての環境でワンクリックで導入することができます。

オーケストレーション

小規模な導入ではコンテナを手動で管理することが可能ですが、複数のクラウドサービス間で複数のDockerの導入を実行している組織では、このプロセスを自動化する手段が必要になります。Kubernetesなどのソリューションによって、大規模な自動化が可能になります。開発者は、YAMLと呼ばれる人間が読み取れるデータシリアル化言語を使用してコンテナを定義できます。

API Gateway

各マイクロサービスは、REST APIを介して他のマイクロサービスと通信します。既知のサービスの数が少ない場合、これらのサービスを直接通信させるのは簡単です。環境が複雑になるにつれて、サービスが相互に直接通信するのは効率が悪くなります。APIゲートウェイと管理ツールにより、開発者は事前構築済みのサービスを簡単に統合できます。ゲートウェイは要求を受信し、その背後にあるシステムに渡します。基盤となるサービスについて何か変更する必要がある場合、更新する必要があるのはゲートウェイだけです。他のサービスは、通常どおりゲートウェイに要求を渡すことができます。

サービスレジストリ

サービスレジストリは、リクエストの送信先として利用可能なマイクロサービスを追跡する効果的な方法です。サービスレジストリは、サービス、そのインスタンス、およびその場所のデータベースです。一部のモデルでは、サービスレジストリが各サービスのAPIを使用してヘルスチェックを呼び出し、現在リクエストを処理できることを確認する役割も担う場合があります。Kubernetesなどの一部のコンテナ管理システムには、サービスの検出と管理を容易にする独自のサービスレジストリが組み込まれています。

サーキットブレーカー

サーキットブレーカーは、マイクロサービスアーキテクチャにおけるサービスの健全性の監視に使用されます。サーキットブレーカーが設定されている場合、マイクロサービスでは通常どおりに相互にやり取りしつつ、サーキットブレーカーによってエラーのカウントを保持できます。検出されたエラーの数が設定した期間の特定のしきい値に達すると、サーキットブレーカーが有効になります。この数に達しない場合、サーキットブレーカーはカウントをゼロに戻し、監視を続行します。これにより、マイクロサービスの信頼性の高い操作が保証され、許容可能なタイムアウトやその他のエラーが考慮されます。

マイクロサービスのユースケースと例

マイクロサービス アーキテクチャは、Web向けアプリケーションを時間の経過とともに進化および拡張する必要があるあらゆる環境に役立ちます。 マイクロサービスは、ゲームやeコマースから物流や金融まで、あらゆる分野で使用されています。

電子商取引

EコマースソリューションプロバイダーであるBigcommerceは、同社の一部の顧客に対してマイクロサービスアーキテクチャとヘッドレスeコマースソリューションの使用を提唱しています。このアーキテクチャの主なメリットとして、向上したアジリティと柔軟性が挙げられます。

医療関連

医療従事者は、マイクロサービスにより、連動することで必要なデータのみにアクセスできる、個別でありながら疎結合のアプリケーションを開発できます。マイクロサービスアーキテクチャを利用することで、従来のESBシステムよりもいくつかのメリットを得ることができます。単一障害点は存在しないため、1つのシステムで問題が発生しても、他の潜在的に重要なシステムに影響を与えることはありません。さらに、システムが分離されていると、テストとセキュリティが管理しやすくなります。医療施設のシナリオではシステムとデータのアベイラビリティを最大限に高めることが重要です。最新のマイクロサービスアプローチではこうした目標の達成をサポートできるため、その人気がますます高まっています。

銀行・金融

銀行および金融セクターの多くの組織は、更新が困難なレガシーシステムに大きく依存しています。多くの組織では、モノリシックな従来のコードベースを変更するのではなく、既存のコードベースに接続して追加機能を提供できるマイクロサービスを採用しています。新しい金融機関は、マイクロサービスと個々のAPIに基づいてシステムを設計し、ゼロから始めることができます。従来からの機関では、モノリシックなコードベースを維持しつつ、そのコードのインターフェイスとして動作する新しい機能を開発し、ユーザーエクスペリエンスを向上できます。Veeam 金融サービス向けのデータセキュリティおよび保護システムなどのシステムと組み合わせることにより、組織はシステムの堅牢性およびユーザーデータの保護を確実に実現できます。

輸送・物流

運輸・物流部門では、サプライチェーンの追跡に役立つIoT技術など、多くの技術の採用が進んでいます。「Nimble」と呼ばれる有名なプロジェクトでは、フェデレーションIoTに対してマイクロサービスアーキテクチャのアプローチを採用し、サプライチェーンに対して、信頼性とスケーラビリティに優れたリアルタイムの監視と最適化を提供しました。

開発にマイクロサービスをベースとしたアプローチを採用することで、組織は既存のワークフローに干渉することなく、新たなデバイスやテクノロジーを即座にテストできます。現代のサプライチェーンにおける24時間体制の特長を考えると、このアジリティは非常に有用な機能と言えます。

Veeamを今すぐ利用開始する方法

Veeam製品なら、データがホストされている環境にかかわらず、バックアップやデータセキュリティを簡単に管理できます。モノリシックなオンプレミスアーキテクチャを使用している場合でも、SalesforceといったサードパーティのSaaSプロバイダーを主に使用して顧客情報を管理している場合でも、アプリケーションをクラウドでホストしている場合でも、Veeam製品なら貴社のデータをしっかりと保護します。

Veeamでは、AWS、Azure、Google、IBMのクラウドプラットフォームやKubernetesの導入に対応したバックアップと復元のソリューションに加えて、人気の高い仮想化ソリューションも提供しています。Veeamのツールは、お客様の既存の設定にできるだけシームレスに組み込めるように設計されています。

Veeamでは、多くのツールで無償のCommunity Editionを提供しています。たとえば、Veeam Kastenでは最大5ノードまでを無償でご利用いただけます。これにより、ユーザーは、システムを大規模に展開するかどうかを決定する前に、システムをテストする機会が得られます。エンタープライズ製品の期間限定評価版もご利用いただけます。

Veeam Data Platformを活用して、組織をデータの侵害や消失から守りましょう。