본문 바로가기

Distributed System/이론 공부

분산시스템) 클라이언트

Client

Networked user interfaces

클라이언트 머신의 주된 task는 UI를 제공하는 것이다. UI를 통하여 사용자가 원하는 서비스를 요청하면 사용자 대신 서버에게 요청하는 역할을 한다. 사용자가 서버와의 interaction을 할 수 있도록 해준다.

Application specific protocol

클라이언트는 미들웨어를 통해 서버에게 서비스를 요청한다. (a)는 클라이언트 애플리케이션의 역할이 단순히 UI만 제공하는 것이 아니고 클라이언트 단에서의 어떤 프로세싱을 수행한다. 사용하는 애플리케이션의 종류에 따라 특성에 맞는 서비스를 직접 클라이언트 단에서 요청을 한다. 일반적으로 사용하는 소프트웨어가 이에 해당한다. 클라이언트와 서버 애플리케이션 사이에 애플리케이션마다 특화된 프로토콜을 사용하여 미들웨어와 OS, 네트워크를 통해 서버단에 가서 사용자의 요청을 처리해준다. 비교적 클라이언트에서 하는 일이 더 많다.

Application independent protocol

(b) 애플리케이션 레이어에서는 서버와 직접적으로 애플리케이션 specific 프로토콜을 사용하지 않는다. 클라이언트 프로세스는 하는 일이 거의 없고 미들웨어가 제공해주는 일반적인 서비스만 이용하여 서버단에 서비스를 요청한다. 애플리케이션의 종류에 상관없이 사용할 수 있는 서비스만 이용하고 모든 일은 서버단에서 거의 이루어진다. 클라이언트의 덩치가 작아 thin client 같은 것들을 구성할 수 있다. 클라이언트는 ui 역할만 수행하고 데이터 저장부터 해서 모든 프로세싱은 서버단에서 이루어진다.

 

client ui

 

둘의 미들웨어를 비교해보면 (a)는 해당 application에서만 쓸 수 있는 application specific한 미들웨어가 될 수 있고 (b)는 위에 오는 application이 무엇이 될지 모르니 common 한 형태가 되어야 한다.

 

텀 프로젝트와도 연관이 되는데 CM이라는 미들웨어는 (b)와 같은 목적으로 개발되었다. 공통적인 서비스인 로그인과 같은 것이 있다.

Client-side SW

클라이언트 프로세스는 단순히 ui만 제공하는 것이 아니고 자체적인 프로세싱 기능도 있고 데이터도 관리하는 등 여러 역할을 수행한다.

Distribution transparency

클라이언트 단에서도 Distribution transparency을 제공해주면 좋다. 이상적으로 클라이언트가 사용자에게 Distribution transparency를 제공해주면 사용자가 클라이언트 프로그램을 이용하는데 원격지에 있는 서버랑 통신한다는 사실 자체를 인지하지 못할 때 가장 이상적이라 할 수 있다.


서버단에서는 Distribution transparency가 퍼포먼스 측면 때문에 클라이언트 입장에서보다는 덜 제공해주는 것이 일반적이다.

Access transparency

Access 하려는 리소스가 heterogeneous 하더라도 동일한 방식으로 Access 할 수 있으면 Access transparency 하다고 한다. 클라이언트 프로그램이 미들웨어를 사용할 때 중간 역할을 하는 client stub이라는 레이어가 있다. 애플리케이션이 미들웨어의 서비스를 사용할 때 인터페이스 레이어의 역할을 하는 모듈이다. client stub 계층을 하나 만들어서 client app은 client stub를 이용해서 미들웨어의 서비스를 이용할 수 있다. access 방법이 다른 리소스가 있다면 client stub이 client에게 숨겨준다.

Location, migration, relocation transparency

클라이언트가 특정 서버에 이미 바인딩이 되어 있고 서버에 뭔가 변화가 생기면 클라이언트에 영향을 줄텐데 이때 클라이언트 측에서 사용자에게 숨기는 것을 미들웨어를 통해서 한다.


클라이언트가 어떤 서비스를 요청했는데 제공해주는 서버가 복제된 서버로 여러 개 있다면 미들웨어단에서 퍼포먼스 향상을 위하여 복제된 모든 서버에 보낸 후 모든 서버에서 평행하게 데이터나 서비스를 받으면 더 빠르게 서비스를 받을 수 있다.

 

client replication

Failure transparency

서버와의 연결을 실패했을 때 클라이언트 단의 미들웨어는 그 사실을 가능하면 사용자에게 숨긴다. 일단 연결에 실패하면 반복적으로 연결을 시도하고 그래도 안되면 다른 서버에 연결을 시도한다. 적당한 딜레이 안에 서버와의 연결을 시도한다. 빠른 시간 안에 성공하면 사용자는 모르게 서비스를 제공할 수 있다. 만일 서버와의 연결을 실패했을 때 사용자가 요청한 데이터가 캐시 된 데이터로 있다면 그 데이터를 보내주고 그동안 계속 서버와의 연결을 시도한다.

Concurrency and persistency transparency

클라이언트 단보다는 퍼포먼스 때문에 서버단에서 제공해준다.