본문 바로가기

전체 글

(67)
분산시스템) 서버 Server General design issues client의 경우 사용자 편의에 주안점을 둔다면 서버의 경우 서비스를 제공하는 입장이므로 performance가 주된 디자인 이슈가 된다. Organizing servers (1) Iterative server 서버 프로세스가 하나밖에 없어서 순차적으로 다 한다는 의미이다. single process. (2) Concurrent server 다중 스레드를 사용하여 concurrent 하게 task를 수행할 수 있도록 구성한다. iterative server보다 performance가 더 좋다. 멀티스레드나 fork를 통하여 새로운 프로세스 만들어서 할 수 있다. fork를 사용하는 대표적인 예는 UNIX systems이 있다. 메인 데몬 프로세스가 사..
분산시스템) 클라이언트 Client Networked user interfaces 클라이언트 머신의 주된 task는 UI를 제공하는 것이다. UI를 통하여 사용자가 원하는 서비스를 요청하면 사용자 대신 서버에게 요청하는 역할을 한다. 사용자가 서버와의 interaction을 할 수 있도록 해준다. Application specific protocol 클라이언트는 미들웨어를 통해 서버에게 서비스를 요청한다. (a)는 클라이언트 애플리케이션의 역할이 단순히 UI만 제공하는 것이 아니고 클라이언트 단에서의 어떤 프로세싱을 수행한다. 사용하는 애플리케이션의 종류에 따라 특성에 맞는 서비스를 직접 클라이언트 단에서 요청을 한다. 일반적으로 사용하는 소프트웨어가 이에 해당한다. 클라이언트와 서버 애플리케이션 사이에 애플리케이션마다 특화된..
분산시스템) 가상화 Virtualization CPU는 하나이지만 동시에 실행되고 있는 것 같은 환상을 주는 것으로 한 단계 더 확장시키면 자원을 가상화할 수 있다. 예를 들어 윈도우 머신으로 리눅스를 돌리고 싶으면 기본 OS나 하드웨어 플랫폼은 윈도우이지만 그 위에 리눅스의 역할을 흉내 낼 수 있는 가상 머신의 도움을 받아 가상으로 리눅스를 돌릴 수 있다. 1. 작동방식 어떤 애플리케이션인 프로그램이 있는데 특정 타겟 플랫폼을 목적으로 개발이 된다. 윈도우라면 윈도우용 개발 인터페이스를 이용해서 만들어진다. A라는 인터페이스를 이용해서 개발되었고 이 프로그램은 A라는 OS에서 돌아간다. 이것을 또 다른 시스템 B에서 돌아가게 하고 싶으면 B 인터페이스를 이용해서 다시 원래 프로그램 내용을 바꾸든지 해야 한다. 그러지 말고..
분산시스템) 프로세스와 스레드 Processes 이번 포스트에서는 분산 시스템에서 프로세스의 역할이 어떻게 될지, 원격지로 떨어져 있는 컴퓨터 사이에서 프로세스들 간의 관계를 어떻게 지어야 할지에 대한 설계를 고민해본다. Threads 로컬 컴퓨터에서 concurrent한 task가 동작될 수 있도록 해준다. 다중 스레드의 대표적인 예는 채팅 프로그램이다. 하나는 사용자가 입력하는 input을 기다리는 역할을 하는 스레드가 있고 상대가 보낸 데이터를 화면에 보여주는 역할을 하는 스레드가 필요하다. 따라서 두 개 이상의 스레드가 동시에 돌아가야 한다. 보통 프로그램을 작성할 때 task를 함수 단위로 작성한다. 프로세스와 cost를 비교해보면 스레드를 통해 concurrent 하게 돌리는 것이 context switching overh..
분산시스템) 시스템 아키텍쳐(3) - 미들웨어 Architectures vs Middleware 분산 시스템을 개발할 때 많은 경우 미들웨어 형태로 제공된다. 애플리케이션이 필요로하는 서비스를 미들웨어를 통해서 요청하면 된다. 코드 시스템도 일종의 미들웨어 역할을 하는 시스템이라 볼 수 있다. 애플리케이션이 요청만 하면 overlay 네트워크를 구성하고 데이터를 찾아주는 식의 P2P로 연결하는 서비스를 코드 시스템이 해준다. 노드들이 사용하는 미들웨어 아키텍쳐도 너무 정적으로 만들지 않고 다이나믹하게 adaptive하게 만드는 것이 좋다. Middleware의 장점 애플리케이션을 개발하는 것이 수월해진다. 모든 것을 애플리케이션이 개발할 필요 없고 미들웨어에서 제공하는 서비스는 요청해서 쓰면된다. 프로그래밍할 때 라이브러리를 사용하는 것과 같다. 개..