[분산 시스템] 9, 10강 - Process (Vitualization, Client-Server 구조)

드림보이즈·2025년 1월 6일
0

주제 : Virtualization, Client-Server 구조에서 Process

1. Virtualization

가상화란
하나의 CPU에서 Concurrent하는 것처럼 보이게 하는 확장개념이다.

이를 통해 하나의 물리적 서버에서 여러 대의 가상머신을 돌릴 수 있다.

1-1. History

70년대에 S/W의 발전 기술보다, 아랫단의 OS의 발전이 빨라져 S/W의 업데이트가 지속적으로 필요했다.

90년대에는 네트워크 기술이 발전하면서, 관리자가 여러 서버의 컴퓨터를 유지하고, 그 위에서 여러 앱을 돌려야 했다. 이 과정에서 여러 OS를 사용할 수 있기에, 가상머신을 통해서 통일을 시킬 수 있었다.

1-2. 4 Types of Interface in Computer system

컴퓨터 시스템에서는, 총 4가지 타입의 인터페이스를 제공한다.

이 인터페이스를 통해 레이어간 상호작용이 가능한 것이다.
가상화는 이 인터페이스를 가상화하여 다른 시스템의 동작을 따라하는 것이 포인트다.

가상화 방법은 2가지가 있는데,

1.Process Virtual Machine

가상머신이 런타임 시스템(응용 프로그램)으로 동작하여, 이 위에서 App을 구동한다.
예시로 VMware, JVM이 있다.

  1. Virtual Machine Monitor

    Hypervisor라고도 불리는, 하드웨어 자원을 추상화해 가상 머신에 가상 하드웨어를 제공한다.
    이 위에 여러 OS를 올릴 수 있다.
    요즘은 이 2번 방식이 중요해지고 있는데,
  • Portability : H/W와 시스템(OS+APP)을 분리해서 옮길 수 있음
  • Reliablity : 해킹을 당해도, 2번은 VMM위에 싹 날리고 초기화하면 그만이다.

2. Client-Server 구조에서 Process

2-1. Client side

클라이언트 시스템의 역할 : 사용자가 원격 서버와 상호작용할 수 있는 수단을 제공
이 상호작용은 2가지 방법으로 가능한데,
1번째 방법은 우리가 일반적으로 아는 방법으로, App 마다 따로따로 통신을 한다.

2번째 방법은 클라이언트 컴퓨터에서 직접적인 원격 서비스 접근을 제공하고, UI만 제공한다.
예를 들어 사용자는 터미널로 입력만 주고 받고, 모든 처리는 서버에서 처리한다.
이를 Thin-Client라고 한다.

2-2. Server side

서버를 구성하는 방법은

  • Iterative Server (반복적 서버)
  • Concurrent Server (병행 서버)
    가 있다.

반복 서버는 서버가 요청을 처리하고 클라이언트에게 응답을 반환하고,
병행 서버는 worker 스레드에게 요청을 전달하고 즉시 다음 요청을 기다리는 방식이다.

포트를 알려면 Daemon 서버에게 포트를 요청해 엔드포인트를 찾는다.

위 디자인의 문제는, 슈퍼서버와 일반 서버가 동시에 run하고 있는 것이다.
더 좋은 개선안으로, 슈퍼 서버만 돌고 있다가, 요청이 오면 서버의 프로세스를 생성해 task를 수행하고, 끝나면 서버를 close하는 방식이다.

Q. 서버가 Task를 진행하는 도중에, 클라이언트가 취소를 할 수 있는가?

Out-of-bound, In-bound data

연결을 맺을 때 일반적인 채널인 in-bound과 동시에, 따로 우선순위가 높은 out-of-bound 연결을 맺어놓을 수 있다.
그리고 취소요청은 여기에 보내는 것이다.

혹은 tcp 헤더에 flag로 out-of-bound 필드가 있는데, 여기서 사용할 수도 있다.

Urgent flag와 Urgent pointer 필드를 사용해서,
수신측이 이 플래그를 보고 해당 데이터를 기다렸다가 다 오면 우선적으로 처리할 수 있다.

Stateless vs Stateful

Stateless인 경우에는 서버가 state를 변경해도 클라이언트에게 알릴 필요가 없다.
반대로 stateful인 경우 영향을 미칠 수 있으므로 알려야 할 수 있다.

둘의 중간지점으로, stateless with soft state가 있다.
일정 시간동안만 상태를 저장하는 것이다.

Stateful server example (File server)

파일서버의 경우, 서버가 client-file의 테이블을 저장할 수 있다.
그리고 client가 요청한 파일에 대해 Open을 해놓을 수 있다.
이러면 매번 open,close를 해야하는 stateless와 비교해 퍼포먼스가 높을 수 있겠다.


profile
시리즈 클릭하셔서 카테고리 별로 편하게 보세용

0개의 댓글