マイクロサービス7つのメリット

マイクロサービスにより、古いモノリシックアプリケーションを、安全性と柔軟性を兼ね備えた効率的なアプリケーションに変えることができます。

マイクロサービスとは?

マイクロサービスとは、認証、通知、決済処理などの単一の機能を実行する複数の小さなコンポーネントを組み合わせて大規模で複雑なアプリケーションを構築する、ソフトウェアアーキテクチャーのアプローチです。マイクロサービスはソフトウェア開発プロジェクトの独立した単位であり、それぞれが独自のコードベース、インフラストラクチャ、データベースを使用しますが、連携させて動作させることができ、Web APIやメッセージングキュー経由でやり取りし、受け取ったイベントに応答します。

What-Is-K8s-learn-page-K8s-with-Ingress-controlle diagram

簡素化されたマイクロサービスアーキテクチャー

マイクロサービスに関する動画

マイクロサービスとは?

BuzzFeedがNGINX Plusでマイクロサービスに移行

マイクロサービスを採用すべき理由

マイクロサービスは、複雑なモノリシックアプリケーションを独立したサービスの集まりに変換することで、迅速な開発を可能にし、理解や管理を容易にします。各サービスを専門のチームに割り当て、別々に開発することができます。さらには、それぞれのマイクロサービスを別々にデプロイできるため、継続的にデプロイを進めることもできます。

マイクロサービスの7つのメリット

高度なロードバランシングにより、個々のアプリケーションコンポーネントの安全かつ個別のスケールアウトが可能

他のコンポーネントとの依存関係を意識することなく、個別のスケジュールでアプリケーションコンポーネントの更新が可能

他のシステムに影響をすることなく、アプリケーションコンポーネントの個別のデプロイが可能

開発と管理が容易

柔軟なコンテンツキャッシュにより、アプリケーションの負荷を軽減しつつパフォーマンスの向上を実現

サービスで発生した障害の特定が容易

コンテナ、既存のハードウェア、またはクラウドで実行可能

マイクロサービスの長所と短所

マイクロサービスアーキテクチャーは、アプリケーション開発の革命的な手法ですが、他のテクノロジーと同じように、マイクロサービスにも長所と短所があります。以下に、アプリケーションのパフォーマンスや設計に影響する可能性のある長所と短所を示します。

長所:

  • 開発者がサービスを個別に開発し、デプロイできるため、迅速な意思決定が可能になる
  • マイクロサービスは小規模で自律性があるため、マイクロサービスベースのアプローチでは、異なるチームが異なるサービスを同時に実装でき、結果として、開発サイクルが短縮され、チーム間の依存関係も解消される
  • マイクロサービスは、コンテナに簡単にデプロイできるため、オーバーヘッドが少なく、異なる環境間でのポータビリティが向上する
  • マイクロサービスは、CI/CDツールと簡単に統合できるため、自動化されたCI/CDパイプラインなどの最新のDevOpsプラクティスを開発者が採用できる
  • サービスの柔軟性が一般的に高いため、需要レベルに合わせてアプリケーションの規模を簡単に「適正化」できる
  • マイクロサービスは、構築、テスト、管理が容易である
  • サービスはビジネス機能を中心に編成される
  • 開発者がそれぞれのサービスに最適なテクノロジーを採用できる
  • 障害の切り離しが容易 – 1つのマイクロサービスに障害が発生しても、他のマイクロサービスを継続して稼働できる

短所

  • マイクロサービスアーキテクチャーでは、フォールトトレランスの緩和、ネットワークレイテンシーの低減、さまざまなプログラミング言語への対応、複数のサービス間でロードバランシングが必要にあるため、開発者の作業が複雑になる可能性がある
  • マイクロサービスは分散型であるため、テストが面倒で複雑になる場合がある
  • アプリケーションのマイクロサービスの数を増えると、効果的な統合と管理に必要な作業が増大する
  • 複数のデータベースの処理が面倒になる可能性がある
仮想マシンとは?

仮想マシンは、実際のコンピュータのように動作する、一般的にイメージと呼ばれるコンピュータファイルであり、簡単に言えば、コンピュータの中にあるコンピュータです。既存のコンピュータの1つのウィンドウで、オペレーティングシステム全体が動作します。マイクロサービスはそれぞれが1つのコンテナであり、これらのコンテナは多くの場合に複数のクラウド仮想マシン(VM)で動作します。ほとんどのクラウドプロバイダーは、VMをIaaS(Infrastructure-as-a-service)サービスの基盤として使用しています。

Ingeniousとファブリックモデル

素晴らしいユースケースをここで紹介します。Ingeniousは、アプリケーション開発におけるファブリックモデルアプローチを紹介する、NGINXが作成した写真共有のデモアプリケーションです。このアプリケーションでは、ユーザーが自分のアカウントにログインして、写真を保存、表示、削除できます。このアプリケーションの最新のニュースやアップデートを参照できるブログも組み込まれています。

このプロジェクトの詳細をGithubで確認する

diagram

マイクロサービスリファレンスアーキテクチャー