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

マイクロサービスに関する動画
マイクロサービスを採用すべき理由
マイクロサービスは、複雑なモノリシックアプリケーションを独立したサービスの集まりに変換することで、迅速な開発を可能にし、理解や管理を容易にします。各サービスを専門のチームに割り当て、別々に開発することができます。さらには、それぞれのマイクロサービスを別々にデプロイできるため、継続的にデプロイを進めることもできます。
マイクロサービスの7つのメリット
ロードバランシング
高度なロードバランシングにより、個々のアプリケーションコンポーネントの安全かつ個別のスケールアウトが可能
開発の高速化
他のコンポーネントとの依存関係を意識することなく、個別のスケジュールでアプリケーションコンポーネントの更新が可能
柔軟なデプロイ
他のシステムに影響をすることなく、アプリケーションコンポーネントの個別のデプロイが可能
シンプル
開発と管理が容易
キャッシュ
柔軟なコンテンツキャッシュにより、アプリケーションの負荷を軽減しつつパフォーマンスの向上を実現
トラブルシューティング
サービスで発生した障害の特定が容易
多様な環境に対応
コンテナ、既存のハードウェア、またはクラウドで実行可能
マイクロサービスの長所と短所
マイクロサービスアーキテクチャーは、アプリケーション開発の革命的な手法ですが、他のテクノロジーと同じように、マイクロサービスにも長所と短所があります。以下に、アプリケーションのパフォーマンスや設計に影響する可能性のある長所と短所を示します。
- 開発者がサービスを個別に開発し、デプロイできるため、迅速な意思決定が可能になる
- マイクロサービスは小規模で自律性があるため、マイクロサービスベースのアプローチでは、異なるチームが異なるサービスを同時に実装でき、結果として、開発サイクルが短縮され、チーム間の依存関係も解消される
- マイクロサービスは、コンテナに簡単にデプロイできるため、オーバーヘッドが少なく、異なる環境間でのポータビリティが向上する
- マイクロサービスは、CI/CDツールと簡単に統合できるため、自動化されたCI/CDパイプラインなどの最新のDevOpsプラクティスを開発者が採用できる
- サービスの柔軟性が一般的に高いため、需要レベルに合わせてアプリケーションの規模を簡単に「適正化」できる
- マイクロサービスは、構築、テスト、管理が容易である
- サービスはビジネス機能を中心に編成される
- 開発者がそれぞれのサービスに最適なテクノロジーを採用できる
- 障害の切り離しが容易 – 1つのマイクロサービスに障害が発生しても、他のマイクロサービスを継続して稼働できる
- マイクロサービスアーキテクチャーでは、フォールトトレランスの緩和、ネットワークレイテンシーの低減、さまざまなプログラミング言語への対応、複数のサービス間でロードバランシングが必要にあるため、開発者の作業が複雑になる可能性がある
- マイクロサービスは分散型であるため、テストが面倒で複雑になる場合がある
- アプリケーションのマイクロサービスの数を増えると、効果的な統合と管理に必要な作業が増大する
- 複数のデータベースの処理が面倒になる可能性がある
仮想マシンとは?
仮想マシンは、実際のコンピュータのように動作する、一般的にイメージと呼ばれるコンピュータファイルであり、簡単に言えば、コンピュータの中にあるコンピュータです。既存のコンピュータの1つのウィンドウで、オペレーティングシステム全体が動作します。マイクロサービスはそれぞれが1つのコンテナであり、これらのコンテナは多くの場合に複数のクラウド仮想マシン(VM)で動作します。ほとんどのクラウドプロバイダーは、VMをIaaS(Infrastructure-as-a-service)サービスの基盤として使用しています。
Ingeniousとファブリックモデル
素晴らしいユースケースをここで紹介します。Ingeniousは、アプリケーション開発におけるファブリックモデルアプローチを紹介する、NGINXが作成した写真共有のデモアプリケーションです。このアプリケーションでは、ユーザーが自分のアカウントにログインして、写真を保存、表示、削除できます。このアプリケーションの最新のニュースやアップデートを参照できるブログも組み込まれています。
このプロジェクトの詳細をGithubで確認する
