가용성과 확장성의 확보

가용성과 확장성을 확보하기 위해

Web 3계층은 Stand-alone 구성의 2가지 단점을 해결했지만, 가용성과 확장성에 대한 문제는 여전히 남아있다.

  • 물리적으로 떨어진 장소에서 접근할 수 없다

  • 복수 사용자가 동시에 작업할 수 없다

  • 가용성이 낮다 (서버가 1대밖에 없기 때문에 장애가 일어나면 서비스가 정지한다)

  • 확장성이 부족하다 (서버가 1대밖에 없기 때문에 해당 서버의 성능이 한계에 달하는 경우 서버를 상위 기종으로 교환하거나 고성능 부품으로 교환하는 것 외에는 성능을 개선할 방법이 없다)

어떻게 하면 정지하지 않는 시스템을 만들 수 있을까

아키텍처 설계에서 견고한 시스템을 만들기 위해 가장 중요한 점은 가용성이다.

가용성을 높이는 2가지 전략

가용성을 높이기 위한 접근 방법은 '심장전략' '신장전략' 이 있다.

심장전략 ( 고품질 - 소수전략 )

시스템을 구성하는 각 컴포넌트의 신뢰성을 높여 장애 발생률을 낮게 억제해서 가용성을 높인다 (소수정예 노선).

신장전략 ( 저품질 - 다수전략 )

시스템을 구성하는 각 컴포넌트의 신뢰성을 계속해서 높이기 보다는 '사물은 언젠가 망가진다' 라는 체념을 전제로 여분을 준비해 둔다. 이를 철저히 대비하는 것을 '물량작전' 이라고 부른다.

심장은 왜 2개가 아닌가, 시스템 세계도 인체와 동일?

심장전략과 신장전략은 내구 소비재의 가용성을 높이기 위해 널리 사용되고 있다. 과거에는 두 가지의 전략 중 어느 쪽이 효율적인가를 확실히 알지 못했기 때문에 양쪽 노선 모두를 추구하였지만, 현재는 '신장전략' 노선에 손을 들고 있다.

즉, 부품 한 개의 신뢰성을 올리는 것보다 저품질이라도 수량으로 보완한다는 일종의 물량작전이다.

클러스터란

신장전략과 같이 동일한 기능의 컴포넌트를 병렬화하는 것을 '클러스터링(Clustering)' 이라고 부른다. 또한, 클러스터 구성으로 시스템의 가동률을 높이는 것을 '여유도(Redundancy)를 확보한다' 또는 '다중화' 라고 지칭한다.

같은 기능을 가진 서버를 늘리면 늘릴수록, 시스템 전체에서 장애 발생률이 낮아지고 가동률(시스템의 무고장으로 동작할 확률)은 높아진다.

단일 장애점이란

단일 장애점이란 다중화되어 있지 않아서 시스템 전체 서비스의 지속성에 영향을 주는 컴포넌트를 말한다.

'쇠사슬의 강도는 가장 약한 고리의 강도로 결정된다'는 말과 같이, 단일 장애점의 신뢰성이 시스템 전의 가용성을 결정한다.

신뢰성과 가용성

신뢰성과 가용성은 문맥에 따라 거의 같은 의미로 사용되기도 하지만, 일반적으로 신뢰성은 하드웨어나 소프트웨어 고장 빈도나 간을 나타내는 개념이고, 가용성은 사용자 입장에서 볼 때 시스템을 어느 정도 사용할 수 있는지를 나타낸다. 즉, 시스템을 구성하는 컴포넌트에 대해 적용하는 것이 신뢰성이고, 시스템 전체에서 사용자 눈높이에 맞춰 생각하는 경우가 가용성이라고 생각하면 된다.

따라서 신뢰성이 낮은 컴포넌트를 사용한다 하더라도, 다중화(클러스터)한다면 시스템 전체의 가용성을 높일 수 있다.

Last updated