image.png

1. 서버

image.png

서버는 요청에 응답하는 프로그램 또는 하드웨어를 의미한다. 네트워크를 통해 클라이언트의 요청을 받아 데이터를 처리하고, 그 결과를 클라이언트에게 반환하는 역할을 한다. 위와 같은 역할을 수행하는 서버와 클라이언트 관계를 클라이언트 - 서버 모델이라고 부른다.

서버 기술의 본질은 ‘분산된 자원의 중앙 집중식 관리’ 라는 문제 해결에서 출발한다. 초기 컴퓨팅 환경에서 데이터의 일관성 부재, 자원의 중복, 고가 장비의 비효율적 공유 등의 문제는 중앙화된 관리 주체의 필요성이 야기됐다.

때문에 서버의 핵심 목표는 다음과 같다.

  1. 중앙 집중식 자원 관리 - 데이터와 서비스를 한 곳에서 관리함
  2. 데이터의 일관성 보장 - 모든 사용자가 항상 동일한 버전의 데이터에 접근함
  3. 자원 공유 및 비용 절감 - 여러 사용자가 하나의 데이터베이스 또는 공유 장비를 함께 사용함
  4. 동시 접근 허용 - 여러 클라이언트의 요청을 동시에 처리함

반대로 중앙 서버 없이 각 Peer 가 자율적으로 연결되어, 한 Peer 가 다른 Peer 에게 파일을 요청하는 클라이언트가 되기도 하고, 파일을 서빙하는 서버의 역할을 수행하기도 하는 모델을 P2P 모델 이라고 한다. 탈중앙화 구조 덕분에 중앙 서버의 장애나 병목 현상에 자유로워 확장성이 높다.

하지만, 중앙 서버가 없기 때문에 상대 Peer 가 누구인지, 제공하는 파일이 악성코드인지 신뢰하기 어렵고, 네트워크의 서비스 품질이 Peer 들간의 컴퓨터 사양과 인터넷 속도에 달려있기 때문에 일관된 서비스 품질을 기대하기 어렵다.

최근에는 P2P 방식을 잘 사용하지 않는데 위와 같은 이유들 때문도 있지만, 클라우드나 스트리밍 서비스가 발전하고 서버 유지비용이 이전에 비해 저렴해졌기 때문이다.

그럼에도 대규모 데이터 배포나 탈중앙화가 핵심인 시스템(암호화폐 등)에서는 아직도 사용하고 있다.

2. 통신의 기저

1. TCP/IP