메뉴

문서정보

목차

서버 & 클라이언트 모델

서비스 제공자 (service provider)과 서비스 요청자 (service requester)로 구분되는 네트워크 모델이다. 서비스 제공자의 역할을 하는 측을 서버, 서비스 요청자의 역할을 하는 측을 클라이언트라고 한다. 원칙대로라면 프로그램이 서버클라이언트의 역할을 하지만 많은 경우 서버 컴퓨터, 클라이언트 컴퓨터로 하드웨어적으로 역할을 구분하기도 한다. 일반적으로 서버 프로그램이 탑재되는 컴퓨터와 클라이언트 프로그램이 탑재되는 컴퓨터의 하드웨어적 특성이 명확하게 나뉘기 때문이다.

서버 / 클라이언트 모델에서 모든 자원은 서버에 집중된다. 클라이언트는 데이터 프리젠테이션 (재현)을 위한 최소한의 자원을 가지는게 일반적이다. 서버는 클라이언트의 요청을 처리하고 자원을 공유하고 관리해야 하기 때문에 고성능의 컴퓨터를 사용한다.

대다수의 네트워크 서비스들이 서버 / 클라이언트 모델을 기반으로 만들어 진다. HTTP, SMTP, Telnet, DNS와 같은 고전적인 서비스에서 부터, MMORPG와 같은 게임, 멀티미디어 서비스의 상당수가 이 모델을 기반으로 한다.

장점

  1. 서버와 클라이언트의 역할이 분리된다. 이는 프리젠테이션 영역과 데이터 처리 영역이 분리될 수 있음을 의미하는데 때문에 유지 보수가 매우 쉬워진다. 수정, 업그레이드, 패치를 클라이언트와 서버 서로 독립적으로 가져갈 수 있기 때문이다.
  2. 데이터가 서버에 집중되므로 보안을 유지하기가 수월하다. 서버는 클라이언트의 자원에 대한 액세스 쉽게 권한을 제어할 수 있다. 클라이언트의 모든 정보를 가지고 있기 때문이다.
  3. 서버 클라이언트 모델은 오랜시간에 걸쳐 검증되었다. 보안상으로 안전하며, 사용자/개발자 친화적이며 사용하기 쉽다.

단점

  1. 서버 클라이언트 모델의 고질적인 문제는 서버에 네트워크 트래픽과 데이터가 집중된다는 점이다. 클라이언트의 접속이 어느정도 수준을 넘어서게 되면 처리 비용이 급격히 증가하는 문제가 있다.
  2. P2P와 같은 분산형 네트워크에 비해서 견고함이 떨어진다. 인터넷(:12)과 같은 분산 네트워크 구조가 아닌, 중앙 집중 형 네트워크 구조를 따르기 때문이다.

peer-to-peer 모델

최근들어 종종 이슈가 되기도 하는 네트워크 모델이다. 특히 Gnutella, Kazaa와 같은 사용자 기반 파일 공유 프로그램의 저작권 침해관련된 문제로 언론매체에 소개되기도 했었다.

Peer-to-peer (이하 P2P) 모델의 핵심은 중앙서버에서 자원을 집중해서 관리하는 대신, 네트워크의 각 노드가 자원을 분산해서 관리하는데 있다. 좀더 인터넷 모델에 가까운 방식이다.

P2P모델 vs 서버 클라이언트 모델

최근의 네트워크 프로그램의 거의 대부분은 아래 두 모델 중 하나를 선택한다.

인터넷 구조 - 네트워크 구조

컴퓨터 시스템 구조 분류

컴퓨터 시스템은 Centralized SystemDistributed system으로 나눌수 수 있다. Distributed System은 다시 서버-클라이언트 모델Peer-to-Peer모델로 나눌 수 있다. 다시 서버-클라이언트 모델은 모든 클라이언트를 하나의 서버에서 처리하는 Flat 방식과 확장성을 높이기 위해 계층적으로 서버를 구성하는 Hierarchical 방식으로 나눌 수 있다. 지나치게 복잡하지 않은 서비스라면 Flat 서버-클라이언트 모델을 선호한다. 만약 관리해야 하는 클라이언트가 크게 늘어날 수 있있다면 Hierarchical 방식을 채택할 수도 있다.

P2P 모델은 Purehybrid로 나뉜다. pure는 중앙서버가 존재하지 않는 구조를 말한다. hybrid는 사용자 정보나 저장소 정보와 같은 메타정보를 가진 서버가 존재한다. Napster와 iMesh가 hybrid P2P모델을 채택했다.

P2P 구조

정의

Pure P2P 구조


Hybrid P2p 구조


장점과 단점

서버 클라이언트 모델

정의

구조

  • 서버
  • 클라이언트
  • Flat 구조, Hierarchical 구조

장점과 단점

P2P 시스템 애플리케이션 분류


  • 이중 Communication and Collaboration P2P 애플리케이션에 관심이 간다.
  • IRC 프로토콜을 이용한 Server/Client 모델 방식에 대한 분석과
    • IRC 프로토콜을 이용할 경우 10K 문제 해결에 중점을 두면 될 것 같다.
  • P2P방식의 구현물에 대한 분석을 하고 싶다.