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