맨위로가기

클라이언트 서버 모델

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

클라이언트-서버 모델은 서비스를 요청하는 클라이언트와 서비스를 제공하는 서버로 구성된 분산 컴퓨팅 아키텍처이다. 초기 형태는 1960년대 ARPANET 구축 과정에서 나타났으며, 이후 웹, 분산 컴퓨팅 프로젝트 등 다양한 분야에서 활용되고 있다. 클라이언트-서버 모델은 요청-응답 메시지 패턴을 통해 통신하며, 웹 서버, 파일 서버, 데이터베이스 서버 등 다양한 형태로 구현된다. 클라이언트와 서버는 각자의 역할에 따라 기능을 분담하며, 클라이언트 측과 서버 측에서 각각 작업을 수행한다. 이러한 모델은 P2P 모델, 집중 컴퓨팅 등 다른 아키텍처와 비교되며, 한국의 인터넷 환경과 기술 발전에 영향을 미쳤다.

더 읽어볼만한 페이지

  • 클라이언트 - 사용자 에이전트
    사용자 에이전트는 네트워크 프로토콜에서 소프트웨어 에이전트가 자신을 식별하기 위해 제출하는 문자열로, HTTP, SIP, NNTP 프로토콜의 User-Agent 헤더 필드를 통해 전달되며, 서버는 이를 통해 사용자 환경을 파악하고 웹 콘텐츠를 조정할 수 있다.
  • 클라이언트 - 클라이언트 사이드
    클라이언트 사이드는 서버와 통신하는 클라이언트 환경에서 데이터를 처리하는 방식으로, 웹 브라우저의 HTML 문서 해석이나 MMORPG의 그래픽 및 사운드 처리 등이 그 예시이며, 서버 부담 감소와 사용자 경험 향상에 기여하지만 보안, 호환성, 성능 저하 등의 문제점도 가진다.
  • 서버 - 슈퍼 서버
    슈퍼 서버는 TCP 래퍼를 통해 접근 권한을 확인하고 필요에 따라 다른 서버 프로그램을 시작하여 메모리 사용량 감소 및 시스템 관리 효율성을 높이지만, 높은 연결 요청 빈도에서는 성능 저하를 유발할 수 있으며, inetd, launchd, systemd, ucspi-tcp, xinetd 등이 대표적인 구현체이다.
  • 서버 - 씨마이크로
    씨마이크로는 2007년 설립되어 투자 유치 후 AMD에 인수된 서버 개발 회사로, SM10000, SM15000 시리즈 등의 제품을 개발하고 버라이즌과의 협력 및 여러 수상 경력을 보유하고 있다.
  • 모바일 소프트웨어 - 구글 워크스페이스
    구글 워크스페이스는 구글이 제공하는 클라우드 기반 생산성 및 협업 도구 모음으로, Gmail, 구글 드라이브 등을 포함하며, 마이크로소프트 365와 경쟁하며 생성형 AI 기능을 도입했다.
  • 모바일 소프트웨어 - 웨이즈
    웨이즈는 사용자 참여형 실시간 교통 정보 기반 내비게이션 앱으로, 정확한 길 안내와 다양한 기능으로 인기를 얻었지만, 정보 공유 논란, 개인 정보 문제, 보안 취약성 및 국가 안보 우려 등의 비판도 존재한다.
클라이언트 서버 모델
컴퓨터 과학
범주분산 컴퓨팅
패러다임네트워크 아키텍처
아키텍처
유형다계층, 3계층, 클라우드 컴퓨팅
구성 요소클라이언트
서버
서버웹 서버
파일 서버
데이터베이스 서버
메일 서버
프린트 서버
게임 서버
작동 방식
요청-응답 모델클라이언트는 서버에 요청을 보내고, 서버는 요청을 처리한 후 응답을 반환한다.
이점
중앙 집중식 관리서버에서 데이터를 중앙 집중적으로 관리하여 보안 및 유지 보수를 용이하게 한다.
확장성클라이언트 수를 늘리거나 서버의 성능을 향상시켜 시스템의 확장성을 확보할 수 있다.
자원 공유서버의 자원을 여러 클라이언트가 공유하여 효율적인 자원 활용이 가능하다.
단점
서버 의존성서버에 문제가 발생하면 전체 시스템이 작동하지 않을 수 있다.
네트워크 트래픽많은 클라이언트가 동시에 서버에 접속하면 네트워크 트래픽이 증가하여 성능 저하가 발생할 수 있다.
보안 문제중앙 서버가 해킹당하면 전체 시스템의 보안이 위협받을 수 있다.
예시
웹 브라우징웹 브라우저는 웹 서버에 페이지를 요청하고, 웹 서버는 해당 페이지를 클라이언트에게 전송한다.
이메일메일 클라이언트는 메일 서버에 이메일을 요청하고, 메일 서버는 해당 이메일을 클라이언트에게 전송한다.
온라인 게임게임 클라이언트는 게임 서버에 접속하여 게임 데이터를 주고받는다.

2. 역사

클라이언트-서버 모델은 컴퓨터 네트워크에서 역할을 분담하는 방식이다. 초기에는 원격 작업 입력 형태로 나타났으며, 최소한 OS/360(1964년 발표)부터 사용되었다. 이때 요청은 작업 실행, 응답은 출력 형태였다.[11]

'''클라이언트-서버'''형 네트워크. 하나의 서버(그림 중앙)와 하나 이상의 클라이언트로 구성되며, 일대다 통신을 수행한다.


1960년대와 1970년대에 컴퓨터 과학자들은 ARPANET(스탠퍼드 연구소에서 구축)에서 '서버 호스트'(또는 '서비스 호스트')와 '사용자 호스트'(또는 '사용 호스트')라는 용어를 사용했다.[11][12] 1978년 ''클라이언트''라는 단어가 처음 사용되었고,[13] 1992년 ''서버''라는 단어가 일반화되었다.[14][15]

클라이언트-서버 모델에서 서버는 클라이언트보다 많은 리소스를 가질 필요는 없다. 모든 범용 컴퓨터가 다른 호스트의 공유 리소스를 사용하여 기능을 확장할 수 있다.

피어 투 피어 모델은 클라이언트나 서버 역할을 고정하지 않고, 네트워크 참여 컴퓨터(노드)가 양쪽 모두로 작동하는 방식이다.

서버와 클라이언트 통신은 UML시퀀스 다이어그램으로 기술할 수 있다.

2. 1. 초기 역사

클라이언트-서버 아키텍처의 초기 형태는 원격 작업 입력으로, 최소한 OS/360(1964년 발표)까지 거슬러 올라간다.[11] 이때 요청은 작업 실행, 응답은 출력 형태였다.

1960년대와 1970년대에 컴퓨터 과학자들이 클라이언트-서버 모델을 공식화하면서, ARPANET (스탠퍼드 연구소에서 구축)에서 '서버 호스트'(또는 '서비스 호스트')와 '사용자 호스트'(또는 '사용 호스트')라는 용어를 사용했다. 이는 초기 문서 RFC 5[11] 및 RFC 4[12]에 나타난다. 이러한 용어 사용은 1970년대 중반 제록스 PARC에서도 이어졌다.

연구자들이 이러한 용어를 사용한 맥락 중 하나는 Decode-Encode Language (DEL)라는 컴퓨터 네트워크 프로그래밍 언어 설계였다.[11] 이 언어의 목적은 한 컴퓨터(사용자 호스트)로부터 명령을 받아 네트워크 패킷으로 명령을 인코딩하여 사용자에게 상태 보고서를 반환하는 것이었다. 또 다른 DEL 지원 컴퓨터인 서버 호스트는 패킷을 수신, 디코딩하여 사용자 호스트에 형식화된 데이터를 반환했다. 사용자 호스트의 DEL 프로그램은 사용자에게 표시할 결과를 받았다. 이것이 클라이언트-서버 트랜잭션이다. DEL 개발은 미국 국방부가 ARPANET(인터넷의 전신)을 설립한 1969년에 시작되었다.

''클라이언트-호스트''와 ''서버-호스트''는 ''클라이언트''와 ''서버''보다 더 구체적인 의미를 갖는다. 호스트는 네트워크에 연결된 모든 컴퓨터를 말하며, ''서버''와 ''클라이언트''는 컴퓨터 또는 컴퓨터 프로그램을 지칭할 수 있지만, ''서버-호스트''와 ''클라이언트-호스트''는 항상 컴퓨터를 지칭한다. 호스트는 다기능 컴퓨터이며, ''클라이언트''와 ''서버''는 호스트에서 실행되는 프로그램일 뿐이다. 클라이언트-서버 모델에서 서버는 서비스 제공에 더 집중하는 경향이 있다.

''클라이언트''라는 단어는 1978년 제록스 PARC의 컴퓨터 과학자인 하워드 스터지스(Howard Sturgis), 제임스 미첼(James Mitchell), 제이 이스라엘(Jay Israel)의 논문 "분산 파일 시스템에서 데이터와 기능 분리"에서 처음 사용되었다. 저자들은 독자를 위해 이 용어를 정의하고, 사용자와 사용자의 네트워크 노드(클라이언트)를 구별하기 위해 이 용어를 사용한다고 설명한다.[13] 1992년까지 ''서버''라는 단어가 일반적인 용어로 사용되었다.[14][15]

2. 2. 발전 과정

과거 메인프레임 환경에서는 단말기가 문자의 입출력만 담당하고 모든 계산은 메인프레임에서 집중 처리되었다.

1980년대부터 1990년대 후반까지 마이크로컴퓨터의 가격 하락과 성능 향상으로, 메인프레임 컴퓨터 및 미니컴퓨터 중심에서 리치 클라이언트로 계산 방식이 전환되었다.[17] 이는 컴퓨터 리소스에 대한 개별 통제력을 높였지만, 정보기술 관리를 복잡하게 만들었다.[16][18][19]

이후, UNIX 워크스테이션처럼 표시 및 처리 능력이 높은 컴퓨터를 활용하면서, 특정 역할(서버)과 사용자 조작(클라이언트)을 분담하고 네트워크로 연결하는 '''클라이언트-서버 모델'''이 일반화되었다. 이 모델은 클라이언트가 서버에 "요청"을 보내고 서버가 "응답"하는 방식으로 처리한다.

2000년대에는 웹 애플리케이션마이크로아키텍처응용 소프트웨어 수준으로 성숙해졌다. 이러한 성숙, 저렴한 대용량 저장 장치, 서비스 지향 아키텍처의 등장은 2010년대 클라우드 컴퓨팅 트렌드의 주요 요인이었다.[20]

3. 클라이언트-서버 모델의 구성 요소

X 윈도 시스템도 클라이언트-서버 구조의 한 예이다. 클라이언트는 서버와 동일한 컴퓨터에 존재할 수도 있고 네트워크를 통해 연결될 수도 있어, 원격에서도 X 응용 프로그램을 쉽게 불러올 수 있다.[26]

과거 네트워크에서는 메인프레임이라는 대형 컴퓨터에 연결된 단말기에서 이용자가 조작하는 형태가 중심이었다. 당시 단말기는 문자의 입출력만 가능했기 때문에, 모든 계산은 메인프레임에서 집중 처리되었다.

이후, UNIX 워크스테이션과 같이 표시 및 처리 능력이 높은 컴퓨터를 다수 배치하는 것이 비용적으로 유리해졌다. 그 결과, 특정 역할을 집중 담당하는 컴퓨터(서버)와 이용자가 조작하는 컴퓨터(클라이언트)로 역할을 나누고, 이들을 네트워크로 연결하는 '''클라이언트-서버 모델'''이 일반화되었다. 이 모델에서는 클라이언트가 서버에 "요청"을 전송하고, 서버가 이에 "응답"을 반환하는 형태로 처리가 이루어진다.

클라이언트-서버 모델 이외에도 피어 투 피어 모델이 널리 이용된다. 피어 투 피어 모델은 클라이언트나 서버와 같은 역할을 고정하지 않고, 네트워크에 참여하는 컴퓨터(노드)가 경우에 따라 양쪽 모두로 작동하는 방식이다.

소프트웨어 테스트를 위해 클라이언트 단말 내에 로컬 서버를 구축하여 로컬 호스트를 경유한 통신을 하는 경우도 있다.

3. 1. 클라이언트와 서버의 역할

클라이언트(client|고객영어)는 서비스를 사용하는 사용자 혹은 사용자의 단말기를 가리킨다. 서버(Server)는 서비스를 제공하는 컴퓨터이며, 다수의 클라이언트를 위해 존재하기 때문에 일반적으로 매우 큰 용량과 성능을 가지고 있었다. 그러나 웹 2.0에서는 클라이언트이자 동시에 서버인 환경이 많아지면서 역할의 변화가 일어나고 있다.[26]

클라이언트-서버 구조로 된 네트워크 프로그램을 작성하거나, 특정 시스템이 이러한 구조로 만들어져 있다는 것은 클라이언트와 서버가 각자의 역할에 맞게 구성됨을 의미한다. 대표적인 예로 월드 와이드 웹이 있다. 웹사이트에서는 웹 서버(IIS, Apache)가 서버 역할을 하고, 사용자가 쓰는 웹 브라우저(파이어폭스 또는 MS의 인터넷 익스플로러)가 클라이언트 프로그램이 된다. 하지만, 최근에는 네트워크 응용 프로그램들의 기능 고도화로 클라이언트이면서 동시에 서버이거나, 그 반대인 경우도 종종 볼 수 있다.

3. 2. 클라이언트와 서버의 통신

클라이언트와 서버는 요청-응답 메시지 패턴으로 메시지를 교환한다. 클라이언트는 요청을 보내고 서버는 응답을 반환한다. 이러한 메시지 교환은 프로세스 간 통신의 한 예이다.[2] 통신을 위해 컴퓨터는 공통 언어를 가지고 있어야 하며, 클라이언트와 서버 모두 무엇을 기대해야 하는지 알 수 있도록 규칙을 따라야 한다. 통신의 언어와 규칙은 통신 프로토콜에 정의되어 있다. 모든 프로토콜은 응용 계층에서 작동한다. 응용 계층 프로토콜은 대화의 기본적인 패턴을 정의한다. 데이터 교환을 더욱 공식화하기 위해 서버는 응용 프로그래밍 인터페이스 (API)를 구현할 수 있다.[3] API는 서비스에 접근하기 위한 추상화 계층이다. 특정 콘텐츠 형식으로 통신을 제한함으로써 구문 분석을 용이하게 한다. 접근을 추상화함으로써, 플랫폼 간 데이터 교환을 용이하게 한다.[4]

일반적으로 서비스는 컴퓨터 자원의 추상화이며, 클라이언트는 서버가 요청을 처리하고 응답을 전달하는 방식에 대해 관심을 가질 필요가 없다. 클라이언트는 관련 응용 프로토콜, 즉 요청된 서비스에 대한 데이터의 내용과 형식을 기반으로 응답을 이해하기만 하면 된다.

서버는 짧은 시간 안에 많은 개별 클라이언트로부터 요청을 받을 수 있다. 컴퓨터는 특정 시점에 제한된 수의 태스크만 수행할 수 있으며, 클라이언트로부터의 들어오는 요청을 우선 순위 지정하여 처리하기 위해 스케줄링 시스템에 의존한다. 악용을 방지하고 가용성을 최대화하기 위해 서버 소프트웨어는 클라이언트에 대한 가용성을 제한할 수 있다. 서비스 거부 공격은 과도한 요청률로 서버를 과부하 시켜 요청을 처리해야 하는 서버의 의무를 악용하도록 설계되었다.

민감한 정보를 클라이언트와 서버 간에 통신해야 하는 경우 암호화를 적용해야 한다.

서버와 클라이언트의 통신을 기술하기 위해 UML시퀀스 다이어그램을 사용할 수 있다. 예를 들어, 월드 와이드 웹 (Web) 상의 온라인 스토어를 이용하는 경우, 온라인 스토어의 이용자가 사용하는 컴퓨터나 웹 브라우저가 '''클라이언트'''에 해당하고, 온라인 스토어의 데이터베이스 관리 시스템이나 웹 서버가 '''서버'''에 해당한다. 웹 브라우저가 웹 페이지를 표시하는 요청을 보내면, 서버는 필요한 정보로부터 웹 페이지 데이터를 동적으로 생성하여, 이를 응답으로 반환한다. 이것을 수신한 클라이언트 측의 웹 브라우저가 페이지를 표시함으로써, 이용자가 해당 웹 페이지를 열람·이용할 수 있다.

3. 3. 서버의 종류

4. 클라이언트-서버 모델의 종류

클라이언트-서버 모델은 역할 분담 방식에 따라 여러 종류로 나눌 수 있다. 넓은 의미로는 클라이언트와 서버가 처리 역할을 분담하는 분산 컴퓨팅을 의미하며, 다층 아키텍처를 포함하기도 한다. 좁은 의미로는 2계층 아키텍처나 리치 클라이언트 모델을 가리킨다.

4. 1. 광의의 클라이언트-서버

광의의 클라이언트-서버는 클라이언트와 서버가 처리 역할을 분담하는 분산 컴퓨팅을 의미하며, 서버가 여러 계층으로 나뉘는 다층 아키텍처를 포함하기도 한다.

4. 2. 협의의 클라이언트-서버

협의의 클라이언트-서버 모델은 2계층 아키텍처나 리치 클라이언트 모델을 가리키는 경우가 있다.

5. 클라이언트 측과 서버 측

클라이언트와 서버는 네트워크를 통해 서로 연결되어 다양한 서비스와 기능을 제공한다. 클라이언트/서버 간 처리 작업은 분리되어 있는데, 클라이언트는 주로 사용자 입력에, 서버는 공유 데이터 처리 및 저장, 웹 페이지 지원, 네트워크 활동 관리에 초점을 맞춘다.[26]

클라이언트 측과 서버 측의 주요 차이점은 다음과 같다.


  • 작업: 클라이언트 측은 사용자 인터페이스와 상호작용을 담당하고, 서버 측은 데이터 처리 및 저장, 네트워크 관리 등을 담당한다.
  • 보안: 클라이언트 측 취약점은 사용자 컴퓨터에서 발생하며, 서버 측 취약점은 서버에서 발생한다.
  • 프로그래밍 언어: 클라이언트 측은 주로 HTML, 캐스케이딩 스타일 시트(CSS), 자바스크립트를 사용하고, 서버 측은 C#, 자바, Perl, PHP, 파이썬, Ruby, Node.js, Swift 등 다양한 언어를 사용한다.

5. 1. 클라이언트 측

클라이언트 측은 클라이언트가 컴퓨터 네트워크에서 수행하는 작업을 의미한다.[10] 일반적으로 클라이언트는 사용자의 로컬 컴퓨터, 스마트폰 또는 기타 장치에서 실행되어 필요에 따라 서버에 연결되는 웹 브라우저와 같은 컴퓨터 응용 프로그램이다.

다음은 클라이언트 측에서 작업을 수행하는 주요 이유이다.

  • 클라이언트에서 사용 가능하지만 서버에서는 사용할 수 없는 정보나 기능에 접근해야 할 때
  • 사용자가 작업을 관찰하거나 입력을 제공해야 할 때
  • 서버가 모든 클라이언트에 대해 적시에 작업을 수행할 처리 능력이 부족할 때


네트워크를 통해 데이터를 전송하지 않고 클라이언트가 작업을 수행할 수 있는 경우, 작업 시간이 단축되고 대역폭 사용량이 줄며 보안 위험이 감소한다.[10]

컴퓨터 보안에서 클라이언트 측 취약점 또는 공격은 서버 측 공격이나 중간자 공격이 아닌, 클라이언트/사용자 컴퓨터 시스템에서 발생한다.[7][8][9] 예를 들어, 암호화된 파일이나 메시지를 해독하려면 사용자 컴퓨터에 보관된 키가 필요하다면, 클라이언트 측 공격은 공격자가 해독된 내용에 접근할 수 있는 유일한 방법이 될 수 있다.

월드 와이드 웹에서 클라이언트 측에서 평가되거나 실행되는 일반적인 컴퓨터 언어는 다음과 같다.[10]

5. 2. 서버 측

서버 측은 서버에서 실행되는 프로그램 및 작업을 의미한다. 이는 클라이언트에서 실행되는 클라이언트 측 프로그램 및 작업과 대조된다.[10] "서버 측 소프트웨어"는 사용자의 로컬 컴퓨터, 스마트폰 또는 기타 장치에서 접근 가능한 원격 서버 하드웨어에서 실행되는 웹 서버와 같은 컴퓨터 응용 프로그램을 지칭한다. 이러한 작업은 클라이언트에서 사용할 수 없는 정보나 기능에 접근해야 하거나, 클라이언트 측에서 수행하는 것이 느리거나, 신뢰할 수 없거나, 안전하지 않기 때문에 서버 측에서 수행될 수 있다.

클라이언트 및 서버 프로그램은 표준화된 프로토콜을 사용하여 서로 통신하는 무료 또는 상용 웹 서버웹 브라우저와 같이 일반적으로 사용 가능한 프로그램일 수 있다. 또는 프로그래머가 서로 함께 사용할 수 있는 자체 서버, 클라이언트 및 통신 프로토콜을 작성할 수 있다.

서버 측 작업에는 클라이언트 요청에 대한 응답으로 수행되는 작업과 유지 관리 작업과 같이 클라이언트 중심이 아닌 작업이 모두 포함된다.[5][6]

컴퓨터 보안 컨텍스트에서 서버 측 취약점 또는 공격은 클라이언트 측이나 두 측 사이가 아닌 서버 컴퓨터 시스템에서 발생하는 공격을 의미한다. 예를 들어, 공격자는 서버의 데이터베이스에서 데이터를 악의적으로 변경하거나 무단으로 액세스하기 위해 웹 애플리케이션SQL 삽입 취약점을 악용할 수 있다. 또는 공격자는 기본 운영 체제의 취약점을 사용하여 서버 시스템에 침입한 다음 서버의 권한 있는 관리자와 동일한 방식으로 데이터베이스 및 기타 파일에 액세스할 수 있다.[7][8][9]

월드 와이드 웹 환경에서 일반적으로 사용되는 서버 측 컴퓨터 언어는 다음과 같다.[10]

그러나 웹 애플리케이션 및 웹 서비스는 표준 기반 웹 브라우저에 사용할 수 있는 형식으로 데이터를 반환할 수 있기만 하면 (중개 프로그램을 통해) 거의 모든 언어로 구현할 수 있다.

6. 클라이언트-서버 모델의 활용 사례

데스크톱 컴퓨터나 노트북 컴퓨터는 네트워크를 통해 서버와 연결되어 다양한 서비스 및 기능을 제공받는다. 클라이언트-서버 모델에서는 컴퓨터의 처리 작업이 클라이언트와 서버로 분리된다. 클라이언트는 사용자 입력에 초점을 맞추고, 서버는 공유 데이터의 처리 및 저장, 웹 페이지 지원, 네트워크 활동 관리 등의 역할을 수행한다.[26]

6. 1. [[월드 와이드 웹]] (Web)

월드 와이드 웹은 클라이언트-서버 구조의 대표적인 예이다. 웹사이트에서는 웹 서버(IIS, Apache)가 서버 역할을 하고, 사용자가 쓰는 웹 브라우저(파이어폭스 또는 MS의 인터넷 익스플로러)가 클라이언트 프로그램이 된다.[26]

온라인 뱅킹 서비스의 경우, 은행 고객이 웹 브라우저(클라이언트)를 사용하여 접속하면 은행의 웹 서버에 요청을 보낸다. 고객의 로그인 자격 증명은 데이터베이스에 저장될 수 있으며, 웹 서버는 클라이언트로서 데이터베이스 서버에 접근한다. 애플리케이션 서버는 은행의 비즈니스 로직을 적용하여 반환된 데이터를 해석하고, 웹 서버에 입출력을 제공한다. 마지막으로, 웹 서버는 결과를 고객의 웹 브라우저로 반환하여 표시한다.[26]

이러한 클라이언트-서버 메시지 교환의 각 단계에서 컴퓨터는 요청을 처리하고 데이터를 반환하는데, 이것이 요청-응답 메시징 패턴이다. 모든 요청이 충족되면 시퀀스가 완료되고 웹 브라우저는 고객에게 데이터를 표시한다.[26]

6. 2. 분산 컴퓨팅 프로젝트

SETI@home과 Great Internet Mersenne Prime Search는 분산 컴퓨팅 프로젝트의 예시이다. 이러한 프로젝트에서 대부분의 작업은 클라이언트 측에서 이루어지지만, 서버는 클라이언트 조정, 분석할 데이터 전송, 결과 수신 및 저장, 프로젝트 관리자에게 보고 기능 제공 등의 역할을 수행한다.[10]

구글 어스와 같은 인터넷 기반 사용자 애플리케이션의 경우, 지도 데이터를 쿼리하고 표시하는 작업은 클라이언트 측에서 이루어진다. 서버는 지도 데이터의 영구적인 저장, 사용자의 쿼리를 클라이언트에 반환할 지도 데이터로 해결하는 등의 역할을 담당한다.

6. 3. 기타

클라이언트-서버 모델 외에 널리 이용되는 네트워크 아키텍처로는 피어 투 피어 모델이 있다. 피어 투 피어 모델은 클라이언트나 서버와 같은 역할을 고정하지 않고, 네트워크에 참여하는 컴퓨터(노드)가 경우에 따라 양쪽 모두로 작동하는 방식이다.

서버와 클라이언트의 통신을 기술하기 위해 UML시퀀스 다이어그램을 사용할 수 있다.

7. 다른 아키텍처와의 비교

클라이언트-서버 모델은 서버가 다수의 클라이언트에 서비스를 제공하는 중앙 집중식 시스템으로 설계된다. 서버의 성능, 메모리, 저장 용량은 예상되는 작업 부하에 맞게 확장되어야 한다. 부하 분산 및 장애 조치 시스템은 서버를 여러 대의 물리적 머신으로 확장하는 데 사용된다.[21][22] 부하 분산은 네트워크 트래픽을 여러 서버에 효율적으로 분산시키는 것을 의미한다. 로드 밸런서는 클라이언트와 서버 사이에 위치하여 요청을 처리 가능한 서버에 분산시킨다.

과거에는 메인프레임이라는 대형 컴퓨터에 연결된 단말기를 이용자가 조작하는 형태가 중심이었다. 당시 단말기는 처리 능력이 매우 낮았기 때문에 모든 계산은 메인프레임에서 집중적으로 처리되었다. 이후, UNIX 워크스테이션과 같이 성능이 높은 컴퓨터를 다수 배치하는 것이 가능해지면서, 특정 역할을 담당하는 컴퓨터(서버)와 이용자가 조작하는 컴퓨터(클라이언트)로 역할을 나누어 네트워크로 연결하는 클라이언트-서버 모델이 일반화되었다. 이 모델에서는 클라이언트가 서버에 요청을 보내고, 서버가 응답을 반환하는 방식으로 처리가 이루어진다.

클라이언트-서버와 마스터-슬레이브는 모두 분산 피어 투 피어 시스템의 하위 범주로 간주된다.[23] 서버와 클라이언트의 통신은 UML시퀀스 다이어그램을 사용하여 표현할 수 있다.

7. 1. [[Peer to Peer|피어 투 피어 (P2P)]] 모델

분산 컴퓨팅 애플리케이션은 클라이언트-서버 모델 외에도 P2P (피어 투 피어) 애플리케이션 아키텍처를 사용한다.

피어 투 피어 네트워크에서 둘 이상의 컴퓨터(''피어'')는 리소스를 풀링하고 분산 시스템에서 통신한다. 피어는 비계층적 네트워크에서 동등하거나 동등한 노드이다. 클라이언트-서버 또는 클라이언트-큐-클라이언트 네트워크의 클라이언트와 달리, 피어는 서로 직접 통신한다. 피어 투 피어 네트워킹에서 피어 투 피어 통신 프로토콜의 알고리즘은 부하의 균형을 맞추며, 자원이 많지 않은 피어조차도 부하를 공유하는 데 도움이 될 수 있다. 노드를 사용할 수 없게 되더라도 다른 피어가 제공하는 한 공유 리소스는 계속 사용 가능하다. 이상적으로는 피어가 고가용성을 달성할 필요가 없는데, 다른 중복 피어가 리소스 다운타임을 보충하기 때문이다. 피어의 가용성과 부하 용량이 변경됨에 따라 프로토콜은 요청을 다시 라우팅한다.

클라이언트-서버 모델 이외의 네트워크 아키텍처로는 피어 투 피어 모델도 널리 이용되고 있다. 이는 클라이언트나 서버와 같은 역할을 고정하지 않고, 네트워크에 참여하는 컴퓨터(노드)가 경우에 따라 양쪽 모두로 작동하는 것이다.

7. 2. [[집중 컴퓨팅]]

메인프레임미니컴퓨터와 같은 집중 서버는 소수의 컴퓨터에 많은 리소스를 할당하는 집중 컴퓨팅 방식을 사용한다.[16] 클라이언트 호스트에서 중앙 컴퓨터로 더 많은 계산이 오프로드될수록 클라이언트 호스트는 더 간단해질 수 있다.[16] 예를 들어, 디스크 없는 노드는 운영 체제조차 네트워크에서 로드하며, 컴퓨터 터미널은 운영 체제가 전혀 없이 서버에 대한 입출력 인터페이스 역할만 수행한다. 이와 반대로, 리치 클라이언트인 개인용 컴퓨터는 많은 리소스를 가지며 필수 기능에 서버에 의존하지 않는다.

1980년대부터 1990년대 후반까지 마이크로컴퓨터의 가격 하락과 성능 향상으로 많은 조직이 메인프레임미니컴퓨터와 같은 집중 서버에서 리치 클라이언트로 계산을 전환했다.[17] 2000년대에는 웹 애플리케이션이 성숙해지고, 더 저렴한 대용량 저장 장치와 서비스 지향 아키텍처의 출현으로 2010년대의 클라우드 컴퓨팅 트렌드가 나타났다.[20]

8. 클라이언트-서버 모델과 한국

원문 소스가 제공되지 않아 내용을 수정하거나 확인할 수 없습니다. 제공된 정보가 없으므로 빈 문자열을 반환합니다.

참조

[1] 웹사이트 Distributed Application Architecture http://java.sun.com/[...] Sun Microsystem 2009-06-16
[2] 문서 X Window System
[3] 간행물 Web service conversation modeling: A cornerstone for e-business automation
[4] 간행물 A survey on web services composition http://www.infosys.t[...]
[5] 웹사이트 Introduction to the server side - Learn web development {{!}} MDN https://developer.mo[...] 2023-11-05
[6] 웹사이트 Server-side website programming - Learn web development {{!}} MDN https://developer.mo[...] 2023-06-30
[7] 서적 Computer Security Basics https://books.google[...] O'Reilly Media 2006
[8] 웹사이트 Week 4: Is There a Difference between Client Side and Server Side? https://n3tweb.wordp[...] 2015-10-15
[9] 웹사이트 Decoding the Hack https://www.alpinese[...] 2016-04-23
[10] 웹사이트 What are the differences between server-side and client-side programming? http://softwareengin[...]
[11] IETF DEL Internet Engineering Task Force 1969-06
[12] IETF Network Timetable Internet Engineering Task Force 1969-03
[13] 웹사이트 Separating Data from Function in a Distributed File System http://ip.com/IPCOM/[...] Xerox PARC
[14] 문서 server
[15] 웹사이트 Separating data from function in a distributed file system https://getinfo.de/a[...] German National Library of Science and Technology 2013-11-29
[16] 간행물 A Comparison of Thin-Client Computing Architectures https://academiccomm[...] 2000
[17] 간행물 Proceedings of the 11th annual ACM SIGUCCS conference on User services - SIGUCCS '83
[18] 간행물 Quantifying Interactive User Experience on Thin Clients https://www.cs.cmu.e[...] IEEE Computer Society 2006-03
[19] 웹사이트 Is the Cloud Really Just the Return of Mainframe Computing? http://sqlmag.com/cl[...] Penton Media 2011-03-22
[20] 간행물 The Rise of Web Service Ecosystems
[21] 간행물 Dynamic load balancing on Web-server systems Institute of Electrical and Electronics Engineers (IEEE)
[22] 웹사이트 What Is Load Balancing? How Load Balancers Work https://www.nginx.co[...] 2014-06-01
[23] 서적 Software Architecture: A Case Based Approach Pearson Education India 2009
[24] 웹사이트 クライアントサーバシステム(クラサバ)とは - IT用語辞典 e-Words https://e-words.jp/w[...]
[25] 웹인용 Distributed Application Architecture http://java.sun.com/[...] Sun Microsystem 2009-06-16
[26] 서적



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com