본문 바로가기

협동분산시스템

Code migration - 1

반응형

서버 모드가 많아질수록, 즉 서버 클러스터의 크기가 커질수록 고장날 확률이 높아져서 지속적인 관리가 필요하다.

하나의 서버 머신이 고장날 확률을 p, 서버 노드의 개수를 N, 고장날 확률이 독립사건이라고 가정하면

 

서버가 고장없이 잘 돌아갈 확률은 (1-p)^N이다.

 

이 때, self-manage가 가능한 서버 클러스터 노드가 개발될 수 있으면 관리가 수월해질 것이다.

 

Code migration : 실행 중인 프로세스를 다른 머신으로 옮기기

 

프로세스 부하가 많은 프로세스에서 놀고 있는 머신쪽으로 부하를 옮기면 성능이 향상되므로 code migration 작업이 필요하다.

 

분산 시스템에서 용량을 최적화하는 일보다 더 중요한 일은 전체 통신 횟수를 줄이는 일(Communication latency)이다.

ex) 서버 단의 입력 폼 체크 기능을 클라이언트 단으로 옮겨와서 확인한다.

-> 서버-클라이언트의 통신 횟수가 줄어들어 전체 delay가 감소한다.

 

code migration을 사용하면 클라이언트가 실행할 코드를 Code repository에서 받아온다.

code를 다운받는 형태이므로 flexible해진다.

이렇게 되면 분산 시스템을 동적으로 구성할 수 있다. 하지만 security 문제가 발생한다.

 

프로세스를 이동시킨다고 생각해보자.

프로세스는 크게 세가지 파트로 나눠져있다.

 

1) code segment

: instruction들의 집합체로,

바뀌지 않는 부분이기 때문에 옮기기 쉽다.

 

2) resource segment

: OS가 관리하는 resource이다.

특징에 따라서 옮기기 쉬울수도, 옮기는게 불가능한 경우도 있다.

ex) Files, printers, devices, other processes, etc

 

3) excution segment

: 실행 정보 = 프로세스의 상태정보 = context 정보

이런 데이터는 메모리에 올라가있어서 옮기기 쉽지 않고, 상태가 계속 변한다. 예를들어 메모리 주소값을 옮겨도 의미가 없다.

ex) private data, stack, PC, etc

 

migration 종류를 두 버전으로 나눌수 있다.

mobility model

- weak, strong

- sender-initiated, receiver-initiated

 

- Weak mobility

: 간단한 code segment만 옮기는 일이므로 쉽다.

코드가 옮겨가는 타겟 머신이 해당 코드를 실행할 수 있는 환경이 되어있어야한다는 요구사항이있다.

ex) Java applet : 웹 서버에 있다가 웹 브라우저가 요청하면 다운로드된다.

 

weak mobility에는 두가지 타입이 존재한다.

1) 타겟 프로세스가 직접 코드를 실행하는 경우

2) 타겟 프로세스가 별도의 프로세스로 실행하는 경우

1)은 java applet을 예로 들 수 있고, security 문제가 발생하지만 별도의 프로세스를 만들 필요가 없다.

2)는 성능은 조금 떨어지지만 security 측면에서는 보호가 된다.

 

- Strong mobility

: code + resource + execution 전체, 즉 프로세스를 이동시킨다.

지금 돌고있는 프로세스를 정지시킨후 이동시켜 다시 실행을 지속할 수 있으면 된다

weak보다 좀더 일반적인 방법이지만, 구현하기 까다롭다.

 

strong mobility에도 두가지 타입이 존재한다.

1) move : 파일 이동으로 원래 머신에서 지워진다.

2) clone : 파일 복제로 원래 머신에도 있다.

 

누가 migration을 시작하는가? 에 따라 sender/receiver initiated로 나뉜다.

Sender-initiated

: 코드가 실행되던 곳에서 migration을 시작된다.

ex) 웹 DB 서버 쪽으로 서치하는 프로그램을 보낸다.

 

- Receiver-initiated

: 타겟머신에서 migration이 일어난다.

 

sender는 서버에게 프로그램을 요청할때 권한이 있어야 해서

굳이 비교하자면 sender보다 receiver가 더 간단하다. 

 

반응형

'협동분산시스템' 카테고리의 다른 글

Communication  (0) 2019.04.19
Code migration - 2  (0) 2019.04.16
Servers : Server clusters-3  (0) 2019.04.16
Servers : Server clusters-2  (0) 2019.04.16
Servers : Server clusters-1  (0) 2019.04.15