본문 바로가기
학교 공부/분산 및 병렬처리

[분산 및 병렬처리 시스템] Client-Server 가상화

by 그적 2020. 11. 20.

앞 전 글에는 운영체제 가상화(Operating system Virtualization)을 공부했다. 이번엔 Client-Server Architecture에서 가상화를 위한 고려 사항을 알아보자.

 

Virtualization(가상화)란?

대표적인 가상화는 CPU가 하나만 존재하지만, 여러 프로세스를 운영하는 것처럼 환상을 주는 것이다. 

 

Client-Server 가상화

그림 3-8(a)socket 통신으로 생각할 수 있다. 웹 서비스 프로토콜(HTTP)를 통해 client와 server가 통신할 수 있도록 한다. 동일한 프로토콜을 사용하기 위해서 middle ware를 통해 상호작용하거나 통일화시킨다.

 

 

 

그림 3-9XWindow System이 존재한다. 현재는 존재하지 않는, 유닉스 계열의 분산 시스템이다.

User's terminal 화면을 통해 정보를 상호작용할 수 있었다. 원격과 비슷해보이지만, User's terminal에는 저장소가 존재하지 않아 어떠한 기능을 클릭했을 때 해당하는 명령이 수행하는 것이 아닌 server의 application으로 전송하는 방식이다.

- 'dummy terminal' 이라고도 부른다. (= storage와 cpu 존재 X)

- Application의 Xlibrary와  User's terminal의 Xkernel 통신을 위해 X protocol을 사용한다.

 

 

그림 3-10은 서버의 storage가 부족했기 때문에 진화한 시스템이다. client machine들이 강력해졌고, 투명성(transparency)를 제공하기 위한 부가적인 부분들이 추가되었다. server 측에서 state를 동일하게 가져가는 것을 replicated server라고 한다. request가 들어오면 client machine에서 각각의 server들에게 replicated request를 보낸다. 이 중에서 가장 빠르게 도착한 응답을 client에게 전달하고, 하나의 server가 고장이 났을 경우에 서비스를 유지시키기 위해 다른 server에서 해당 request를 수행을 넘겨받을 수 있다.

 

 

 

서버 쪽 이슈

- Iterative Server : 반복 서버, 하나의 스레드로 여러 클라이언트의 요청을 처리

- Concurrent Server : 병행 서버, 여러 개의 스레드로 클라이언트의 요청을 동시에 처리

 

client가 server로 접근하기 위해서 IP adress와 port number가 필요하다. 어떻게 서버의 IP address와 port number를 알 수 있을까? well-known port를 사용하지 않을 때, 포트 번호를 알 수 있는 두 가지 방법이 존재한다.

 

① Deamon

 : 서버가 활성화되었을 때, 데몬 프로세스를 CPU에 띄워두도록 한다. 데몬 프로세스에 각각의 스레드의 port number를 저장해두었기 때문에, 데몬 프로세스는 요청받은 스레드의 port number를 end-point table에서 찾아 가져온다. 이때, 서버가 유지되는 동안에 데몬 프로세스를 생성시켜두기 때문에, 하나의 서비스에서 여러 개의 서비스를 제공할 때 추천하지 않는다.

(※ 데몬 프로세스의 포트 번호는 well-known port number이다.)

 

② Super Server

 : 클라이언트가 서버의 IP address를 가지고 super server에 접근을 하면, super server가 요청에 해당하는 서브 프로세스를 생성한다. 그 후, 생성된 actual server가 client에게 서비스를 제공한다. 

(Super Server의 포트 번호는 well-known port number이다.)

댓글