728x90

면접 준비 키워드 중 분산 컴퓨팅이 있는데,

 

분산 시스템의 정의는 뭐.. 이건 뭐 사람 마다 다 다르게 정의하는 것 같아서 그 중 마음에 드는 것만 추려 왔다.

 

그전에 분산 시스템이란 무엇인가.. 간단히 정리해보면

표현이 조금 다를 수 있겠지만, 앞서 정리했던 MSA나 SOA도 분산 시스템의 한 아키텍처이다. 

여러 컴퓨팅 장비들이 하나로 모여 하나의 컴퓨터, 하나의 서비스로 동작하게 하는 것이 분산 시스템이기 때문이다. 

 

븐산 시스템을 사용하게 되면, 우선 성능이 더 좋아진다. 당연히 장비를 더 많이 사용하는 것이기 때문에.. 그리고 신뢰도도 향상된다. 한 장비가 에러가 생겨 작동을 안해도, 다른 장비에서 계속해서 그 업무를 진행할 수 있기 때문이다. 이 외에도 자원을 효율적으로 사용할 수 있는 등 여러 장점이 있다.

 

여러 컴퓨터, 한 시스템.

이러면 클라우드가 생각 되는데, 정리를 해보면.

분산 시스템은

클러스터와 그리드 컴퓨팅으로 구분할 수 있다. 동일한데, 클러스터는 LAN을 활용한 것이라면, 그리드 컴퓨팅은 WAN을 활용하는 것으로 구분 할 수 있다.

네트워크로 연결된 컴퓨터들이 하나의 목적을 위해 같이 작동한다. 그리고 작동은 각 컴퓨터가 진행을 한다.(일을 나눠서 처리한다.)

/ 다르게 보면, 그리드는 넓은 지역에 걸쳐 특정 서비스를 여러 컴퓨터의 힘을 빌어 해결하려는 시스템이라고 본다면,

클러스터는 특정 서비스를 좀 더 문제 없이 사용하려는 분산 시스템으로 볼 수 있다. Active - Active 구조, Active-Standby 구조, 이중화 구조.. 등으로 구성해서 특정 서비스의 품질을 향상시킬 수 있음.

 

여기서 클라우드는  네트워크로 연결된 여러 컴퓨터가 하나의 목적을 위해 같이 작동하는 것은 맞지만, 클라우드는 그 하나의 목적(시스템)이 클라우드 인 것이다. 그래서 작동은 클라우드 시스템으로서 작동한다.(일은 클라우드 시스템이 한다.)

그래서 이 클라우드 시스템에서 IaaS, PaaS, SaaS 등의 서비스를 제공한다. 혹은 클라우드를 통해 분산 시스템을 구성할 수도 있다.

 

분산 시스템 설계의 고려사항이라고 적은 것들을 보면, 대부분 클러스터 컴퓨팅의 분산 시스템 관점에서 쓰여진 것 같다.

각자 중요하게 다루는 고려사항이 여러가지이지만, Scalable Web Architecture And Distributed Systems 여기에 있는 내용을 기준으로 정리해본다.

1. 가용성.

당연한 것인데, 분산 시스템에서는 가용성을 높게 확보할 수 있다. 장비 이중화, 또는 Active-Active, Active-Standby 구조로 장애가 일어나도 문제 없이 무중단 혹은 거의 최소의 중단만으로 서비스 제공이 가능하다. 또한 백업장비 등을 따로 둠으로써 복구도 빠르게 진행 시킬 수 있다.

2. 성능. 

이 또한 당연.. 왜 이런 것들을 고려사항으로 적은지 모르겠지만.. 여튼 분산 시스템에서 성능을 높이지 못했다면, 그건 잘 못 되었다고 볼 수 있다. 로드밸런서 등을 통해서 부하를 나눠 응답시간을 줄이고, 여러 컴퓨팅 노드로 서비스를 빠르게 처리함으로써 성능을 향상 시킬 수 있다.

3. 확장성.

분산 시스템으로 구성하지 않으면, 장비 하나로 서비스를 구성했다면, 확장을 위해서는 Scale Up 구조로 가야한다. Scale UP에는 한계가 있기 마련이고, 또 하나의 서비스 중 특정 작은 몇 서비스만 확장이 필요할 수도 있다. 분산 시스템에서는 이러한 문제들이 해결 가능하다. Scale Out 형태로 좀 더 큰 확장이 가능하고, 분산 시스템이기 때문에 특정 서비스의 장비만 확장시키는 것도 가능하다. 또한 축소도 어렵지 않고, 특정 A 서비스에 쓰던 장비를 특정 B 서비스에 이용하는 것으로 변경도 가능하는 등 분산 시스템을 사용하게 되면 효과적이고 효율적인 확장이 가능하다.

4. 관리성.

관리성은 분산 시스템에서 신경써서 고려해야 될 부분이라고 생각한다.(드디어!) 높은 가용성, 높은 성능, 높은 확장성을 보장하기 위해 복잡한 구조로 아키텍처가 구성되게 된다.(단순 컴퓨터들을 네트워크로 연결 시키고 끝이 아니다.) 그러다보니, 관리 포인트도 많아지게 되고, 서비스의 업데이트 및 수정, 운영 등이 어려워 질 수 있다. 이러한 점을 고려하여 시스템을 고려할 때 관리성이 좋게 구성해야 한다.

5. 비용.

이 또한 분산 시스템에서 신경 써서 고려해야 되는 부분이다. 가용성 성능 등을 높이기 위해 장비를 계획없이 늘리게 된다면, 비용이 필요이상으로 들어가게 될 수 있다. 또한 장비가 늘어나면서 관리르 위한 비용, 운용을 위한 비용등도 증가 할 수 있어, 아키텍처 구성 시 비용을 충분히 감안하여야 효율적인 분산시스템 구성이 가능하다.

 

 

 

+ Recent posts