여러개의 컴퓨터가 동일한 일을 처리하기 위해 협력하는 것
분산 시스템을 쉽게 생각하면 앞서 말한 듯이 한 개의 큰 일을 여러 대의 컴퓨터가 동시에 처리하는 것을 생각하면됩니다. 예를 들자면 요즘 핫한 인공지능도 여러대의 GPU를 병럴처리하여 사용하는 것도 일종의 분산 시스템입니다.
만약에 한대의 컴퓨터로 할 수 있다면 분산 시스템을 구성하지 않고 한대로 처리하는 것이 이득 일 수 있습니다.
분산 시스템의 최대 장점은 역시 높은 성능(High Performance)에 있습니다.
예를들어 웹사이트를 생각하면 쉽습니다. 한정판을 구매하기 위하여 많은 사람들이 접속을 하였을 때 여러대의 서버에 나눠서 서비스를 처리하게 되면 빠른 속도로 서비스를 처리 할 수 있을 것입니다.
만약 서비스를 운용 중에 서버가 죽게 될 경우, 이 때 한 대의 서버만 운용 중이라면 모든 서비스가 멈추는 상황이 발생하게 됩니다. 그러나 여러대의 서버를 운용 중이라면 나머지 살아있는 서버로 서비스를 처리 할 수 있게 됩니다.
평소 우리가 DR(Disaster Recovery)이라고 불리는 서비스가 이유가 될 수 있습니다. 아까 2번과 마찬가지로 서버의 위치가 천재지변으로 더이상 사용 할 수 없을 때 DR과 같이 물리적으로 서버를 구성해 놓으면 바로 서비스를 이어갈 수 있는 장점이 있습니다.
웹의 가용성은 절대적으로 중요한 부분입니다.
만약 쇼핑몰의 경우 구매가 일시적으로 중단이 된다면 그 시간 동안 얻게 되는 손실은 엄청 날 것입니다. 그렇기 때문에 분산시스템을 구성 할 때 항상 가용적이고 장애에 유연한 구성을 설계하는 것이 가장 기본적인 요구사항 중 하나입니다.
특히 이중화를 통하여 장애가 발생하여도 빠르게 대처 할 수 있는 구성에 대한 고려가 필요합니다.
이 부분은 앞부분에서 말하였지만 속도가 느리게 되면 사용자들의 만족도가 줄게 되어 사용의 빈도가 줄어 들 수 있습니다. 그렇기 때문에 빠른 응답 시간과 낮은 레이턴시에 최적화된 아키텍처 구조를 만드는 것이 중요합니다.
사용자가 서비스를 요청하였을 때는 동일한 결과 값을 받을 수 있어야합니다. 만약 내가 접속 된 서버의 위치에 따라 결과 값이 다르게 나오면 서비스를 운용하는데에 있어 큰 문제일 것입니다.
이를 위해서 Session Cluster 등을 같이 고려해야합니다.
현재 처리되어있는 구성에서 더 많은 처리를 필요로 할 때 추가를 할 수 있게끔 생각하는 구조가 필요합니다.