私はマイクロサービスについて読んでみましたが、少し興味をそそられました。興味深いコンセプトのようです。しかし、モノリシックアーキテクチャよりもマイクロサービスを使用する場合の長所と短所、およびその逆は何でしょうか。
マイクロサービスが適切な場合、およびモノリシックアーキテクチャを使用する方が適切な場合。
私はマイクロサービスの世界には比較的慣れていませんが、できるだけ完全にあなたの質問に答えようとします。
マイクロサービスアーキテクチャを使用すると、懸念の分離と分離が増加します。あなたはアプリケーションを散らかしているので。
これにより、コードベースの管理が容易になります(各アプリケーションは、稼働し続けるために他のアプリケーションから独立しています)。したがって、これを正しく行うととなり、将来的に新しい機能を追加するのがより簡単になりますとなります。一方、モノリシックアーキテクチャでは、アプリケーションが大きい場合は非常に困難になる可能性があります(ある時点でそれが想定されます)。
また、独立したマイクロサービスを個別に構築し、別々のサーバーに展開するため、アプリケーションの展開が簡単です。これは、アプリケーションの他の部分を再構築することなく、いつでも好きなときにサービスを構築およびデプロイできることを意味します。
さまざまなサービスは小さく、個別にデプロイされるため、明らかですスケーリングが容易それらは、アプリケーションの特定のサービスをスケーリングできるという利点があります過度の負荷がかかっているのは、アプリケーション内の特定の部分にすぎません)。
ただし、将来的に管理するには大きすぎることを意図していないアプリケーションの場合。モノリシックアーキテクチャを維持することをお勧めします。マイクロサービスアーキテクチャには、いくつかの深刻な問題が伴うためです。マイクロサービスを展開する方が簡単だと述べましたが、これは大きなモノリスと比較した場合にのみ当てはまります。マイクロサービスを使用すると、さまざまな場所にあるさまざまなサーバーにサービスを配布する複雑さが増し、すべてを管理する方法を見つける必要があります。アプリケーションが大きくなった場合、マイクロサービスの構築は長期的に役立ちますが、小規模なアプリケーションの場合は、モノリシックを維持する方が簡単です。
これは非常に重要な質問です。なぜなら、少数の人々はマイクロサービスを取り巻くすべての話題に魅了され、考慮すべきトレードオフがあるからです。では、マイクロサービスの利点と課題は何ですか(モノリシックモデルと比較した場合)?
これらのトレードオフ を理解したら、もう1つの質問に答えるために知っておく必要があることがもう1つあります。マイクロサービスとモノリスのどちらが良いですか? アプリケーションの非機能要件(品質属性要件)を知る必要があります。たとえば、パフォーマンスとスケーラビリティの重要性を理解したら、トレードオフを比較検討し、経験に基づいた設計上の決定を下すことができます。
@Luxoが注目されています。ちょっとしたバリエーションを提供し、組織的な観点をもたらしたいと思います。マイクロサービスを使用すると、アプリケーションを切り離すことができるだけでなく、組織レベルでも役立ちます。たとえば、組織は複数のチームに分割し、それぞれがチームが提供するマイクロサービスのセットで開発することができます。
たとえば、Amazonのような大規模なショップには、パーソナライゼーションチーム、eコマースチーム、インフラストラクチャサービスチームなどがいる場合があります。 Jeff Bezosは、共有機能へのアクセスが必要な場合、チームが別のチームのサービスと通信することを義務付けました。簡単な説明は here をご覧ください。
また、 Etsy and Netflix のエンジニアも、マイクロサービスとTwitterのモノリスの時代にささやかな議論をしました。議論は少し技術的ではありませんが、いくつかの洞察を提供することもできます。