分散アプリケーション

分散アプリケーションは、機能が複数の独立したより小さな要素に分割されたアプリケーションです。 分散アプリケーションは通常、広範なアプリケーション内で異なる機能を担う個々のマイクロサービスから構成されます。 クラウドネイティブ環境において、個々のコンポーネントはクラスター内のコンテナとして実行されます。

解決すべき問題はなんですか

単一のコンピューター上で動作している単一のアプリケーションは単一障害点となります。 もしそのコンピューターが故障した場合、そのアプリケーションは利用できなくなります。 分散アプリケーションは、しばしばモノリシックアプリケーションと比較されます。 モノリシックアプリケーションは、様々なコンポーネントが独立してスケールできないために、スケールが難しい場合があります。 さらに、それらは成長するにつれて開発者の速度の妨げになることもあります。 なぜなら、より多くの開発者が明確に定義された境界を持つとはかぎらない共有のコードベースで作業する必要があるからです。

どのように役に立つのでしょうか

単一のアプリケーションを異なる部分に分割し、それらを多くの場所で実行すると、システム全体としてはより障害を許容できるようになります。 また、単一のアプリケーションでは利用できなかったスケーリング機能を活用できるようになります。 つまり、水平スケーリングができるようになります。 しかしながら、これには複雑さの増加と運用のオーバーヘッドによるコストがかかります。 こうして、単一のアプリケーションではなく多くのアプリケーションのコンポーネントを実行することになります。