분산 애플리케이션 (Distributed Apps)

개념

분산 애플리케이션은 그 기능을 여러 개의 독립적이고 작은 부분들로 나누어 동작하는 애플리케이션이다. 분산 애플리케이션들은 폭넓게 바라본 애플리케이션의 범주 내에서 서로 다른 문제를 처리하는 개별 마이크로서비스 컴포넌트들로 구성된다. 클라우드 네이티브 환경에서는 개별 컴포넌트들이 일반적으로 클러스터에서 컨테이너로 실행된다.

다루는 문제

단일 컴퓨터에서 실행 중인 애플리케이션은 곧 단일 장애 지점(Single Point Of Failure)을 나타낸다. 이는 해당 컴퓨터에 장애가 발생할 경우 애플리케이션 역시 사용할 수 없게 된다는 의미이다. 분산 애플리케이션은 종종 모놀리식 애플리케이션과 대조되는데, 모놀리식 애플리케이션은 다양한 컴포넌트들의 규모를 독립적으로 조절할 수 없기 때문에, 유연하게 규모를 조절(scale)하는 것이 매우 어렵다. 또한 애플리케이션의 규모가 커질수록 개발자들의 생산성이 저해되는데, 더 많은 개발자들이 확실한 경계가 정해지지 않은 상태의 공유 코드베이스에서 작업을 해야 하기 때문이다.

문제 해결 방식

애플리케이션을 분산화하여 여러 컴퓨터에서 실행하면, 몇몇 컴퓨터에서 장애가 발생하더라도 여전히 애플리케이션을 사용할 수 있다. 또한 규모를 유연하게 조절할 수 있는 특성인 수평적 확장이 가능하다는 장점을 갖는다. 이는 단일 애플리케이션으로 실행시킬 때는 불가능하다. 하지만 사용자는 더 이상 하나의 애플리케이션이 아닌 수많은 애플리케이션 컴포넌트들을 실행해야 하기 때문에, 운영하는 측면에서의 부담이 증가한다.