상용 시스템에서는 시스템 인프라가 ‘업무 기능의 토대’가 되지만 요구되는 몇 가지가 있다. 그중 하나가 안정성이다. 고가용성이라고도 한다.
안정성, 고가용성이란, 시스템 서비스가 가능한 한 멈추지 않도록 하는 것을 말한다. 구체적으로는 아래 그림과 같은 것을 의미하며, 그림의 왼쪽에 있는 목표를 오른 쪽에 있는 방법으로 실현한다.
상용 웹 시스템에서는 미들웨어 기능이나 구조로 이중화, 감시, 백업의 세 가지 수단을 구현해서 목표를 실현하고 있다. 또한, 이중화에는 안정성 확보 이외에도 다른 용도가 있는데, 이에 대해서는 뒤에서 설명하겠다.
이중화란 무엇일까? 간단히 말하면 하나의 기능을 병렬로 여러 개 나열해서 하나에 장애가 발생해도 다른 것을 이용해서 서비스를 계속할 수 있는 것을 가리킨다. 하나의 기능이 병렬로 가동되기 때문에 이런 고가용성에 대한 의미뿐만 아니라 확장성이나 부하분산 같은 성능에 대한 의미도 가진다. 이것을 그림으로 표현한 것이 아래 그림이다.
이중화되지 않으면 아래 있는 사람으로만 받치기가 힘겨워 보인다. 한 사람이 넘어지면 위에 타고 있는 스모 선수가 떨어질 것이다. 반대로, 이중화되어 있으면 한 사람이 넘어져도 괜찮다. 또한, 이중화에서는 보충 요원을 준비하는 경우도 있다.
시스템에서 스모 선수는 시스템 서비스에 해당한다. 시스템 서비스를 지속적으로 제공하기 위해 기능을 이중화하는 것이다. 상용 시스템에서는 모든 컴포넌트를 이중화한다.
이중화를 할 때는 구체적으로 어떤 구조가 필요할까? 귀 그림의 예를 가지고 설명하면 다음과 같다.
이중화 기능은 반드시 이런 구조를 갖추고 있다. 그러면 이런 구조가 어떻게 적용되는지 그리고 어떻게 사용되는지에 대해 컴포넌트 단위로 자세히 보도록 하자.