본문 바로가기

Distributed System/이론 공부

분산시스템) 목표 overview

Goals

Making resources accessible

리소스를 편하게 접근하도록 사용자에게 제공한다. 여기서 리소스는 로컬 리소스가 아니고 리모트 리소스(remote resources)를 말한다. 예로는 스토리지 서비스, 멀티미디어 서비스, 게임 서비스 등 다양한 예가 있다. 요새는 특정 데이터나 스토리지와 같은 단일 유닛의 서비스 뿐만 아니라 작업 환경 자체를 서비스로 제공해준다. 대표적인 예는 아마존 웹서비스(AWS)가 있다.

Distribution transparency

목적이라기보다 추구하는 바인데, 사용자로 하여금 이 시스템이 커다란 하나의 시스템이라고 느끼게 해야한다. 이를 위해 가능하면 분산되어 있다는 것을 숨겨야한다. 궁극적으로는 사용자가 요청한 서비스가 로컬에서 이루어진다고 생각하게끔 해야 가장 이상적이다. 여기서 transparency의 의미가 헷갈릴 수 있는데, 투명하게 다 보이게 하는 것이 아니고 분산되어 있다는 사실 자체가 투명해져서 안보인다고 생각해야 한다.


그렇지만 항상 분산되어있다는 사실을 숨기는게 좋은것은 아니다. 어떨 경우에는 안좋은 경우도 있다. transparency를 강화하면 할 수록 사용자는 편하게 서비스를 쓸 수 있는 것은 좋은데, 서비스의 퍼포먼스가 떨어질 수 있다.

Openness

서비스를 제공할 때 표준(standard rules)이 있으면 그에 따라 서비스를 제공한다. 기술적인 측면과 정책적인 측면이 혼합된 목적이라고 보면 된다. 나 외에 다른 사람도 같은 룰을 따라 만들면 서로 다르게 만든 시스템도 서로 인터렉션이 가능해진다. 서비스를 요청하는 방법의 표준, 요청하는데 필요한 데이터를 구성하는 방법의 표준, 서비스를 제공받는 방법의 표준이 있으면 서로 다른 개발자들이 서로 다른 분산 시스템을 각자 따로 만들더라도 클라이언트 입장에서는 동일한 방법으로 다양한 서비스를 이용할 수 있게 된다.


네트웨크 애플리케이션을 만들 때 표준 프로토콜을 따르면 따로 커스터마이징 하지 않아도 서로 돌아간다. 대표적인 예는 웹 시스템이다. 웹 서버와 웹 브라우저 사이에 통신하는 방법은 표준을 따라 만든다. 표준 프로토콜을 따르면 누가 웹 서버를 만들든 사용자는 웹브라우저만 있으면 동일한 방법으로 요청할 수 있다.

Scalability

분산 시스템에서 확장성은 중요하다. 구글 드라이브나 드랍박스를 쓰는 이유는 내가 가지고 있는 리소스가 부족하기 때문이다.
확장성은 기술적으로 두 가지 측면이 있다. 먼저 사이즈(size) 측면이다. 사이즈는 크기인데 제공하는 입장에서 제공하는 리소스를 늘려야 할 수도 있다. 요청이 많으면 스토리지, 컴퓨팅 파워, 네트워크 스피드를 늘려야 한다. 또 다른 측면의 사이즈는 많은 수의 사용자에게 서비스를 제공할 수 있어야 한다. 버틸 수 있는 요청 수가 커야 한다. 둘은 일맥상통한다. 많은 수의 사용자를 서포트 하려면 그만큼 많은 리소스를 관리해야한다.


다른 측면은 지리적(geographical) 확장성이다. 건대 안에서 제공하는 분산 시스템을 건대 내에 있는 건대 학생들만 사용할 수 있다고 가정해보자. 협소한 지역에서만 사용하고 요청할 수 있는 것은 지리적으로 스케일러블하지 않다. 분산 시스템 서비스를 사용하는 사용자와 분산 시스템을 제공하는 서버들이 지리적으로 분산되어 있어서 어디에 있든 사용자들이 동일한 퀄리티의 서비스를 요청할 수 있을 때 지리적으로 스케일러블하다.


마지막 측면은 기술적인 측면이 아니고 정책적인 측면의 확장성(administratively scalable)이다. 통신 서비스를 예로들어보면, A라는 회사에서 분산 시스템 서비스를 런칭했다고 가정해보자. 비슷한 서비스를 B와 C에서도 만들었다. 그렇게 되면 사용자 입장에서는 불편하다. A사의 서비스를 이용하던 사용자가 B사로 변경하려 할 때 사용하던 서비스도 바꿔야 한다. 좋은 방법은 A, B, C사가 공동으로 하나의 서비스를 제공하는 것이다. 이런 식으로 administration의 주체인 administrator가 여럿이 있을 때, administrator들이 연합하여 공동의 하나의 분산 시스템 서비스를 제공할 수 있으면 administratively scalable한 서비스가 될 수 있다. 이는 기술적인 측면보다 정책적인 측면으로 더 실현되기 어렵다.